首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Verilog TestBench错误

Verilog TestBench错误
EN

Stack Overflow用户
提问于 2017-03-10 23:50:56
回答 1查看 533关注 0票数 0

你好,我正在用Xilinx编写一个Verilog程序,无法让测试平台产生工作。

代码语言:javascript
复制
    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保留了它们的值,但模拟并不起作用。

代码语言:javascript
复制
    `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

我的教授还没有告诉我们如何编写这个测试台,我非常困惑。任何帮助都是非常感谢的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-03-11 13:41:41

像这样重写你的时钟

代码语言:javascript
复制
initial
   begin
     clk = 0;
     #5
     forever clk = #5  ~clk;
   end

然后,不是在每个输入信号变化之间停顿(#1),而是尝试这样做

代码语言:javascript
复制
repeat (1) @ (posedge clk);

因为您希望总是在时钟边沿之后设置。

因此,您的测试过程初始语句将如下所示

代码语言:javascript
复制
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

看看能不能让你振作起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42722462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档