我想使用PLI重新启动我的模拟。我使用VCS。
我写了这个:vpi_control(vpiReset,1);
在由cbEndOfSimulation
捕获的回调函数中,模拟器获得重置调用,但没有像文档中所写的那样使用额外的参数:模拟重新启动,但处于交互模式!我还测试了3个参数...
这是重新启动模拟的正确方法吗?
提前感谢
发布于 2014-01-07 23:06:26
根据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错误,你也许可以通过使$reset
被Verilog调用来解决它--假设$reset
按预期工作--或者你可以在cbEnterInteractive
回调中做一些事情来采取纠正措施。
发布于 2014-01-08 08:45:26
谢谢你的回答。
不幸的是,我已经测试了$reset;例程。
当我用$reset;
或$reset(0);
调用它时,模拟在交互模式下被重置。当我调用$reset(1)
或$reset(1,0,0)
时,模拟被重置为非交互模式(如文档中所述)。
对于第二个建议,我不能访问另一个模拟器...
https://stackoverflow.com/questions/20976544
复制相似问题