1

我正在使用 Cadence 的以太网 eVC,其中代理的监视器在以下信号处被窃听:

.            ____________                    _____
.clk   _____|            |__________________|
.      ________ _______ ________________ _________
.data  __0a____X___07__X_______0b_______X_________
.                      ^ ^

它在时钟的上升沿和下降沿对数据进行采样。上例中,数据0x07为垃圾数据,有效值为0xa(clk上升)和0xb(clk下降)。但是,监视器正在采样(用于 clk 下降)0x7!

我怀疑这是 Specman 模拟器同步问题。如果是这样,如何解决?

  • 模拟器 - IES 13.10
  • irun 13.10 选项 - (我将只包括那些我认为可能与问题相关的选项,以及那些我还不知道它们的目的是什么的选项)

    -nomxindr  
    -vhdlsync  
    +neg_tchk  
    -nontcglitch  
    +transport_path_delays  
    -notimezeroasrtmsg  
    -pli_export  
    -snstubelab
    
  • 语言 - VHDL(顶级测试平台)、Verilog (DUT)、Specman(虚拟序列、Enet 和 OCP eVC)

  • 0x07(上面波形中的左 ^)和时钟下降沿(右 ^)之间的时间 = 0.098ns

一位同事建议使用-sntimescale,但我仍然无法想象这是如何导致/将解决问题的。这些搜索字符串中的任何一个都没有显示有用的提示,即使是 Cadence 的那些文章:“specman tick 同步增量延迟时间刻度精度”

4

1 回答 1

2

这可能确实是一个时间尺度问题。有一本关于调试 specman 模拟器接口同步问题的综合食谱。请看这里

要检查仿真中使用的时间刻度,可以将-print_hdl_precision选项添加到 irun 以打印 VHDL 层次结构的精度。对于 Verilog,它将自动打印,以防它在代码中或通过 irun 选项设置。该信息将在制定过程中打印出来。

要检查 Specman 使用的时间刻度,您可以在 Specman 提示符下发出以下命令:
SN> print get_timescale()

另一个尝试的选项(仅在 timescale 选项没有帮助之后)是删除 -vhdlsync 标志。实际上,在大多数混合环境中,您应该添加此标志。但在极少数情况下,没有它,环境会更好地工作。如果您尝试删除此标志,请记住重新详细说明。

如果您在食谱中没有找到解决问题的方法,则应进行更深入的调查。例如,specman 如何对信号进行采样。它是 simple_port、event_port、tick access 等吗?还有一些跟踪和探测命令可能会有所帮助。在这种情况下,我建议联系 Cadence 支持。

祝你好运!
三达

于 2015-07-19T11:32:03.843 回答