新聞中心

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

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

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

          Data_in_t[6] =10’b1111011111;

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

          Data_in_t[7] =10’b1110111111;

          Data_in_t[8] =10’b1101111111;

          Data_in_t[9] =10’b1011111111;

          Data_in_t[10]=10’b0111111111;

          Data_in_t[11]=10’b1111111110;

          Data_in_t[12]=10’b1111111110;

          Data_in_t[13]=10’b1111111101;

          Data_in_t[14]=10’b1111111011;

          Data_in_t[15]=10’b1111110111;

          Data_in_t[16]=10’b1111101111;

          Data_in_t[17]=10’b1111011111;

          Data_in_t[18]=10’b1110111111;

          Data_in_t[19]=10’b1101111111;

          Data_in_t[20]=10’b1011111111;

          Data_in_t[21]=10’b0111111111;

          Data_in_t[22]=10’b1111111110;

          Data_in_t[23]=10’b1111111110;

          Data_in_t[24]=10’b1111111101;

          Data_in_t[25]=10’b1111111011;

          end

          reg GSR;

          assign glbl.GSR = GSR;

          initial begin

          GSR = 1;

          // ///////////////////////////////

          // Wait till Global Reset Finished

          // ///////////////////////////////

          #100 GSR = 0;

          end

          // ////////////////

          // Create the clock

          // ////////////////

          initial begin

          tbclk = 0;

          // Wait till Global Reset Finished, then cycle clock

          #100 forever #60 tbclk = ~tbclk;

          end

          initial begin

          // //////////////////////////

          // Initialize All Input Ports

          // //////////////////////////

          tbreset = 1;

          tbstrtstop = 1;

          // /////////////////////

          // Apply Design Stimulus

          // /////////////////////

          #240 tbreset = 0;

          tbstrtstop = 0;

          #5000 tbstrtstop = 1;

          #8125 tbstrtstop = 0;

          #500 tbstrtstop = 1;

          #875 tbreset = 1;

          #375 tbreset = 0;

          #700 tbstrtstop = 0;

          #550 tbstrtstop = 1;

          // /////////////////////////////////////////////////////

          // simulation must be halted inside an initial statement

          // /////////////////////////////////////////////////////

          // #100000 $stop;

          end

          integer i,errors;

          ///////////////////////////////////////////////////////////////////

          ///////////////

          // Block below compares the expected vs. actual results

          // at every negative clock edge.

          /////////////////////////////////////////////////////////// ////////
          ///////////////

          always @ (posedge tbclk)

          begin

          if (tbstrtstop)

          begin

          i = 0;

          errors = 0;

          end

          else

          begin

          for (i = 1; i <= cycles; i = i + 1)

          begin

          @(negedge tbclk)

          // check result at negedge

          $display("Time%d ns; TBSTRTSTOP=%b; Reset=%h; Expected

          TenthsOut=%b; Actual TenthsOut=%b", $stime, tbstrtstop, tbreset,

          Data_in_t[i], tbtenthsout);

          if ( tbtenthsout !== Data_in_t[i] )

          begin

          $display(" ------ERROR. A mismatch has occurred-----");

          errors = errors + 1;

          end

          end

          if (errors == 0)

          $display("Simulation finished Successfully.");

          else if (errors > 1)

          $display("%0d ERROR! See log above for details.",errors);

          else

          $display("ERROR! See log above for details.");

          #100 $stop;

          end

          end

          endmodule

          這種簡單的自較驗設計可以轉換到任何場合----當然,預期的輸出值和信號的名字在重用時是需要更改的。如果不需要每個時鐘沿檢查,需要的話可以修改for-loop結構。

          如果仿真成功,下圖的信息就會在顯示終端上顯示:


        上一頁 1 2 3 4 下一頁

        關鍵詞: 測試 HLL

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 环江| 镇宁| 长宁县| 遵义县| 顺义区| 闽侯县| 海晏县| 股票| 宁河县| 高阳县| 平乡县| 丹巴县| 洪泽县| 太原市| 江津市| 利津县| 油尖旺区| 阳朔县| 壶关县| 衡南县| 静海县| 叙永县| 黔西| 孝义市| 新建县| 施甸县| 西宁市| 邮箱| 湘西| 桦甸市| 如皋市| 九江市| 濮阳县| 营山县| 岳池县| 芜湖县| 土默特左旗| 大名县| 尉犁县| 江口县| 宝应县|