我想使用PLI重新开始仿真。我使用VCS。

我写了这个:
vpi_control(vpiReset,1);

cbEndOfSimulation捕获的回调函数中
模拟器收到reset调用,但不使用文档中编写的额外参数:模拟将重新启动,但处于交互模式!
我还测试了3个参数...

这是重新启动仿真的正确方法吗?

提前致谢

最佳答案

根据VPI规范,您所做的工作看起来很正确:

PLI_INT32 vpi_control(
   PLI_INT32 operation,  /* constant representing the operation to perform */
             ...)        /* variable number of arguments as required by the
                            operation */


其中vpiReset操作等效于$reset系统任务,因此需要三个参数stop_valuereset_valuediagnostic_level

我知道这很明显,但是您是否正在检查返回值是1(表示成功)而不是0(表示失败)?

我只能提出的其他建议是:


尝试从Verilog调用等效的$reset系统任务,查看其行为是否符合预期
尝试针对其他模拟器运行测试程序


如果这些证明VCS不足,那么至少您有一个很好的测试案例来提高支持能力,并希望Synopsys可以相对迅速地为您提供补丁。

如果这是VCS错误,则可以通过使Verilog调用$reset来解决它-假定$reset可以按预期工作-或您可以在cbEnterInteractive回调中进行某些操作以进行纠正行动。

关于c - PLI Verilog:如何重新启动仿真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20976544/

10-12 13:59