編寫(xiě)高效的測試設計(testbenches)
簡(jiǎn)介:
本文引用地址:http://dyxdggzs.com/article/84843.htm由于設計的規模越來(lái)越大和越來(lái)越復雜,數字設計的驗證已經(jīng)成為一個(gè)日益困難和繁瑣的事。面對挑戰,驗證工程師們依靠許多的驗證工具和方法。對于大的系統,如幾百萬(wàn)門(mén)的設計,工程師們一般使用一套可靠的驗證工具。當然,對于一些小的設計,設計工程師常常發(fā)現帶有測試的hdl仿真器就可以做得很好。
測試設計已經(jīng)成為一個(gè)驗證高級語(yǔ)言設計HLL (High-Level Language) 的標準方法。
典型的,測試設計完成以下任務(wù):
實(shí)現測試設計;
仿真通過(guò)使用模塊的測試向量來(lái)仿真測試設計;
輸出結果到終端或波形窗口以檢視;
可選擇的將實(shí)際結果和預期結果進(jìn)行比較。
一般測試設計使用工業(yè)標準的VHDL或verilog硬件描述語(yǔ)言來(lái)編寫(xiě)。測試設計調用功能設計,然后仿真。復雜的測試設計完成一些附加的功能----如它們包含邏輯來(lái)為設計決定適當的設計激勵或比較實(shí)際結果和預期結果。
后續的章節說(shuō)明了一個(gè)非常穩定的測試設計的結構,并且提供了一個(gè)自較驗測例子----它將自動(dòng)比較實(shí)際結果和測試設計的預期結果。
圖1說(shuō)明一個(gè)基于以上基本要求的標準的hdl驗證流程。由于測試設計使用VHDL或verilogHDL來(lái)描述,測試設計的驗證過(guò)程可以在不同的平臺或不同公司的軟件工具環(huán)境完成。另外,由于VHDL或verilogHDL是公開(kāi)的通用標準語(yǔ)言,使用VHDL或verilogHDL來(lái)描述驗證設計可以毫無(wú)困難的在將來(lái)重用。
圖1使用測試設計的HDL測試驗證流程
構建測試設計:
測試設計可以用VHDL或verilogHDL來(lái)描述.因為測試設計只用來(lái)進(jìn)行仿真,它們沒(méi)有那些適應綜合中僅應用的rtl語(yǔ)言子集的語(yǔ)法約束的限制.而是所有的行為結構都可以使用。從而測試設計可以編寫(xiě)的更為通用,使得它們可以更容易維護。
所有的測試設計包含了如表1的基本程序段塊。正如上面所提到的,測試設計一般包含更多的附加功能,如在終端上可視的結果和內建的錯誤檢測。
測試設計的基本程序段
下面的例子說(shuō)明經(jīng)常使用的測試設計的結構。
產(chǎn)生時(shí)鐘信號
使用系統時(shí)鐘來(lái)的時(shí)序邏輯設計必須產(chǎn)生時(shí)鐘。重復的時(shí)鐘信號可以很容易的在vhdl或verilog源碼中實(shí)現。以下是vhdl和verilog的時(shí)鐘發(fā)生示例。
VHDL:
-- Declare a clock period constant.
Constant ClockPeriod : TIME := 10 ns;
-- Clock Generation method 1:
Clock <= not Clock after ClockPeriod / 2;
-- Clock Generation method 2:
GENERATE CLOCK: process
begin
wait for (ClockPeriod / 2)
Clock <= ’1’;
wait for (ClockPeriod / 2)
Clock <= ’0’;
end process;
Verilog:
// Declare a clock period constant.
Parameter ClockPeriod = 10;
// Clock Generation method 1:
initial begin
forever Clock = #(ClockPeriod / 2) ~ Clock;
end
// Clock Generation method 2:
initial begin
always #(ClockPeriod / 2) Clock = ~Clock;
end
準備激勵信號
為了獲得測試設計的驗證結果,激勵必須在測試設計中提供。在測試設計中使用的并行激勵塊提供必要的激勵。兩個(gè)方法被考慮:絕對時(shí)間激勵和相對時(shí)間激勵。在第一個(gè)方法里,仿真變量被詳細描述為相對于仿真時(shí)間零點(diǎn)。通過(guò)比較,相對時(shí)間激勵提供初始值,然后在重觸發(fā)激勵前等待一個(gè)事件。根據設計者的需要,兩種方法可以在測試設計中組合使用。
表2 絕對時(shí)間激勵
表2和表3分別以vhdl和verilog提供了一個(gè)絕對時(shí)間激勵和相對時(shí)間激勵的源代碼。
表3 相對時(shí)間激勵
評論