仿真过程中采样和数据驱动的竞争问题
发布日期:2021-05-18 10:36:20 浏览次数:20 分类:精选文章

本文共 1072 字,大约阅读时间需要 3 分钟。

在硬件设计和仿真过程中,经常会遇到时序竞争问题。每当我们在仿真工具中展开波形进行观察时,会发现时钟上升沿和驱动信号的变化沿看起来非常齐整,仿佛没有延迟。然而,在真实电路中,时钟上升沿和驱动信号之间必然存在物理上的延迟,这是由于信号传输所需的时间所导致的。

这就是为什么在RTL仿真中我们看不到这一延迟的原因。RTL仿真主要进行逻辑验证,仿真器在此阶段并不知道具体的物理延迟是多少。这类延迟通常在门级仿真(DFT、DFE等)中才能准确体现。在RTL仿真中,默认情况下会为时钟驱动的信号添加一个无限最小时间(delta-cycle)的延迟。这个延迟太小,无法用绝对时间单位衡量,但在仿真中具有很好的现实意义。

以一个具体的示例来说明:当45ns时刻处的波形变化时,所有信号似乎几乎同时发生变化。但在延迟展开的精度下,这种差异可能只会体现在delta-cycle水平。

将光标移到45ns处,像你看到的那样,clk1和clk2都处于上升沿,而data信号从2变成了8'h02。然而,打印出的实时波形却显示了不同的信号状态,这就需要我们进一步分析这个背后的原因。

仔细分析后我们发现,这种差异正是由于时序竞争引起的。在delta-cycle时间范围内,cmp信号的变化是会被严格捕捉到的。可以通过选择特定信号,并将时间轴精确到delta-cycle级别,来观察这其中的时序关系。

例如,在"45ns + 0(delta-cycle)"时刻,所有信号都处于稳定状态;而在"45ns +1(delta-cycle)"时刻,驱动信号clk2刚刚开始响应;在"45ns +2(delta-cycle)"时刻,应有的信号状态逐渐显现。

通过以上分析可以理解:在时序逻辑或组合逻辑中,项目中的硬件模拟仿真的硬件变量之间可能存在若干delta-cycle的延迟。在采样过程中,这种延迟可能导致不同的波形表现,这种差异需要特别注意。

针对这种时序竞争问题,设计仿真时需要采取以下措施避免采样竞争对结果的误差:

第一,在驱动设计阶段,建议添加相应的人为延迟,以模拟实际的物理延迟特性,这样可以提高DUT的实际应用信号质量,也能提升测试用例在采样阶段的可靠性。

第二,对于那些在delta-cycle延迟范围内依然存在时序影响的信号,可以采取采用完成时间采样策略的方式。即在信号稳定前的特定时间范围内进行采样,这样可以确保所获取的信号状态是一致的,从而有效降低时序竞争带来的误差风险。

这些方法的应用不仅有助于提高仿真结果的准确性,也为后期硬件设计提供了更可靠的时序基准。

上一篇:CRC校验码手算举例
下一篇:verilog中的除法运算/

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月30日 07时44分47秒