PLI Verilog:如何重新启动模拟

时间:2014-01-07 16:16:26

标签: c verilog

我想使用PLI重新启动模拟。我使用VCS。

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

cbEndOfSimulation抓取的回调函数中 模拟器获得重置调用但不使用额外参数,因为它在文档中写入:模拟重新启动但在交互模式下! 我还测试了3个参数...

这是重启模拟的正确方法吗?

提前致谢

2 个答案:

答案 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_valuereset_valuediagnostic_level

我知道这说明显而易见但是你检查返回值是1(表示成功)而不是0(表示失败)?

我能提出的其他建议是:

  1. 尝试从Verilog调用等效的$reset系统任务,看看它是否符合预期行为
  2. 尝试针对其他模拟器运行测试程序
  3. 如果这些证明VCS有缺陷,那么至少你有一个很好的测试用例来提高支持票,并希望Synopsys能够相对及时地为你提供补丁。

    如果这是一个VCS错误,你可以通过Verilog调用$reset来解决它 - 假设$reset按预期工作 - 或者你可以做一些事情。 cbEnterInteractive回调采取纠正措施。

答案 1 :(得分:0)

感谢您的回答。

不幸的是,我已经测试了$ reset;例程。

当我使用$reset;$reset(0);调用时,模拟会以交互模式重置。 当我调用$reset(1)$reset(1,0,0)时,模拟不会以交互模式重置(如文档中所述)。

对于第二个建议,我无法访问另一个模拟器...