$ finish使用Verilator执行两次模拟

时间:2018-09-18 04:25:06

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

0 个答案:

没有答案