【问题标题】:Verilog code does not behave as expectedVerilog 代码未按预期运行
【发布时间】:2018-07-04 14:58:57
【问题描述】:

在下面的 Verilog 测试台代码中,我从 time=0 到 time=30 获得了监视器输出,但在那之后,我直到 time=70 都没有得到监视器输出。

这种行为的可能原因是什么?我正在使用 Modelsim 10.4。

    //design block for mux
    module mux(output reg out,input[3:0] in,input[1:0] s);

    always @(s or in)

    case(s)

     2'b00:out<=in[0];
     2'b01:out<=in[1];
     2'b10:out<=in[2];
     2'b11:out<=in[3];

    endcase
    endmodule

    //testbench

 module testbench;

    reg[3:0] in;
    reg[1:0] s;
    wire out;

    assign out=0;

    mux m(out,in,s);



    initial
    begin
     s=0;
     in=0;
    $monitor("time=%d , s=%d , in=%d ",$time,s,in);
    while(in<15)
    begin
    while(s<3)
    begin
    s= #10 s+1;
    end
    #40 s<=0;
    #40 in<=in+1;
    end

    end
    endmodule

【问题讨论】:

    标签: verilog simulation hdl modelsim


    【解决方案1】:

    $monitor 系统任务仅在其输入之一更改时输出一行。 (不包括$time等系统功能)。 30ns 和 70ns 之间没有任何变化,因此$monitor 不会输出任何行。

    https://www.edaplayground.com/x/2kQZ

    【讨论】:

    • 先生,我想在 time=40 时使 s=0 以及我也想在 time=40 时加一,我应该在测试台代码中进行哪些更改
    • @user120908 欢迎来到 Stack Overflow。 Stack Overflow 的部分想法是提出一组对未来的 Google 员工有用的配对问题和答案。你问了一个问题;我回答了。这对在未来可能对其他人有用。您现在有一个新问题,所以请作为一个新问题提出。否则,这会让未来的 Google 员工感到困惑。
    • 看看stackoverflow.com/questions/32832104/…如果没有帮助,再问一个问题
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多