$finish выполняется дважды, имитируя использование verilator
Вот мой main.cpp
испытательный жгут:
#include <iostream>
#include "verilated.h"
#include "Vour.h"
int main(int argc, char** argv, char** env) {
Verilated::commandArgs(argc, argv);
Vour top;
std::cout << (int)top.B << std::endl;
top.A = 1;
top.eval();
std::cout << (int)top.B << std::endl;
return 0;
}
а также our.v
:
module our (input A, output B);
assign B = A;
always begin
if (A) begin
$finish;
end
end
endmodule
и вывод при запуске:
0
- v/our.v:5: Verilog $finish
- v/our.v:5: Verilog $finish
- v/our.v:5: Second verilog $finish, exiting
Программа выходит после второго финиша, никогда не выводя 1
, Почему $finish
выполнить дважды / существует ли простой способ структурировать программу по-другому, чтобы она выполнялась только один раз?