【问题标题】:Verilog TestBench ErrorVerilog 测试台错误
【发布时间】:2017-03-10 15:50:56
【问题描述】:

您好,我正在 Xilinx 中编写 Verilog 程序,但无法让测试平台生成工作。

    module Lab3(
    input  u,
    input clk,
    input clrn,

    output wire a,b,c,d,e,f,g

    );

    wire  dff3_combo;
    wire q_to_q;


    dff3 d0(
    .ns(dff3_combo),
    .clr(clrn),
    .clk(clk),
    .q(q_to_q)
        );


    combo_circuit combo(
    .q(q_to_q),
    .u(u),
    .ns(dff3_combo),
    .a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g)
    );
    endmodule

这是我在测试台上的尝试。虽然 u_tb、clock_tb 和 clr_tb 保留了它们的值,但模拟没有工作。

    `timescale 1ns / 1ps

    module testbench ( );
reg u_tb,clr_tb, clock_tb;
wire a,b,c,d,e,f,g;


Lab3 L(
.u(u_tb),
.clk(clock_tb),
.clrn(clr_tb),
.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g)
);


always
begin
clock_tb = 1'b1;
#1;
clock_tb = 1'b0;
#1;
end

initial
begin
u_tb = 1;
clr_tb = 0;
#1 u_tb = 1;
#16 clr_tb = 0;
#20 $finish;
end
endmodule

我的教授没有告诉我们如何编写这个测试平台,我很困惑。任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: verilog xilinx hdl test-bench


    【解决方案1】:

    像这样重写你的时钟

    initial
       begin
         clk = 0;
         #5
         forever clk = #5  ~clk;
       end
    

    然后,不要在每次输入信号更改之间暂停 (#1),而是尝试这样做

    repeat (1) @ (posedge clk);
    

    因为您希望始终在时钟沿之后立即进行设置。

    所以你的测试过程初始语句看起来更像

    initial
    begin
    u_tb = 1;
    clr_tb = 0;
    repeat (1) @ (posedge clk);
    u_tb = 1;
    repeat (8) @ (posedge clk);
    clr_tb = 0;
    repeat (5) @ (posedge clk);
    $finish;
    end
    

    看看这是否能让你继续前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多