为什么即使是一些简单的任务,也要在Verilog中加入延迟?

时间:2013-11-15 06:06:37

标签: verilog

我发现在一些Verilog源代码中通常会有很多延迟,即使是在一些简单的语句中,如下所示。这种延迟的根本原因是什么?

cmd <= #`DEL 32`b0

3 个答案:

答案 0 :(得分:3)

您的代码不是VHDL或我所知道的任何其他语言。据推测它可能是Verilog。在正常使用中,您不会在任何一种语言中执行大量手动延迟规范,并且具有延迟的源代码由写入所需延迟的工具自动生成(但通常不会出现这样的延迟)。但是,在较旧的Verilog源代码中,您经常会看到大量的“#0”延迟规范,因为调度模型在历史上已被破坏。

答案 1 :(得分:1)

通常用于门级仿真,您需要关注信号通过数字逻辑传播所需的时间,以便跟踪设计中的时序问题。

为了为每个操作/声明选择正确的值,您需要有关目标设备的时序信息,通常来自数据表或实验室测量。

如果您不知道或无法访问此信息,则您的模型中可能不需要此级别的详细信息。使用除实际值以外的任何东西可能会适得其反,因为当你在寻找时间问题时,你最终会得到误报和漏报。

答案 2 :(得分:1)

对于门级验证,我希望已经对用于合成的库进行了表征,并在基本级组件中添加了适当的延迟。在模拟中将使用哪个而不是RTL。在Verilog中,不需要为RTL添加这样的延迟。

可以将延迟添加到测试平台组件以模拟片外延迟和接口,或者不同合成段之间的延迟。要计算正确的延迟,需要了解最终布局,轨道长度等。外部接口将指定最大和最小延迟。