RTL基本知识:惯性延迟和传输延迟

1 基本概念

在数字实现过程中,延迟一般有以下几种:

分布式延迟(Distributed Delays)

一般用来指定模块内部信号通过逻辑单元或者线网耗费的时间。

模块路径延迟(Module Path Delays)

模块路径一般指从源(输入端口或者输入输出端口)到目的(输出端口或者输入输出端口)的路径,模块路径延迟是信号从源传输到目的地所耗费的时间,即模块内部延迟。下图为模块路径延迟为10的示意图:

注意:模块路径延迟一般在“specify-endspecify”中指定。

互联线延迟(Interconnect Delays)

当两个模块通过线网连接时,信号从一个模块单元传递到另一个模块单元会耗费一定的时间,数据模块间的延迟,即互联线延迟。下图为互联线延迟为10的示意图:

2 延迟

在仿真过程中,经常会遇到传输延迟和惯性延迟,用来模拟实际的互联线延迟和模块间延迟。分布式延迟在仿真时一般都作为惯性延迟处理。

2.1 传输延迟

传输延迟一般为输入信号变化到对应输出信号变化经过的时间,不会对输入信号进行滤除处理,所以传输延迟是一种绝对延迟,这种延迟类似于物理传输线的延迟,在仿真中用于模拟连线延迟。如下图所示,输入一般不会被滤除。

2.2 惯性延迟

惯性延迟考虑了电路中存在大量的分布电容,信号在电路中传输存在对电容充放电效应,

当输入较小宽度的脉冲将会被滤除,即不允许所有宽度小于指定延迟的脉冲通过电路单元,那么能够让对应输出有变化的最小脉冲宽度即为惯性延迟,是所有的电子器件均存在的一种延迟特性,因此为了使器件对输入信号的变化产生响应,信号变化后要维持足够长的时间,在仿真过程中,该延迟用于模拟元件延迟。一般原语、门单元、开关单元、连续赋值等中的延迟在模拟时均为惯性延迟。

如下图所示,输入较小脉冲宽度的信号被滤除:

2.3 仿真延迟

在仿真中,如果在仿真的elaboration过程中没有显示指定延迟的类型,那么仿真器一般都会将代码中指定的延迟作为惯性延迟处理,即此时小于指定延迟宽度的脉冲将被滤除。为了说明不同延迟的仿真效果,此处以模块路径延迟为例进行仿真说明。

【示例】

仿真结果如下:

此例中,在elaboration过程中没有显示指定仿真延迟类型,一般都默认为惯性延迟,代码中标准门单元buf指定的延迟为5ns,根据惯性延迟的特点,当输入信号宽度小于指定的延迟时,该信号将不能通过该电路单元,所以上图中仅有信号宽度为5ns的信号有效通过了buf,其余信号均被屏蔽。

如果仿真过程中需要模拟传输延迟,需要在elaboration时指定相应的传输延迟参数,即使能传输延迟模拟功能,此时输入信号原则上都能通过电路单元。

【示例】

在仿真elaboration时,增加如下仿真参数:“+transport_path_delays +pulse_r/<滤除百分比> +pulse_e/<滤除百分比>”等可在仿真阶段实现传输延迟的模拟,并且配置不同的滤除百分比,输出的结果也会有差异,一般输出结果为三种情况:滤除、通过、不定态,如下图所示:

其中“+pulse_r”和“+pulse_e”后指定的参数表示允许通过和滤除的信号的宽度占指定延迟的百分比。例如,如果指定延迟为5ns,参数为“+pulse_r/40”和“+pulse_e/80”(其中的40和80为百分比),那么小于2ns(5x(40%))的信号将被滤除,大于等于4ns(5x(80%))的信号将可以通过,介于两者之间的信号将输出不定太,如下例中data_in的第一个脉冲信号小于2ns被滤除,不能输出至data_out。第二、三个脉冲信号宽度均大于或等于4ns,所以均有效输出,第四个脉冲宽度为3ns,介于2ns和4ns之间,所以不能被有效输出,此时输出为不定态。

注意:如果仅使用“+transport_path_delays”而不使用对脉冲宽度约束的参数(“+pulse_r/e”),那么仿真器将按照惯性延迟处理方式对输入信号进行处理,即小于指定延迟宽度的信号不能通过电路单元。同时在EDA工具中还有其他参数(“+pulse_r/e”与“+pulse_int__r/e”等),不同的参数将有不同的仿真效果,具体可参考相关EDA工具手册。

更多资讯,请关注下方二维码!

posted @ 2018-05-12 08:46  魏老师说IC  阅读(6948)  评论(0编辑  收藏  举报