編寫testbench的主要目的是為了對使用硬體描述語言(hdl)設計的電路進行**驗證,測試設計電路的功能、部分效能是否與預期的目標相符。
以以下源**為例
module test(
input [1:0]sw,
output [1:0]led
);assign led[1]=sw[1];
assign led[0]=sw[0];
endmodule
testbench測試**編寫步驟如下:
測試**模組命名
module tb_test(
);
定義變數型別
對於 testbench 而言,埠應當和被測試的 module 一一對應。
埠分為 input,output 和 inout 型別產生激勵訊號的時候,
input 對應的埠應當申明為 reg,
output 對應的埠申明為 wire。
reg [1:0]sw;
wire [1:0]led;
例化模組,並將輸入輸出的訊號和 2 中定義的變數進行關聯。
test uut(
.sw(sw),
.led(led));
直接賦值,一般用 initial 塊給訊號賦初值,initial 塊執行一次,always 或者 forever 表示由事件激發反覆執行。
`timescale 1ns / 1ps
module tb_test(
);reg [1:0]sw;
wire [1:0]led;
test uut(
.sw(sw),
.led(led));
initial
sw=0;
always
begin
#50sw=2'b00;
#50;
sw=2'b01;
#50;
sw=2'b10;
#50;
sw=2'b11;
endendmodule
其中#50指延遲相應的時間單位,該時間單位由 timscale 決定。
一般在 testbench 的開頭定義時間單位和**精度
timescale 1ns/1ps
前面乙個是代表時間單位,後面乙個代表**時間精度。
module test_bench()//一般簡單的測試檔案無輸入輸出
訊號或變數宣告定義
邏輯設計中輸入訊號在這裡對應reg型變數
邏輯設計中的輸出訊號在這裡對應wire型
使用initial或always語句塊產生激勵
例化猜測是模組ut
監控和比較輸出響應
endmodule
vivado學習第二 串列埠通訊
奇偶校驗位 奇偶校驗位分為奇數校驗位和偶數校驗位,奇數和偶數的判斷標準是依據傳送一串或者一幀資料中 1 的個數。奇數校驗 傳送的資料位 奇數校驗位中 1 的個數為奇數個,也就是說如果資料位的 1 的個數為奇數個,則奇數校驗位為數字0 如果資料位的 1 的個數為偶數個,則奇數校驗位為數字1。偶數校驗 ...
vivado學習第二 串列埠通訊
奇偶校驗位 奇偶校驗位分為奇數校驗位和偶數校驗位,奇數和偶數的判斷標準是依據傳送一串或者一幀資料中 1 的個數。奇數校驗 傳送的資料位 奇數校驗位中 1 的個數為奇數個,也就是說如果資料位的 1 的個數為奇數個,則奇數校驗位為數字0 如果資料位的 1 的個數為偶數個,則奇數校驗位為數字1。偶數校驗 ...
學習筆記二
1 算符運算子 1 5為1 1 5為 1 即只看被除數的符號。b a 先賦值後運算 a b 先運算後賦值。2 字串資料與任何資料使用 都是相連線,最終都會變成字串,例如 ad 2 結果為 ad2 3 轉義字元 通過 來裝便後面字母或符號的含義 n換行 linux b 退格 r 按下回車鍵,windo...