我想使用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_value
,reset_value
和diagnostic_level
。我知道这很明显,但是您是否正在检查返回值是1(表示成功)而不是0(表示失败)?
我只能提出的其他建议是:
尝试从Verilog调用等效的
$reset
系统任务,查看其行为是否符合预期尝试针对其他模拟器运行测试程序
如果这些证明VCS不足,那么至少您有一个很好的测试案例来提高支持能力,并希望Synopsys可以相对迅速地为您提供补丁。
如果这是VCS错误,则可以通过使Verilog调用
$reset
来解决它-假定$reset
可以按预期工作-或您可以在cbEnterInteractive
回调中进行某些操作以进行纠正行动。关于c - PLI Verilog:如何重新启动仿真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20976544/