3 入力ベクタの作成 |
---|
3.1 テストベンチの作成 |
テストベンチ記述上の注意点
テストベンチの記述例
`timescale 1ns/1ns module cnt8_test; reg en, clk, rst, ld; // Incriment, Clock, Reset, Load reg [7:0] r_d; // Data wire cout; // Carry wire [7:0] w_q; // Output //for PowerMedusa wire d7, d6, d5, d4, d3, d2, d1, d0; wire q7, q6, q5, q4, q3, q2, q1, q0; assign {d7, d6, d5, d4, d3, d2, d1, d0} = r_d; assign {q7, q6, q5, q4, q3, q2, q1, q0} = w_q; integer i; parameter cycle = 100; // CLK Period = 10MHz count8_ld i0 (.d(r_d), .ci(en), .clk(clk), .rst(rst), .ld(ld), .co(cout), .q(w_q)); initial begin r_clk <= 1'b0; // Clock = 0 forever #(cycle/2) clk <= ~clk; // Clocking end initial begin #0 rst = 1'b1; ld = 1'b0; en = 1'b0; d = 8'hf0; #(cycle*3/4) rst = 1'b0; #(cycle*5/4) rst = 1'b1; ld = 1'b1; #(cycle) en = 1'b1; ld = 1'b0; #(cycle*48) $finish; end initial begin // Monitor Output $monitor($time,, "data = %h clock = %b reset = %b ld = %b ci = %b q = %h co = %b", r_d, clk, rst, ld, en, w_q, cout); end initial begin // VCD File Name $dumpfile("cnt8.vcd"); // VCD Signal Name $dumpvars(0, d7, d6, d5, d4, d3, d2, d1, d0, clk, rst, ld, en, q7, q6, q5, q4, q3, q2, q1, q0, cout); end endmodule module count8_ld (d, ci, clk, rst, ld, co, q); input [7:0] d; // data input ci; // start input clk, rst, ld; // clock, cync-reset, load output co; // carrie output [7:0] q; // count out reg [7:0] q; always @(posedge clk) begin if (rst == 1'b0) begin q <= 8'b00000000; end else if (ld == 1'b1) begin q <= d; end else begin q <= q + ci; end end assign co = &{q, ci}; endmodule |
テストベンチが完成したら、VDEC設計室へ転送して、ncverilog を実行。$dumpfile で指定したvcdファイルが作成されますので、MU200-SXを接続しているPCに持ち帰ってください。verilog-XLを使用すると、変数の順序が自動変更されたりして、失敗することがあります。
3.2 VCDファイルの編集 |
VCDファイルに in/out の記述を書き込みます。VCDファイルはテキストファイルです。
入力VCDファイルの修正内容
FPGA -> DUT 方向の信号 | reg または wire -> in に修正 |
DUT -> FPGA 方向の信号 | wire または reg -> out に修正 |