Answers:
合成意味着以某种方式将您描述的内容(在此处的Verilog中)转换为真实的硬件。
现在,在您的Verilog中,您说有50ns的延迟。好的,但是现在,就硬件而言,您如何将其转换为实际的硬件?
如果使用的是FPGA,如何利用可用的FPGA资源(LUT,寄存器,Ram元件等)来建立50ns的延迟?通过添加其他路由延迟?想象您指定1s延迟!如果不使用芯片的所有路由功能,这是不可能的(可能还不够)。您的设计无法安装。与ASIC相同。您将使用80%的硅表面来增加一条线的延迟。
预期的工作方式是使用同步设计,并使用计数器或其他技术自己实现延迟。但是延迟必须是该元素时钟的倍数。
通常,您会发现诸如“ 10 ns之后”之类的东西是传播延迟。在Verilog模拟器上进行理想的模拟时,当输入发生更改时,输出才发生。这是不现实的,并且没有描述实际硬件的工作方式。为了解决这个问题,您可以在多长时间后更改输出:使用delay声明。
从SO移植我的答案。重点讨论了为什么合成绝对延迟不切实际
在综合时钟树时,综合工具通过添加延迟来平衡这些时间树,以便所有节点都同时接收时钟,因此看起来综合工具确实具有增加延迟的能力。
但是,当制造ASIC时,速度会有差异,在较高的水平下,可以将其视为慢速,典型和快速。实际上,这些角落有数百种变化形式,其中硅中的某些类型的设备运行很快,而其他类型的设备运行缓慢。
硅的这些角还具有额定温度,最坏的情况可能是+ 140C快硅和-40C慢硅。在这种情况下,通过缓冲区的延迟变化可能为1ns至30ns。
要将其带回Verilog(如果可以#10
综合的话),您实际上会得到155 + -145,即10ns至300ns,如果您还设计了某些东西#20
作为同一接口或控件结构的一部分,那么范围将在20ns至600ns之间。因此,整个事情对于您的设计而言并非真正有效。你没有得到确切的#10
和#20
那个被指定。
时钟树的设计方式可以限制最大和最小延迟,从而使时钟树上的所有节点都可以相对缩放。从来没有给他们一个严格的规则,它必须是#10ns,因为在组合电路中这在物理上是不可能保证的。
唯一的绝对时间单位是来自外部时钟。任意延迟来自何处-从时钟产生什么样的离散数字逻辑等效物?
如果您需要可综合的延迟,则需要使用外部时钟输入和适当的状态机/计数器,它们将针对特定的时钟周期数进行计数。