《《模塊測試》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《模塊測試》PPT課件(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Verilog H DL語 法 和 設(shè) 計 進(jìn) 階 -仿 真 測 試武 斌 Verilog H DL測 試 模 塊 : 用 Verilog HDL描 述 的 模 塊 , 可 以 用 來 產(chǎn) 生測 試 信 號 序 列 并 可 以 接 收 被 測 試 模 塊 的 信 號 ,用 于 驗 證 所 設(shè) 計 的 模 塊 是 否 能 正 常 運 行 往 往不 可 綜 合 成 具 體 門 級 電 路 。 outab slselbselansl Verilog H DL模 塊 的 測 試被 測 模 塊激 勵 和 控制 信 號 輸 出 響 應(yīng)和 驗 證 建 立 時 鐘reg clk;initial begin c
2、lk=0; #(period) forever #(period/2) clk=!clk; end reg clk;always begin #period/2 clk=0; #period/2 clk=1;end 建 立 信 號 reg 7:0 ain, bin; reg clock;initial begin clock = 0; ain = 0; bin=3; end always #5 clock = clock;always (posedge clock) begin ain = ain + 2; bin = bin +5; end 建 立 強 制 激 勵initial begin
3、#10 assign q= 1; #20 deassign q; end initial begin # 10 force q=0; # 20 release q; end 在 以 上 兩 個 例 子 中 , 在 10到 20 這 個 時 間 段 內(nèi) , 信號 被 強 制 賦 值 , 而 別 處 對 該 變 量 的 賦 值 均 無 效 。force的 賦 值 優(yōu) 先 級 高 于 assign。如 果 先 使 用 assign, 再 使 用 force對 同 一 信 號 賦 值 ,則 信 號 的 值 為 force所 賦 的 值 加 法 器 測 試 模 塊timescale 10ns/1nsin
4、clude “myadder.v”module test; wire 8:0 sumout; reg 7:0 ain, bin; reg clock;initial begin clock = 0; ain = 0; bin=3; end always #5 clock = clock; always (posedge clock) begin ain = ain + 2; bin = bin +5; end 仿 真 波 形 2 64 83 8 13 100 2823183 10 17 383124 存 儲 器 建 模 ROMtimescale 1ns/10ps module myrom(re
5、ad_data,addr,read_en_); input read_en_; input 3:0 addr; output 3:0 read_data; reg 3:0 read_data;reg 3:0 mem 0:15;initial $readmemb(“my_rom_data”,mem);always (addr or read_en_) if(!read_en_) read_data=memaddr; endmodule my_rom_data 0000 0101 1100 0011 1101 0010 0011 1111 1000 1001 1000 0001 1101 1010
6、 0001 1101 存 儲 器 建 模 RAMRAM模 型 比 ROM模 型 稍 微 復(fù) 雜 : 它 必 須 具 有 雙 向 總 線 實 現(xiàn) 讀 寫 能 力 ; 存 儲 器 的 加 載 使 用 循 環(huán) 把 值 賦 給 存 儲 器 數(shù) 組 。 for(i=0;imemsize;i=i+i) / initialize memory memai=wordsize1b1; 調(diào) 用 $readmem系 統(tǒng) 任 務(wù) 。 /從 文 件 mem_file.txt 中 , 把 初 始 數(shù) 據(jù) 存 入 存 儲器 (mem)的 每 個 單 元 $readmemb(“mem_file.txt”,mem); 注 意
7、: 上 面 兩 項 必 須 寫 在 initial 塊 中 , 加 載 這 些 初始 化 數(shù) 據(jù) 不 需 要 時 間 。 else begin # (5 * timeslice) read = 1; # (timeslice) read = 0; end always (posedge ack) begin DataToRam = DataToRam + 2; addr = addr + 1; endendmodule /信 號 模 塊 xh1( .clock( clk), .reset(rst), .ack(ackn) . . . . .); . . . . ./可 綜 合 模 塊 mysj1(. clock(clk), reset(rst),.ack(ackn) . . .); . . . . . /外 圍 模 塊 ram1(.read(rd), .write(wrt), .data(databus) . . .); . . . . .endmodule 設(shè) 計 示 例 -仿 真 宏 定 義 stim,可 使 源 程 序 簡 潔定 義 事 件 end_first_pass 設(shè) 計 示 例 三 ( 續(xù) ) 仿 真 時 序 仿 真 時 序