湘潭大學(xué) 廖少華 黃嵩人
本文提出了一種基于IEEE1149.1標(biāo)準(zhǔn)的JTAG控制器模塊的驗(yàn)證平臺,該平臺使用UVM(Universal Verification Methodology)驗(yàn)證方法學(xué)。設(shè)計(jì)了受約束的隨機(jī)激勵和定向激勵使得驗(yàn)證更加完備。驗(yàn)證結(jié)果表明,已覆蓋所有測試點(diǎn),達(dá)到驗(yàn)證目的。
隨著技術(shù)的發(fā)展,小小的芯片容納了大量的門電路,同時驗(yàn)證的要求也越來越高,UVM驗(yàn)證方法學(xué)便是在這樣的背景下,成為了現(xiàn)今主流的驗(yàn)證方法學(xué)。為了提高內(nèi)部電路測試的效率,1990年電氣和電子工程師協(xié)會(Institute of Electrical and Electronics Engineers,IEEE)制定了IEEE1149.1標(biāo)準(zhǔn),得到了廣泛的應(yīng)用。本文將采用UVM驗(yàn)證方法學(xué)對JTAG控制器模塊進(jìn)行完備的驗(yàn)證。
UVM即通用驗(yàn)證方法學(xué)。它包含了隨機(jī)測試激勵的生成、受約束的隨機(jī)測試的構(gòu)建、擁有面向?qū)ο蟮恼Z言特性、提供了與其他語言編寫程序的接口。驗(yàn)證工程師可以靈活地利用它提供的各種機(jī)制,來提高自己驗(yàn)證工作的效率。
典型的UVM驗(yàn)證平臺框架圖如圖1所示。
圖1 典型的UVM驗(yàn)證平臺框架圖
驗(yàn)證平臺的組件介紹如下:
driver:driver作為一個驅(qū)動器,用于從sequencer中獲取transaction,進(jìn)而通過接口將transaction轉(zhuǎn)化為對DUT的時序激勵。
monitor:monitor作為一個收集器,與driver的作用相反,通過接口將DUT的響應(yīng)收集起來,送給下一模塊,完成數(shù)據(jù)的采集。
sequencer:sequencer與sequence協(xié)同工作,sequence需要掛載在sequencer上才能正常工作。sequencer產(chǎn)生transaction,而driver從sequence中獲取產(chǎn)生的transaction。
agent:將driver、monitor、sequencer打包,作為一個標(biāo)準(zhǔn)的驗(yàn)證環(huán)境單位。每一個agent代表的都是一種數(shù)據(jù)協(xié)議,包含了時序關(guān)系。
reference model:reference model用于完成與DUT一樣的功能,是待測設(shè)計(jì)的理想化輸出,它將接受與DUT一樣的激勵,其結(jié)果將被傳輸?shù)絪coreboard進(jìn)行比較。
scoreboard:scoreboard是驗(yàn)證平臺的記分板,其中進(jìn)行待測設(shè)計(jì)的響應(yīng)與reference model響應(yīng)的比較,目的是為了對比標(biāo)準(zhǔn)輸出與實(shí)際輸出是否一致。
env:env是一個結(jié)構(gòu)化的模塊,為了考慮環(huán)境復(fù)用而存在的。其中可能包含多個agent與component,可以被更高層的env所容納,是結(jié)構(gòu)化與可復(fù)用性的一大體現(xiàn)。
test:test是驗(yàn)證環(huán)境建立的唯一入口,通過他可以運(yùn)行UVM的phase機(jī)制,除此之外,uvm_report的參數(shù)設(shè)置也在此模塊內(nèi)。
JTAG控制器可以分為三個部分,分別是:測試存取通道TAP(test access port)、TAP控制器、一組邊界掃描寄存器、指令寄存器和數(shù)據(jù)寄存器。如圖2所示。
圖2 JTAG控制器結(jié)構(gòu)框圖
測試存取通道TAP是由4個或5個(1個可選的復(fù)位信號)端口來進(jìn)行信號的輸入輸出。他們分別為:TCLK、TMS、TDI、TDO、TRST。其中TRST(測試復(fù)位)是一個可選引腳,使用他的話可以將測試硬件復(fù)位至非侵入模式。
JTAG控制器模塊中,TAP控制器實(shí)現(xiàn)了不同狀態(tài)的控制與數(shù)據(jù)、指令的讀取輸出。TAP控制器是一個具有16個狀態(tài)的同步狀態(tài)機(jī),使用TCLK為時鐘輸入,TMS為控制輸入,通過發(fā)出控制信號來操作指令寄存器和各種數(shù)據(jù)寄存器。
在IEEE1149.1標(biāo)準(zhǔn)中,指令可以分為公共指令與專用指令兩種。其中包含了5個強(qiáng)制指令與2個可選指令。它們分別是旁路指令、采樣指令、預(yù)加載指令、外測試指令、內(nèi)測試指令、高阻指令、器件標(biāo)識指令。
以旁路指令為例,為了實(shí)現(xiàn)旁路功能,首先tap控制器在TMS的控制下進(jìn)入CAPTURE_IR狀態(tài),將旁路指令裝載,然后進(jìn)入SHIFT_DR狀態(tài),此時旁路指令代碼通過TDI端口依次進(jìn)入并被移位更新在指令寄存器中。隨著狀態(tài)機(jī)進(jìn)入SHIFT_DR環(huán)節(jié),在此狀態(tài)下,TDO的輸出與TDI的輸入一致,內(nèi)核邏輯被旁路。
設(shè)計(jì)包含top層、base_test層與agent層三大層次。
Top是整個驗(yàn)證平臺的頂層,其中例化了DUT、interface與base_test,并且將DUT通過端口與interface進(jìn)行連接。在top層中通過config_db語句來在不同組件之間傳遞參數(shù)。
Base_test內(nèi)包含了sequence_lib與env,其中,sequence_lib中例化了不同的測試用例,各測試用例是基于base_test進(jìn)行擴(kuò)展,從而實(shí)現(xiàn)不同功能點(diǎn)的覆蓋。而env中則包含了覆蓋率收集模塊coverage group、參考模型reference model、對比模塊scoreboard以及輸入agent、輸出agent。
Agent模塊中,一般封裝了sequencer、driver和monitor。但輸出agent中不需要driver與sequencer,僅僅例化了一個monitor用于監(jiān)控輸出。
運(yùn)行流程:
進(jìn)行仿真時,sequencer將sequence產(chǎn)生的transaction級數(shù)據(jù)包發(fā)送給driver,driver則根據(jù)時序的控制,將數(shù)據(jù)包通過interface傳輸給dut,同時monitor會將激勵數(shù)據(jù)復(fù)制一份傳輸給reference model,out_agent的minitor則會監(jiān)控dut的響應(yīng),將響應(yīng)結(jié)果傳輸給scoreboard,scoreboard內(nèi)會將reference model的輸出與minitor監(jiān)測到的響應(yīng)進(jìn)行比較,最后通過UVM_INFO機(jī)制打印出對比信息,得出仿真結(jié)果。同時coverage group模塊會對覆蓋率進(jìn)行收集,得出覆蓋率報告。以上就是整個UVM驗(yàn)證中的數(shù)據(jù)流動過程。
本次測試使用Mentor的questasim軟件進(jìn)行仿真驗(yàn)證。通過受約束的隨機(jī)激勵,結(jié)合時序波形信息可以看出,TAP控制器遍歷了所有的狀態(tài),并且TDO的輸出也與相應(yīng)指令對應(yīng),輸出結(jié)果符合預(yù)期。時序仿真波形圖如圖3所示。
圖3 時序仿真波形圖
UVM作為時下最流行的驗(yàn)證方法學(xué),雖然前期時間搭建平臺,但是能為后期的驗(yàn)證提高極大的效率,縮短了驗(yàn)證時間。本文利用了UVM驗(yàn)證方法學(xué),對JTAG控制器模塊進(jìn)行了充分的驗(yàn)證,為項(xiàng)目研發(fā)進(jìn)度節(jié)約了大量的時間,并且該驗(yàn)證平臺架構(gòu)還可以移植到其他項(xiàng)目之中,在實(shí)際項(xiàng)目開發(fā)中具有很高的應(yīng)用價值。