这是我的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
执行两次/是否有一种简单的方法来以不同的方式构造程序,使其仅执行一次?