テストベクタの入力


シミュレーションを行う場合、回路の入力信号に対して時間的に変化する信号 を与える必要があります。各入力信号の値に応じて出力が正しく動作するかど うかうチェックするわけです。これからチェックする回路は以下のような動作 をするはずです。

timing.gif (5.6KB)

では、入力信号はどのようにして与えるのでしょうか。シミュレータのGUIを 用いて、各信号に対して値を設定することもできますが、非常に手間がかかり ます。そのため、本実験ではハードウェア記述言語によって与えます。使用す るハードウェア記述言語は事前に予習を行った Verilog HDL で、集積回路設 計に広く用いられています。ここではテストベクタを記述するのに必要最小限 な要点のみを解説します。


まず、テストベクタを入力するためのファイルを登録します。
デザインウィンドウのタブからDesignを選択します。
次にViewをSimulationに変更します。
Hierarchyからcounter(counter.sch)を選択します。
ここでマウスを右クリックし "New Source" を選択します。
下図のように、"Verilog Test Fixture" を選択し、テストベンチファイルと して counter_test.v を入力し Next を押します。
続けて、Finish を押してファイルを登録します。

counter_test.v ファイルが作成されてエディタ上に表示されますが、 その際テストベンチの雛形が作成されています。


// Verilog test fixture created from schematic /user/staff/kuga/work/xilinx/jikken/4bit/sch/COUNTER/counter.sch - Tue Dec 13 13:42:06 2011

`timescale 1ns / 1ps

module counter_counter_sch_tb();

// Inputs
   reg CE;
   reg CLK;
   reg RST;

// Output
   wire Q3;
   wire Q2;
   wire Q1;
   wire Q0;

// Bidirs

// Instantiate the UUT
   counter UUT (
		.CE(CE), 
		.CLK(CLK), 
		.RST(RST), 
		.Q3(Q3), 
		.Q2(Q2), 
		.Q1(Q1), 
		.Q0(Q0)
   );
// Initialize Inputs
   `ifdef auto_init
       initial begin
		CE = 0;
		CLK = 0;
		RST = 0;
   `endif
endmodule

これを以下のように、変更します。
// Verilog test fixture created from schematic /user/staff/kuga/work/xilinx/jikken/4bit/sch/COUNTER/counter.sch - Tue Dec 13 13:42:06 2011

`timescale 1ns / 1ps

module counter_counter_sch_tb();

// Inputs
   reg CE;
   reg CLK;
   reg RST;

// Output
   wire Q3;
   wire Q2;
   wire Q1;
   wire Q0;

   wire [3:0] Q;
   assign Q = { Q3, Q2, Q1, Q0 };

// Bidirs

// Instantiate the UUT
   counter UUT (
		.CE(CE), 
		.CLK(CLK), 
		.RST(RST), 
		.Q3(Q3), 
		.Q2(Q2), 
		.Q1(Q1), 
		.Q0(Q0)
   );
// Initialize Inputs

  integer i;

  initial
  begin
     CLK = 1'b1;
     for( i=0 ; i<60 ; i=i+1 )
        CLK = #50 ~CLK;
     $finish;
  end

  initial
  begin
     CE = 1'b1;
     CE = #1075 1'b0;
     CE = #200  1'b1;
  end

  initial
  begin
     RST = 1'b1;
     RST = #175 1'b0;
     RST = #375 1'b1;
     RST = #225 1'b0;
  end

endmodule

入力したファイルに文法的な誤りがないかチェックします。 下図のように "Behavioral Check Syntax" を実行します。


次は シミュレータの起動 です。


| CAD Home |