Vhdl 为什么不能在verilog中合成延迟?

Vhdl 为什么不能在verilog中合成延迟?,vhdl,verilog,system-verilog,asic,vlsi,Vhdl,Verilog,System Verilog,Asic,Vlsi,我一直读到RTL代码中声明的延迟永远无法合成。它们仅用于模拟目的,现代合成工具将忽略代码中的延迟声明 例如:x=#10y将被视为x=y由合成工具生成 有人能解释一下为什么不能合成任何硬件描述语言(即VHDL、Verilog或Sytem Verilog)中的延迟声明的原因吗?在Verilog中,我们可以暗示改变时钟边缘值的逻辑,这将合成触发器。我们可以暗示非时钟布尔逻辑,它综合到组合逻辑,只是一堆and和OR 合成时钟树时,合成工具通过添加延迟来平衡这些,以便所有节点同时接收时钟,因此合成工具似乎

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

例如:
x=#10y将被视为
x=y由合成工具生成


有人能解释一下为什么不能合成任何硬件描述语言(即VHDL、Verilog或Sytem Verilog)中的延迟声明的原因吗?

在Verilog中,我们可以暗示改变时钟边缘值的逻辑,这将合成触发器。我们可以暗示非时钟布尔逻辑,它综合到组合逻辑,只是一堆and和OR

合成时钟树时,合成工具通过添加延迟来平衡这些,以便所有节点同时接收时钟,因此合成工具似乎确实能够添加延迟

然而,当ASIC制造时,速度存在差异,在高水平上,可以被视为缓慢、典型和快速。在实践中,这些角落有数百种变化,其中某些类型的硅器件运行速度快,而另一些运行速度慢

硅的这些角也有一个温度等级,最坏的情况可能是+140C快硅和-40C慢硅。在这种情况下,通过缓冲器的延迟变化可能是1ns到30ns

如果
#10
是可合成的,那么要把这一点带回到Verilog,实际上你会得到155+-145个ie 10ns到300ns,如果你还设计了
#20
作为同一接口或控制结构的一部分,它的范围将是20ns到600ns。因此,整件事对你的设计来说并不是真的有效


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

没有什么东西是永远不能合成的。如果您可以编写可以在硬件上编译和执行的代码,那么就可以将其合成为硬件。这只是合成工具供应商选择解释什么的问题。过去有一些行为合成工具在知道时钟周期为100时进行了解释

assign #120 A = B * C;
表示结果A将出现在下一个时钟周期中。但这些工具已经不存在了。这种方法的一个大问题是,您不知道这些延迟是假设还是需求


按照大多数合成工具的编写方式,所有计时信息都是与您的Verilog描述分开指定的。仅从Verilog代码中提取描述的功能方面。从一个单独的文件中获取时钟和输入/输出要求的计时信息要比分析测试台容易得多。

这是一个介于SO和Electronicse之间的过程。你希望它们合成什么?@mishr我希望它们合成成一个延迟生成硬件。@AnandVHDL/Verilog提供延迟来模拟每个组件(例如,门)的固有延迟,而不是相反。你所说的“延迟生成硬件”的效用是什么?