"); //-->
LDGRB-01 读取和写入内部寄存器的 SPI 端口
这将避免任何很难发现和调试的增量时间周期问题。请注意,这也有效,因为此块是唯一ARVALID从测试台内进行控制的块。如果您希望ARVALID从多个测试台时钟进行控制,您可能会遇到其他并发问题。
虽然您仍然可以使用 Verilator 执行此类操作,但我将在另一篇文章中保留如何执行此操作的解决方案。
选择一个时钟边沿并使用它。不要在两个边缘都转换——除非硬件协议需要它。
正如我在上面提到的,我已经看到很多 AXI 建模尝试在时钟的下降沿设置各种 AXI 信号,以便在上升沿出现时任何和所有逻辑输入稍后都将稳定。这种方法一直很好,直到有人想要进行布局后时序分析,或者您设计的其他部分也想使用下降沿,然后痛苦随之而来。
可悲的是,这意味着该项目可能会被上交,然后在问题暴露出来之前多年处于“工作”状态。
以类似的方式,当您有两个 always 块时会发生什么,它们都使用#1如上图 2 所示的延迟?或者,当您希望工具将真正的布局布线后延迟放入您的设计中以进行时序仿真时,会发生什么情况?您可能会发现由于仿真测试台或模型不佳,您已经失去了时间裕度。需要我说,由于您自己的仿真结构,不得不承认仿真中的时序失败会很尴尬吗?
有时需要使用多个 always 块——尤其是在为 DDR 设备建模时。
在当今的高速设备中,我经常发现需要多个 always 块,触发不同的条件,以捕获各种触发器并描述我想要的行为。例如,一个可能触发上升沿,另一个可能触发下降沿。这一切都很好,很好,并且对模拟(即测试台)逻辑有好处。虽然这在硬件中永远行不通,但它可以很容易地用于在仿真中准确地建模行为。
使用分配延迟仅对物理硬件延迟建模。
例如,如果某些事件会导致就绪线变低 50 微
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。