Код Verilog не работает должным образом - PullRequest
0 голосов
/ 04 июля 2018

В следующем коде Verilog testbench я получаю вывод на монитор от времени = 0 до времени = 30, но после этого я не получаю вывод на монитор до времени = 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

1 Ответ

0 голосов
/ 04 июля 2018

Системная задача $monitor выводит строку только при изменении одного из ее входов. (исключая системные функции $time и т. д.). Ничто не меняется между 30 нс и 70 нс, следовательно, строки $monitor не выводятся.

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

...