我想使用PLI重新启动模拟。我使用VCS。
我写了这个:
vpi_control(vpiReset,1);
在cbEndOfSimulation
抓取的回调函数中
模拟器获得重置调用但不使用额外参数,因为它在文档中写入:模拟重新启动但在交互模式下!
我还测试了3个参数...
这是重启模拟的正确方法吗?
提前致谢
答案 0 :(得分:1)
根据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(表示失败)?
我能提出的其他建议是:
$reset
系统任务,看看它是否符合预期行为如果这些证明VCS有缺陷,那么至少你有一个很好的测试用例来提高支持票,并希望Synopsys能够相对及时地为你提供补丁。
如果这是一个VCS错误,你可以通过Verilog调用$reset
来解决它 - 假设$reset
按预期工作 - 或者你可以做一些事情。 cbEnterInteractive
回调采取纠正措施。
答案 1 :(得分:0)
感谢您的回答。
不幸的是,我已经测试了$ reset;例程。
当我使用$reset;
或$reset(0);
调用时,模拟会以交互模式重置。
当我调用$reset(1)
或$reset(1,0,0)
时,模拟不会以交互模式重置(如文档中所述)。
对于第二个建议,我无法访问另一个模拟器...