《電子技術(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ǔ)言來(lái)構(gòu)建系統(tǒng)級(jí)的測(cè)試平臺(tái),,采用多種隨機(jī)化機(jī)制來(lái)生成測(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)越來(lái)越復(fù)雜,,致使在RTL級(jí)進(jìn)行SoC驗(yàn)證的時(shí)間開(kāi)銷(xiāo)越來(lái)越大[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)的開(kāi)發(fā)周期[4-5],。因此,使SoC的驗(yàn)證工作從更高抽象級(jí)的系統(tǒng)級(jí)開(kāi)始進(jìn)行,,從而盡早地發(fā)現(xiàn)功能性錯(cuò)誤,,縮短SoC系統(tǒng)的開(kāi)發(fā)周期是十分必要的。
  在SoC的驗(yàn)證工作中,,最重要的問(wè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)鍵的問(wèn)題。目前,,采用隨機(jī)測(cè)試向量的驗(yàn)證方法被認(rèn)為是解決這一問(wè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類(lèi)庫(kù)的公開(kāi)源代碼的C++類(lèi)庫(kù),,SCV驗(yàn)證庫(kù)可以提供直接隨機(jī)測(cè)試,、帶權(quán)重的隨機(jī)測(cè)試和帶約束的隨機(jī)測(cè)試三種向量的生成方法。因此,,SCV標(biāo)準(zhǔn)允許用戶(hù)在較高的抽象級(jí)上構(gòu)建測(cè)試平臺(tái)并允許用戶(hù)隨機(jī)地寫(xiě)入測(cè)試程序,,具有靈活性高、測(cè)試平臺(tái)可復(fù)用,、驗(yàn)證周期短等特點(diǎn),。
  本文將基于SystemC和SCV驗(yàn)證庫(kù)來(lái)創(chuàng)建系統(tǒng)級(jí)的測(cè)試平臺(tái),通過(guò)對(duì)一個(gè)具有4×4包交換功能的系統(tǒng)級(jí)模型的驗(yàn)證,來(lái)研究基于隨機(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ī)范說(shuō)明的要求。在進(jìn)行功能驗(yàn)證前,,首先應(yīng)根據(jù)功能規(guī)范說(shuō)明建立測(cè)試平臺(tái),,其核心內(nèi)容是設(shè)計(jì)測(cè)試向量。測(cè)試平臺(tái)不僅能夠?qū)y(cè)試向量輸入到被驗(yàn)證對(duì)象上,,而且能夠獲取被驗(yàn)證對(duì)象產(chǎn)生的結(jié)果,,該結(jié)果可以用來(lái)判定被驗(yàn)證對(duì)象功能的正確性,如圖1所示,。

?


  為了驗(yàn)證隨機(jī)測(cè)試在SoC系統(tǒng)級(jí)進(jìn)行功能驗(yàn)證的有效性,,在系統(tǒng)級(jí)構(gòu)建以AMBA總線(xiàn)為核心、以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ā)送模塊用來(lái)隨機(jī)地生成數(shù)據(jù)包并將數(shù)據(jù)包送入包交換模塊,;接收模塊用來(lái)從包交換芯片中讀取數(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為滿(mǎn)時(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工作站上,,通過(guò)集成SCV驗(yàn)證庫(kù)以及相應(yīng)的編譯,、連接和調(diào)試工具構(gòu)建而成。4×4包交換芯片系統(tǒng)級(jí)功能模型的驗(yàn)證工作在各階段的時(shí)間開(kāi)銷(xiāo)分別為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ù)類(lèi)型,,它的有效數(shù)值范圍是[-128,,127];包的目的端口號(hào)被定義為dest[0]~dest[3]的布爾變量類(lèi)型,,它的有效數(shù)值范圍是[0,,15];而包的源端口號(hào)則在實(shí)例化的過(guò)程中被分別對(duì)應(yīng)標(biāo)記為0~3,。因此,,采用SCV生成直接隨機(jī)測(cè)試向量用數(shù)據(jù)包的過(guò)程主要是隨機(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無(wú)交換數(shù)據(jù)輸入,輸出端也無(wú)交換數(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í)開(kāi)始進(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ò)誤,。此外,,還說(shuō)明:
  (1)三種隨機(jī)驗(yàn)證方法對(duì)功能規(guī)范的依賴(lài)程度、時(shí)間開(kāi)銷(xiāo)和驗(yàn)證效率不盡相同,。直接隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴(lài)程度最低,,但時(shí)間開(kāi)銷(xiāo)最高、驗(yàn)證效率最低,;帶權(quán)重的隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴(lài)程度較高,,但時(shí)間開(kāi)銷(xiāo)最低、驗(yàn)證效率較高,;帶約束的隨機(jī)測(cè)試向量生成方法對(duì)功能規(guī)范的依賴(lài)程度最高,,但時(shí)間開(kāi)銷(xiāo)較高、驗(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)站贊同其觀(guān)點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話(huà):010-82306118,;郵箱:[email protected],。