《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于隨機(jī)測(cè)試的SoC系統(tǒng)級(jí)功能驗(yàn)證方法的研究

基于隨機(jī)測(cè)試的SoC系統(tǒng)級(jí)功能驗(yàn)證方法的研究

2009-05-15
作者:楊 珺1, 曹 陽(yáng)1,2,

  摘? 要: 為了克服RTL級(jí)驗(yàn)證方法的局限性,提出了采用隨機(jī)測(cè)試向量在SoC的系統(tǒng)級(jí)進(jìn)行功能驗(yàn)證的方法。該方法采用高級(jí)建模語(yǔ)言來構(gòu)建系統(tǒng)級(jí)的測(cè)試平臺(tái),采用多種隨機(jī)化機(jī)制來生成測(cè)試向量。測(cè)試結(jié)果表明,該方法不僅能夠獲得較好的功能覆蓋率,而且能夠盡可能早地發(fā)現(xiàn)SoC設(shè)計(jì)中的功能性錯(cuò)誤。
  關(guān)鍵詞: SoC; 系統(tǒng)級(jí)功能驗(yàn)證; 隨機(jī)測(cè)試

?

  目前,基于RTL級(jí)(Register Transfer Level)的SoC(System-on-Chip)驗(yàn)證技術(shù)存在著許多局限性。這是因?yàn)椋?1)SoC硬件部分的結(jié)構(gòu)越來越復(fù)雜,致使在RTL級(jí)進(jìn)行SoC驗(yàn)證的時(shí)間開銷越來越大[1-2]; (2)在RTL級(jí),SoC的硬件和軟件部分需要分別采用硬件描述語(yǔ)言和高級(jí)語(yǔ)言進(jìn)行描述,這不僅增加了軟、硬件設(shè)計(jì)和驗(yàn)證人員間在交流上的困難,而且增加了系統(tǒng)設(shè)計(jì)人員對(duì)軟、硬件劃分方案進(jìn)行評(píng)估的困難[3];(3)設(shè)計(jì)完成SoC硬件系統(tǒng)的RTL級(jí)模型后,才能進(jìn)行SoC軟、硬件系統(tǒng)的協(xié)同仿真和驗(yàn)證,增加了SoC系統(tǒng)產(chǎn)生功能性錯(cuò)誤的可能性,延長(zhǎng)了系統(tǒng)的開發(fā)周期[4-5]。因此,使SoC的驗(yàn)證工作從更高抽象級(jí)的系統(tǒng)級(jí)開始進(jìn)行,從而盡早地發(fā)現(xiàn)功能性錯(cuò)誤,縮短SoC系統(tǒng)的開發(fā)周期是十分必要的。
  在SoC的驗(yàn)證工作中,最重要的問題是構(gòu)建測(cè)試平臺(tái)TB(Test Bench),而構(gòu)建測(cè)試平臺(tái)的核心則是設(shè)計(jì)測(cè)試向量TC(Test Case)。因此,較短的測(cè)試向量的生成時(shí)間以及較高的測(cè)試向量的功能覆蓋率就成為驗(yàn)證工作中最為關(guān)鍵的問題。目前,采用隨機(jī)測(cè)試向量的驗(yàn)證方法被認(rèn)為是解決這一問題最便捷和最有效的驗(yàn)證方法[2],該方法的特征就是隨機(jī)地從被驗(yàn)證對(duì)象DUV(Design Under Verification)測(cè)試激勵(lì)輸入域中任意地或適當(dāng)加以控制地選取測(cè)試向量。因此,如何隨機(jī)地生成測(cè)試向量是進(jìn)行隨機(jī)驗(yàn)證的關(guān)鍵。
  SCV(SystemC Verification Standard)是OSCI(Open SystemC Initiative)組織公布的系統(tǒng)級(jí)驗(yàn)證標(biāo)準(zhǔn),是一種基于SystemC類庫(kù)的公開源代碼的C++類庫(kù),SCV驗(yàn)證庫(kù)可以提供直接隨機(jī)測(cè)試、帶權(quán)重的隨機(jī)測(cè)試和帶約束的隨機(jī)測(cè)試三種向量的生成方法。因此,SCV標(biāo)準(zhǔn)允許用戶在較高的抽象級(jí)上構(gòu)建測(cè)試平臺(tái)并允許用戶隨機(jī)地寫入測(cè)試程序,具有靈活性高、測(cè)試平臺(tái)可復(fù)用、驗(yàn)證周期短等特點(diǎn)。
  本文將基于SystemC和SCV驗(yàn)證庫(kù)來創(chuàng)建系統(tǒng)級(jí)的測(cè)試平臺(tái),通過對(duì)一個(gè)具有4×4包交換功能的系統(tǒng)級(jí)模型的驗(yàn)證,來研究基于隨機(jī)向量的SoC系統(tǒng)級(jí)的功能驗(yàn)證方法。
1 系統(tǒng)級(jí)功能測(cè)試平臺(tái)
  SoC系統(tǒng)級(jí)的功能驗(yàn)證是針對(duì)SoC系統(tǒng)級(jí)的功能模型進(jìn)行的驗(yàn)證,其目的是驗(yàn)證SoC系統(tǒng)級(jí)功能模型是否符合功能規(guī)范說明的要求。在進(jìn)行功能驗(yàn)證前,首先應(yīng)根據(jù)功能規(guī)范說明建立測(cè)試平臺(tái),其核心內(nèi)容是設(shè)計(jì)測(cè)試向量。測(cè)試平臺(tái)不僅能夠?qū)y(cè)試向量輸入到被驗(yàn)證對(duì)象上,而且能夠獲取被驗(yàn)證對(duì)象產(chǎn)生的結(jié)果,該結(jié)果可以用來判定被驗(yàn)證對(duì)象功能的正確性,如圖1所示。

?


  為了驗(yàn)證隨機(jī)測(cè)試在SoC系統(tǒng)級(jí)進(jìn)行功能驗(yàn)證的有效性,在系統(tǒng)級(jí)構(gòu)建以AMBA總線為核心、以CPU為主設(shè)備、以存儲(chǔ)器和4×4包交換模塊為從設(shè)備的SoC功能模型,并針對(duì)4×4包交換模塊的功能進(jìn)行測(cè)試。
  系統(tǒng)級(jí)測(cè)試平臺(tái)的核心由4個(gè)發(fā)送模塊(Sender0~Sender3)、4個(gè)接收模塊(Receiver0~Receiver3)和4×4包交換模塊組成,如圖2所示。其中發(fā)送模塊用來隨機(jī)地生成數(shù)據(jù)包并將數(shù)據(jù)包送入包交換模塊;接收模塊用來從包交換芯片中讀取數(shù)據(jù)包。

?


  4×4包交換模塊主要由4個(gè)帶FIFO的輸入/輸出端口(IN0~IN3,OUT0~OUT3)和4個(gè)移位寄存器(R0~R3)組成,待交換的數(shù)據(jù)包則由16位組成,分別為4位目的端口號(hào)、4位源端口號(hào)以及8位交換數(shù)據(jù)。該包交換芯片的主要功能規(guī)范如下:
  (1)每個(gè)端口均可以正確地發(fā)送或者接收數(shù)據(jù)包。
  (2)每個(gè)輸入端口均可以正確地將數(shù)據(jù)包發(fā)送到多個(gè)不同的端口。
  (3)移位寄存器能夠從對(duì)應(yīng)的FIFO中正確地讀取數(shù)據(jù)包,并按R3→R2→R1→R0→R3的順序進(jìn)行移位。
  (4)每個(gè)輸出端口均可以正確地按設(shè)定的比例輸出數(shù)據(jù)包。
  (5)輸入端口FIFO為空時(shí),數(shù)據(jù)包可以送入該FIFO; 輸入端口FIFO為滿時(shí),數(shù)據(jù)包不能送入該FIFO。
2 測(cè)試向量和驗(yàn)證結(jié)果
  通常,基于SCV隨機(jī)測(cè)試向量的驗(yàn)證工作分為隨機(jī)驗(yàn)證環(huán)境配置、基于直接隨機(jī)測(cè)試向量的驗(yàn)證、基于帶權(quán)重的隨機(jī)測(cè)試向量的驗(yàn)證以及基于帶約束的隨機(jī)測(cè)試向量的驗(yàn)證四個(gè)階段。本文的驗(yàn)證環(huán)境建立在Sun Blade 2000工作站上,通過集成SCV驗(yàn)證庫(kù)以及相應(yīng)的編譯、連接和調(diào)試工具構(gòu)建而成。4×4包交換芯片系統(tǒng)級(jí)功能模型的驗(yàn)證工作在各階段的時(shí)間開銷分別為30h、15h、35h和45h。
2.1 基于直接隨機(jī)測(cè)試向量的驗(yàn)證
  針對(duì)規(guī)范1~規(guī)范3的驗(yàn)證,采用直接隨機(jī)測(cè)試向量的驗(yàn)證方法。在描述中,包的數(shù)據(jù)部分被定義為sc_int<8>的整數(shù)類型,它的有效數(shù)值范圍是[-128,127];包的目的端口號(hào)被定義為dest[0]~dest[3]的布爾變量類型,它的有效數(shù)值范圍是[0,15];而包的源端口號(hào)則在實(shí)例化的過程中被分別對(duì)應(yīng)標(biāo)記為0~3。因此,采用SCV生成直接隨機(jī)測(cè)試向量用數(shù)據(jù)包的過程主要是隨機(jī)化包的目的端口號(hào)和包的交換數(shù)據(jù),如下所示:
  //生成包的目的端口號(hào)
  sc_uint<4> dest;
  scv_smart_ptrd;
  d->keep_only(1,15);
  d->next();
  dest=(sc_uint<4>)*d;
  pkt_data.dest0=dest[0];
  pkt_data.dest1=dest[1];
  pkt_data.dest2=dest[2];
  pkt_data.dest3=dest[3];
  //生成包的交換數(shù)據(jù)
  scv_smart_ptrp;
  p->keep_only(-128,127);
  p->next();
  pkt_data.data=(sc_int<8>)*p;
  從生成的10 000個(gè)隨機(jī)數(shù)據(jù)包中任意截取10個(gè),得到如表1所示的結(jié)果。由表1可以看出:


  (1)包的目的端口號(hào)是隨機(jī)的數(shù)字0~3,包的數(shù)據(jù)是隨機(jī)的數(shù)據(jù)-128~+127。
  (2)輸入模塊可以正確地將發(fā)送包送入各個(gè)輸入端口,
  輸出模塊可以正確地從輸出端口讀出輸出包。
  (3)發(fā)送包目的端口號(hào)的個(gè)數(shù)等于輸出包的總數(shù)。
  以上結(jié)果表明,4×4包交換芯片系統(tǒng)級(jí)模型的每個(gè)端口均可以正確地發(fā)送或者接收數(shù)據(jù)包,每個(gè)輸入端口均可以正確地將數(shù)據(jù)包傳送到多個(gè)不同的端口。
  在某時(shí)間段內(nèi),采集R0~R3移位前后的數(shù)值,得到如表2所示的結(jié)果。?由表2可以看出:


  (1)若FIFO中有新的數(shù)據(jù)包,則各個(gè)寄存器能夠從對(duì)應(yīng)的FIFO中正確地讀取這些新的數(shù)據(jù)包;否則,各個(gè)寄存器將保持當(dāng)前值。
  (2)各個(gè)寄存器接收新的數(shù)據(jù)后就進(jìn)行移位,移位的順序是R3→R2→R1→R0→R3。
2.2 基于帶權(quán)重的隨機(jī)測(cè)試向量的驗(yàn)證
  針對(duì)規(guī)范4的驗(yàn)證,采用帶權(quán)重的隨機(jī)測(cè)試向量的驗(yàn)證方法。在測(cè)試中,端口0作為測(cè)試向量的輸入端口,端口0、1、2、3作為測(cè)試向量的輸出端口。其中,端口0、1、2、3的包輸出比例分別為70%、10%、10%和10%。因此,采用SCV生成Sender0帶權(quán)重的隨機(jī)測(cè)試向量用數(shù)據(jù)包描述為:
  if(pkt_data.id==0)
  {scv_bagdist;???? //定義含權(quán)重分布信息的包用于隨機(jī)化

???   dist.add(1,70); ?????? //定義OUT0的輸出比例
 ?   dist.add(2,10); ?????? //定義OUT1的輸出比例
? ?  dist.add(4,10); ?????? //定義OUT2的輸出比例
    dist.add(8,10); ?????? //定義OUT3的輸出比例
    scv_smart_ptrd; ? //對(duì)帶權(quán)重的包隨機(jī)化
    d->set_mode(dist);
    d->next();
    dest=(sc_uint<4>)*d; ? //賦數(shù)據(jù)包目的端口號(hào)
    pkt_data.dest0=dest[0];
    pkt_data.dest1=dest[1];
    pkt_data.dest2=dest[2];
    pkt_data.dest3=dest[3];
???? }
  使Sender0生成10 000個(gè)隨機(jī)數(shù)據(jù)包,得到如表3所示的結(jié)果??梢钥闯觯好總€(gè)輸出端口輸出數(shù)據(jù)包數(shù)目的比例與設(shè)定比例基本一致。

?

2.3 基于帶約束的隨機(jī)測(cè)試向量的驗(yàn)證
  針對(duì)規(guī)范5的驗(yàn)證,采用帶約束的隨機(jī)測(cè)試向量的驗(yàn)證方法。在驗(yàn)證中,采用的驗(yàn)證策略為:當(dāng)FIFO1非空時(shí),Sender1發(fā)送非正整數(shù)的數(shù)據(jù)包;當(dāng)FIFO1為空時(shí),Sender1發(fā)送正整數(shù)的數(shù)據(jù)包。因此,采用SCV生成Sender1帶約束的隨機(jī)測(cè)試向量用數(shù)據(jù)包的約束定義為:
  class fifoconstraint: public scv_constraint_base{
  public:
???   scv_smart_ptr data;
???   scv_smart_ptr fifo.in1.status;
???   SCV_CONSTRAINT_CTOR (fifoconstraint){
???   SCV_CONSTRAINT(*data<=0&&!fifo.in1.
????????????????????????????? status);
??   SCV_CONSTRAINT(*data>0&& fifo.in1.status);}
???????  };
  在某時(shí)間段內(nèi),從生成的10 000個(gè)隨機(jī)數(shù)據(jù)包中,采集一部分FIFO1和各端口中的數(shù)值,得到如表4所示的結(jié)果。由表4可以看出,當(dāng)發(fā)送包的數(shù)據(jù)部分為非正整數(shù)時(shí),F(xiàn)IFO1無交換數(shù)據(jù)輸入,輸出端也無交換數(shù)據(jù)輸出;當(dāng)發(fā)送包的數(shù)據(jù)部分為正整數(shù)時(shí),F(xiàn)IFO1讀入交換數(shù)據(jù),相應(yīng)輸出端也輸出交換數(shù)據(jù)。即當(dāng)FIFO1非空時(shí),Sender1發(fā)送了非正整數(shù)的數(shù)據(jù)包,表示數(shù)據(jù)包不能送入FIFO1;當(dāng)FIFO1為空時(shí),Sender1發(fā)送了正整數(shù)的數(shù)據(jù)包,數(shù)據(jù)包可以送入FIFO1。

?


  從SoC的RTL級(jí)開始進(jìn)行的驗(yàn)證工作容易造成設(shè)計(jì)周期的長(zhǎng)跌宕,因此,在更高層次的系統(tǒng)級(jí)尋求高效的功能驗(yàn)證方法具有十分重要的現(xiàn)實(shí)意義。實(shí)驗(yàn)結(jié)果表明,本文提出的基于隨機(jī)向量的SoC系統(tǒng)級(jí)功能驗(yàn)證方法,不僅能夠獲得較好的功能覆蓋率,而且能夠盡早地發(fā)現(xiàn)SoC的功能性錯(cuò)誤。此外,還說明:
  (1)三種隨機(jī)驗(yàn)證方法對(duì)功能規(guī)范的依賴程度、時(shí)間開銷和驗(yàn)證效率不盡相同。直接隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴程度最低,但時(shí)間開銷最高、驗(yàn)證效率最低;帶權(quán)重的隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴程度較高,但時(shí)間開銷最低、驗(yàn)證效率較高;帶約束的隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴程度最高,但時(shí)間開銷較高、驗(yàn)證效率最高。在實(shí)際的驗(yàn)證工作中可以選擇其中一種或組合兩種以上的方法進(jìn)行驗(yàn)證。
  (2)直接隨機(jī)測(cè)試向量生成方法適用于做黑盒測(cè)試
  驗(yàn)證,適于對(duì)驗(yàn)證對(duì)象進(jìn)行定性分析;帶權(quán)重的隨機(jī)測(cè)試向量和帶約束的隨機(jī)測(cè)試向量方法適用于做白盒測(cè)試驗(yàn)證,適于對(duì)驗(yàn)證對(duì)象做定量分析。


參考文獻(xiàn)
[1] ?YU Jin Shan, LI Tun, TAN Qing Ping. Scheduling of?transactions under resource constraint based on extended?preemptive time petri nets for SoC system-level testcase generation[A]. The Second International Conference?on Systems ICONS 2007[C].Sainte-Luce,Martinique,2007,4:20-25
[2] ?BERGERON J. Writing testbenches:functional verification?of HDL models[M].Boston:Kluwer Academic Publishers,?2000.
[3]?BELTRAME G, SCIUTO D, SILVANO C, et al. Exploiting?TLM and object introspection for system-level simulation[A].?Proceedings of the Conference on Design, Automation and
?test in Europe[C]. Munich,Germany,2006:100-105.
[4] ?KLINGAUF W, GADKE H, GUINZEL R. TRAIN: A??virtual transaction layer architecture for TLM-based HW/SW codesign of synthesizable MPSoC[A]. Proceedings of?The Conference on Design,Automation and Test in Europe[C].Munich,Germany,2006:1318-1323.
[5] CHUNG Moo-Kyoung, NA Sang kwon, KYUNG Chong-Min. System-level performance analysis? of? embedded system ?using behavioral C/C++ model[A].IEEE VLSI-TSA International Symposium[C], 2005:188-191.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。