Я новичок в verilog, и я понимаю, что это не последовательный язык. Итак, я хотел спросить, есть ли способ показать результаты в модуле после некоторого выполнения? Потому что отображение всегда должно быть внутри блока initial
, и поэтому я не могу использовать отображение для целей отладки. Вот пример код, который может лучше объяснить мой проблемныйИспользование дисплея в verilog
module A(a,b,c);
input a,b;
output c;
assign c=a&b;
initial
$display("%b",c);
endmodule
module testbench11;
reg a,b;
wire c;
A a1(a,b,c);
initial
$monitor(,$time,"a=%b,b=%b,c=%b",a,b,c);
initial
begin
#0 a=1'b0;b=1'b0;
#3 a=1'b0;b=1'b0;
#3 a=1'b0;b=1'b0;
end
endmodule
Так что я хочу, чтобы отобразить результат c
каждый экземпляр времени для того, чтобы проверить ли я получать желаемый результат. Может показаться, что в этом случае результаты отображаются в конце, но в некоторых сложных задачах я хотел использовать display
для целей отладки, так же как я использую printf
в C. Есть ли способ сделать это в verilog?
В зависимости от того, как вы кодируете модуль, '$ display' может работать или не работать для того, что вы хотите сделать. Ваше текущее использование '$ monitor' обязательно сообщит вам, когда какие-либо из' a', 'b' или' c' (которые связаны с этими сигналами вашего модуля) меняются, что, вероятно, достаточно хорошо. Без лучшего примера точную форму печати лучше всего определить очень сложно. – Unn