关于verilog语句中的延时
能在硬件描述语言中指定呢。都说延时是不可以综合的,只能用于仿真,但是仿真的意义不就在于检验电
路设计的正确性吗,如果说延时对实际生成的硬件来说是没有影响的,那么延时岂不是失去了存在的意义
。
我起初认为verilog中的延时仅仅是为了描述testbench,但似乎这种观点并不是完全正确,希望过路人能
解释一下verilog语言中的延时的意义和用途。小弟在此不胜感激。
在一些大的设计中,由于仿真工具串行执行的局限性,有时候仿真会有问题,需要加入延时使仿真正确。
以前的书都说,综合时延时语句是不考虑的;但是,我听工程师说现在延时也可以综合了。who knows?
是呀,我以前也认为延时是不可综合的,但一篇英文文章中,详细的讲述了什么样的延时可以综合,什么样的延时不可以综合,搞得我更不明白了。
延时可以用模块代替,对模块比较了解!
真是比较高深啊
verilog中的延时是不可综合的 一般用于仿真
综合后的网表中会包含延时信息 这样可以在后仿真时正确描述实际电路的行为
仿真方面二楼说的没问题。
而综合方面肯定不可综合的。
在综合的时候,就是相当于一种注释。注意要用其他方式实现。如调实例化模块,设置时序约束等。
反正光靠编程写语言文件是没法综合的。
同问 对这个问题也不清楚 希望有高人解答
Gate level 起作用的, 插入buffer (Inverter)
不懂...
我怎么越看越不懂了
没听说 《= Delay 还能综合的;
只是给仿真用的。
要想综合延时,估计要用特定的module或语句告诉综合器,用buffer做出延时来。
delay is used only in testbench.
Any delay is simply ignored by design compiler.
你看的一定是学术方面的。商业化的不支持
望高人多多指点!
延时的作用有很多:
(1) Stimulus中时序的控制。例如时钟生成,等待,模拟input/output延迟, etc.
(2) 描述模块(模拟部分或者外部模块)的行为模型。例如PLL,POR,AD/DA,Memory等等。
(3) 控制事件的顺序,特别是在monitor和reporter里面。
(4) 带时序模型和RTL混仿时在interface处加延迟来解决setup/hold问题。
。
仿真用
不可综合的。只是simulation可用。
我在公司听到的两个说法:一是synopsis 的VCS跑仿真,不加延时的话,在某些时候会工作异常。不过,我没碰到过。二是模拟真实器件的setup time。
我的理解:如果不加延时,从波形上看,在clk的上升沿去采数据时,如果数据是从‘0’到‘1’的跳变(或者相反),此时clk上升沿是与数据的跳变沿对齐的。理论上采集的是‘0’,但这样比较费解,因为毕竟是数据的跳变沿,为什么采集的不是‘1’呢。如果加了延时,clk的上升沿会与数据的跳变沿错开,逻辑清晰。而且这样也确实类似于setup time。
插入反相器链就是最基本的延时的只不过这个延时不可能是任意值
对于Verilog中的延时,在做P&R后仿真还是很有用的,一般而言tb给的时钟和数据都是理想的,但是时钟是会插时钟树以保证到达各个寄存器的时钟边沿基本对齐,但是给入的数据确是理想无延迟的,此时做仿真就会出现setup vialotion那么这时人为加入延时就可以解决这个问题
你们想把偶搞蒙啊!呼呼!
真正的硬件和加上SDF的后仿真的波形都是有延迟的,时钟上升沿与信号的跳变通常会分开一段时间,这段时间就是setup time和hold time;如果在rtl设计中不加延迟,时钟边沿与信号的跳变没有时间差,波形看起来与真实的硬件行为不一样,为了在rtl设计中描述真实的硬件行为,才需要手动添加延迟。而这样添加延迟是不可综合的。
楼上说的不错
我也有点困惑,看看,学习学习
RTL可综合设计,一般是不需要在其中加入延时的,及时加入,通常综合工具也会忽略。
但延时在构造仿真用例时很有用。毕竟,实际电路是存在延时的。
BTW:因为verilog simulator工具对某些特殊RTL设计风格支持不好,仿真出错,所以在极特殊情况下,需要在RTL设计里加入一些延时来绕过simulator的问题。
要多理解下
时延只有综合仿真里考虑
先下些资料看看
用于仿真,不可综合。
在Xilinx的一些IP(如GTP)中,会自动地产生100ps左右的延迟供user进行行为级仿真。
