Вот мой 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
выполняется дважды / существует простой способ структурировать программу по-разному, чтобы она выполнялась только один раз?