为什么无法在Verilog中综合延迟?


8

我一直读到RTL代码中声明的延迟永远无法合成。它们仅用于仿真目的,现代综合工具只会忽略代码中的延迟声明。

例如:x = #10 y;将被x = y;综合工具视为。

无法合成任何硬件描述语言(例如,VHDL,Verilog或Sytem-Verilog)中的延迟声明的原因是什么?


1
这是一个交叉发布的问题,因为它介于SO和ElectronicsSE的重叠之间。
pre_randomize 2014年

Answers:


14

合成意味着以某种方式将您描述的内容(在此处的Verilog中)转换为真实的硬件

现在,在您的Verilog中,您说有50ns的延迟。好的,但是现在,就硬件而言,您如何将其转换为实际的硬件?

如果使用的是FPGA,如何利用可用的FPGA资源(LUT,寄存器,Ram元件等)来建立50ns的延迟?通过添加其他路由延迟?想象您指定1s延迟!如果不使用芯片的所有路由功能,这是不可能的(可能还不够)。您的设计无法安装。与ASIC相同。您将使用80%的硅表面来增加一条线的延迟。

预期的工作方式是使用同步设计,并使用计数器或其他技术自己实现延迟。但是延迟必须是该元素时钟的倍数。

通常,您会发现诸如“ 10 ns之后”之类的东西是传播延迟。在Verilog模拟器上进行理想的模拟时,当输入发生更改时,输出才发生。这是不现实的,并且没有描述实际硬件的工作方式。为了解决这个问题,您可以在多长时间后更改输出:使用delay声明。


2
我会指出,“因为它会占用整个芯片”,并不是真正无法合成某些东西的原因,而是无法将某些东西拟合放置在定义范围内的原因。
W5VO 2014年

@ W5VO你是正确的。它旨在显示一些荒谬的东西,可以找到另一种方式。已更正。
Blup1980 2014年

5

SO移植我的答案。重点讨论了为什么合成绝对延迟不切实际

在综合时钟树时,综合工具通过添加延迟来平衡这些时间树,以便所有节点都同时接收时钟,因此看起来综合工具确实具有增加延迟的能力。

但是,当制造ASIC时,速度会有差异,在较高的水平下,可以将其视为慢速,典型和快速。实际上,这些角落有数百种变化形式,其中硅中的某些类型的设备运行很快,而其他类型的设备运行缓慢。

硅的这些角还具有额定温度,最坏的情况可能是+ 140C快硅和-40C慢硅。在这种情况下,通过缓冲区的延迟变化可能为1ns至30ns。

要将其带回Verilog(如果可以#10综合的话),您实际上会得到155 + -145,即10ns至300ns,如果您还设计了某些东西#20作为同一接口或控件结构的一部分,那么范围将在20ns至600ns之间。因此,整个事情对于您的设计而言并非真正有效。你没有得到确切的#10#20那个被指定。

时钟树的设计方式可以限制最大和最小延迟,从而使时钟树上的所有节点都可以相对缩放。从来没有给他们一个严格的规则,它必须是#10ns,因为在组合电路中这在物理上是不可能保证的。


3

唯一的绝对时间单位是来自外部时钟。任意延迟来自何处-从时钟产生什么样的离散数字逻辑等效物?

如果您需要可综合的延迟,则需要使用外部时钟输入和适当的状态机/计数器,它们将针对特定的时钟周期数进行计数。


这个念头只是我的脑海。为什么我们必须依靠时钟来产生延迟?为什么不能将延迟合成为具有Vdd的简单RC电路?
阿南德2014年

1
综合通常将值填充到查找表和路由元素中。我想创建一个现场可编程的RC电路要困难得多,尤其是不受温度影响太大的电路。在相同的时钟沿上同步所有内容比希望精确的传播时间容易得多。
maxy 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.