【发布时间】:2015-07-16 16:13:29
【问题描述】:
我正在使用 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 synchronization delta delay timescale precision”
【问题讨论】:
-
确保您的 VHDL、Verilog、e 等的时间尺度和精度相同?
-sntimescale可能会有所帮助,但我相信此选项仅适用于 specman e;您可能需要为 VHDL 和 Verilog 找到等效的编译器选项。大多数 Verilog/SystemVerilog 模拟器默认为 1ns/1ns,因此 0.098ns 将四舍五入为 0。测试台/DUT 中也可能存在时序延迟或可能的阻塞/非阻塞分配滥用。 -
您的 Specman 时钟事件是如何创建的?它们是否连接到同一个时钟网络?
-
@RossRogers 因为收集数据包信息的是 Enet eVC,所以我想它也使用了
@driver.clock采样事件。该时钟与波形中的时钟相同。 -
@Greg 我还没有尝试过。现在我只是延迟了时钟以允许 eVC 监视器“正确”采样数据。
-
我想了解 Specman 如何与模拟器不同步。是否有我可以调用的模拟器命令,或者是否有我可以显示的 Specman 字段值来证明这个问题?或者您可以推荐的任何参考材料,以显示在 HDL 和 Specman 中具有不同时间尺度和精度的影响?
标签: vhdl specman uvm e cadence