仿真引擎(Simulation engine)

这一章解释了仿真引擎的内部构造。

仿真引擎通过在顶层Verilator C++仿真模型中应用以下仿真环来模仿事件驱动的仿真器(像VHDL/Verilog):

simEngine

在底层, 仿真引擎管理如下原语:

  • 敏感回调, 允许用户在每个仿真增量周期调用函数;

  • 延时回调, 允许用户在未来仿真时间调用函数;

  • 仿真线程, 允许用户描述并行进程;

  • 指令缓存, 允许用户一直延时对DUT的写访问直到当前增量周期;

关于这些原语有一些使用的操作:

  • 敏感回调可以像时钟上升沿一样, 当给定条件发生唤醒仿真线程;

  • 延时回调可以用来调度激励, 例如在给定时间, 或者时钟翻转后取消对复位信号断言;

  • 上述二者均可以用来恢复仿真线程;

  • 仿真线程可以用来产生激励并检查DUT的输出值;

  • 指令缓存的目的主要是避免DUT和testbench之间的并发事件。