新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 編寫高效的測試設計(testbenches)

        編寫高效的測試設計(testbenches)

        作者: 時間:2008-06-26 來源:電子開發網 收藏

          VHDL進程塊和Verilog初始塊與設計文件中的其他的進程塊或初始塊同時執行。然而,在每一個進程塊或初始塊中,事件是按照書寫的順序有序的規劃的。這說明在仿真時間零點并發的每一個塊激勵的順序。多模塊應該被用來將復雜的激勵順序分解為有 更好的可讀性和方便維護的代碼。

        本文引用地址:http://www.104case.com/article/84843.htm

           顯示結果

          在verilog中推薦使用關鍵字$display 和 $monitor 顯示結果。雖然vhdl沒有等效的顯示指令,它提供了std_textio標準文本輸入輸出程序包。它允許文件的i/o重定向到顯示終端窗口(作為這個技術的示例,參看下面的自較驗查驗證設計)

          下面是verilog示例,它將在終端屏幕上顯示一些值。

          // pipes the ASCII results to the terminal or text editor

          initial begin

          $timeformat(-9,1,"ns",12);

          $display(" Time Clk Rst Ld SftRg Data Sel");

          $monitor("%t %b %b %b %b %b %b", $realtime,

          clock, reset, load, shiftreg, data, sel);

          end

          關鍵字 $display在終端屏幕上輸出引用的附加的說明文字(“。。。”).關鍵字$monitor操作不同。因為它的輸出是事件驅動的。例中的變量$ realtime(由用戶賦值到當前的仿真時間)用于觸發信號列表中值的顯示。信號表由變量 $realtime開始,跟隨其他將要顯示的信號名(clock, reset, load等)。以%開始的關鍵字包含一個格式描述的表,用來控制如何格式化顯示信號列表中的每個信號的值。格式列表是位置確定的。每個格式說明有序地與信號列表中的信號順序相關。比如%t說明規定了$realtime的值是時間格式。并且第一個%b說明符格式化clock的值是二進制形式。verilog 提供附加的格式說明,比如%h用于說明十六進制,%d說明十進制,%c說明顯示為八進制。(參見verilog準則了解完整的關鍵字及格式描述符)

           簡單的設計

          簡單的設計實例化用戶設計,然后提供相應的激勵。輸出被圖形化顯示在仿真器的波形窗口里或者作為文本發送到用戶的終端或者是管道輸出文本。

          以下是一個簡單的用Verilog實現的設計,它實現了一個移位寄存器的功能。

          module shift_reg (clock, reset, load, sel, data, shiftreg);

          input clock;

          input reset;

          input load;

          input [1:0] sel;

          input [4:0] data;

          output [4:0] shiftreg;

          reg [4:0] shiftreg;

          always @ (posedge clock)

          begin

          if (reset)

          shiftreg = 0;

          else if (load)

          shiftreg = data;

          else

          case (sel)

          2’b00 : shiftreg = shiftreg;

          2’b01 : shiftreg = shiftreg << 1;

          2’b10 : shiftreg = shiftreg >> 1;

          default : shiftreg = shiftreg;

          endcase

          end

          endmodule
         
          以下是簡單的測試設計示例移位寄存器設計的例子,verilog描述。

          module testbench; // declare testbench name

          reg clock;

          reg load;

          reg reset; // declaration of signals

          wire [4:0] shiftreg;

          reg [4:0] data;

          reg [1:0] sel;

          // instantiation of the shift_reg design below

          shift_reg dut(.clock (clock),

          .load (load),

          .reset (reset),

          .shiftreg (shiftreg),

          .data (data),

          .sel (sel));

          //this process block sets up the free running clock

          initial begin

          clock = 0;

          forever #50 clock = ~clock;

          end

          initial be gin// this process block specifies the stimulus.



        關鍵詞: 測試 HLL

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 萍乡市| 霍山县| 夹江县| 神农架林区| 平乐县| 阆中市| 昌吉市| 多伦县| 福建省| 临洮县| 浠水县| 鹤峰县| 韶山市| 章丘市| 泰州市| 乐东| 阳东县| 鄂托克旗| 镇沅| 泗水县| 昆山市| 醴陵市| 阿勒泰市| 将乐县| 九寨沟县| 宕昌县| 商都县| 建瓯市| 镇远县| 丰宁| 民和| 黔西县| 西乌珠穆沁旗| 平顺县| 永春县| 常州市| 广平县| 甘南县| 乌兰浩特市| 新河县| 论坛|