湘潭大學 廖少華 黃嵩人
本文提出了一種基于IEEE1149.1標準的JTAG控制器模塊的驗證平臺,該平臺使用UVM(Universal Verification Methodology)驗證方法學。設計了受約束的隨機激勵和定向激勵使得驗證更加完備。驗證結(jié)果表明,已覆蓋所有測試點,達到驗證目的。
隨著技術的發(fā)展,小小的芯片容納了大量的門電路,同時驗證的要求也越來越高,UVM驗證方法學便是在這樣的背景下,成為了現(xiàn)今主流的驗證方法學。為了提高內(nèi)部電路測試的效率,1990年電氣和電子工程師協(xié)會(Institute of Electrical and Electronics Engineers,IEEE)制定了IEEE1149.1標準,得到了廣泛的應用。本文將采用UVM驗證方法學對JTAG控制器模塊進行完備的驗證。
UVM即通用驗證方法學。它包含了隨機測試激勵的生成、受約束的隨機測試的構建、擁有面向?qū)ο蟮恼Z言特性、提供了與其他語言編寫程序的接口。驗證工程師可以靈活地利用它提供的各種機制,來提高自己驗證工作的效率。
典型的UVM驗證平臺框架圖如圖1所示。

圖1 典型的UVM驗證平臺框架圖
驗證平臺的組件介紹如下:
driver:driver作為一個驅(qū)動器,用于從sequencer中獲取transaction,進而通過接口將transaction轉(zhuǎn)化為對DUT的時序激勵。
monitor:monitor作為一個收集器,與driver的作用相反,通過接口將DUT的響應收集起來,送給下一模塊,完成數(shù)據(jù)的采集。
sequencer:sequencer與sequence協(xié)同工作,sequence需要掛載在sequencer上才能正常工作。sequencer產(chǎn)生transaction,而driver從sequence中獲取產(chǎn)生的transaction。
agent:將driver、monitor、sequencer打包,作為一個標準的驗證環(huán)境單位。每一個agent代表的都是一種數(shù)據(jù)協(xié)議,包含了時序關系。
reference model:reference model用于完成與DUT一樣的功能,是待測設計的理想化輸出,它將接受與DUT一樣的激勵,其結(jié)果將被傳輸?shù)絪coreboard進行比較。
scoreboard:scoreboard是驗證平臺的記分板,其中進行待測設計的響應與reference model響應的比較,目的是為了對比標準輸出與實際輸出是否一致。
env:env是一個結(jié)構化的模塊,為了考慮環(huán)境復用而存在的。其中可能包含多個agent與component,可以被更高層的env所容納,是結(jié)構化與可復用性的一大體現(xiàn)。
test:test是驗證環(huán)境建立的唯一入口,通過他可以運行UVM的phase機制,除此之外,uvm_report的參數(shù)設置也在此模塊內(nèi)。
JTAG控制器可以分為三個部分,分別是:測試存取通道TAP(test access port)、TAP控制器、一組邊界掃描寄存器、指令寄存器和數(shù)據(jù)寄存器。如圖2所示。

圖2 JTAG控制器結(jié)構框圖
測試存取通道TAP是由4個或5個(1個可選的復位信號)端口來進行信號的輸入輸出。他們分別為:TCLK、TMS、TDI、TDO、TRST。其中TRST(測試復位)是一個可選引腳,使用他的話可以將測試硬件復位至非侵入模式。
JTAG控制器模塊中,TAP控制器實現(xiàn)了不同狀態(tài)的控制與數(shù)據(jù)、指令的讀取輸出。TAP控制器是一個具有16個狀態(tài)的同步狀態(tài)機,使用TCLK為時鐘輸入,TMS為控制輸入,通過發(fā)出控制信號來操作指令寄存器和各種數(shù)據(jù)寄存器。
在IEEE1149.1標準中,指令可以分為公共指令與專用指令兩種。其中包含了5個強制指令與2個可選指令。它們分別是旁路指令、采樣指令、預加載指令、外測試指令、內(nèi)測試指令、高阻指令、器件標識指令。
以旁路指令為例,為了實現(xiàn)旁路功能,首先tap控制器在TMS的控制下進入CAPTURE_IR狀態(tài),將旁路指令裝載,然后進入SHIFT_DR狀態(tài),此時旁路指令代碼通過TDI端口依次進入并被移位更新在指令寄存器中。隨著狀態(tài)機進入SHIFT_DR環(huán)節(jié),在此狀態(tài)下,TDO的輸出與TDI的輸入一致,內(nèi)核邏輯被旁路。
設計包含top層、base_test層與agent層三大層次。
Top是整個驗證平臺的頂層,其中例化了DUT、interface與base_test,并且將DUT通過端口與interface進行連接。在top層中通過config_db語句來在不同組件之間傳遞參數(shù)。
Base_test內(nèi)包含了sequence_lib與env,其中,sequence_lib中例化了不同的測試用例,各測試用例是基于base_test進行擴展,從而實現(xiàn)不同功能點的覆蓋。而env中則包含了覆蓋率收集模塊coverage group、參考模型reference model、對比模塊scoreboard以及輸入agent、輸出agent。
Agent模塊中,一般封裝了sequencer、driver和monitor。但輸出agent中不需要driver與sequencer,僅僅例化了一個monitor用于監(jiān)控輸出。
運行流程:
進行仿真時,sequencer將sequence產(chǎn)生的transaction級數(shù)據(jù)包發(fā)送給driver,driver則根據(jù)時序的控制,將數(shù)據(jù)包通過interface傳輸給dut,同時monitor會將激勵數(shù)據(jù)復制一份傳輸給reference model,out_agent的minitor則會監(jiān)控dut的響應,將響應結(jié)果傳輸給scoreboard,scoreboard內(nèi)會將reference model的輸出與minitor監(jiān)測到的響應進行比較,最后通過UVM_INFO機制打印出對比信息,得出仿真結(jié)果。同時coverage group模塊會對覆蓋率進行收集,得出覆蓋率報告。以上就是整個UVM驗證中的數(shù)據(jù)流動過程。
本次測試使用Mentor的questasim軟件進行仿真驗證。通過受約束的隨機激勵,結(jié)合時序波形信息可以看出,TAP控制器遍歷了所有的狀態(tài),并且TDO的輸出也與相應指令對應,輸出結(jié)果符合預期。時序仿真波形圖如圖3所示。

圖3 時序仿真波形圖
UVM作為時下最流行的驗證方法學,雖然前期時間搭建平臺,但是能為后期的驗證提高極大的效率,縮短了驗證時間。本文利用了UVM驗證方法學,對JTAG控制器模塊進行了充分的驗證,為項目研發(fā)進度節(jié)約了大量的時間,并且該驗證平臺架構還可以移植到其他項目之中,在實際項目開發(fā)中具有很高的應用價值。