微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于set_input_delay和set_output_delay

关于set_input_delay和set_output_delay

时间:10-02 整理:3721RD 点击:
问个问题,set_input_delay到底是输入数据相对于时钟到达输入管脚的时延,还是输入数据相对于时钟到达设计内部第一级寄存器数据段口的时间呢。
相应的set_output_delay是输出数据相对于时钟到达输出管脚的时延,还是其他?
看书上说,对于一个30ns周期的时钟,如果set_input_delay - max 23 -clock CLK {datain}就是说输入数据在时钟上升沿后23开始出现有效数据,这样看来set_input_delay的含义是上述的后者。但是我个人感觉这样的说法很站不住脚,原因是,在做设计的时候,如果输入端口接的是组合逻辑,而不是时序逻辑,那内部组合逻辑的延时信息不应当算作输入的数据延时吧,这样的说法感觉不妥。
另外,书上针对30ns周期的时钟,还说set_output_delay 19 -clock CLK {data_out}是说输出数据在时钟沿后11ns数据有效。这个又怎么理解呢?

同问,期待回答

学习一下!

set_input_delay 和set_output_delay都是对外部的延时信息的描述, DC根据这些描述对该模块进行优化。
set_input_delay是说该输入信号是在时钟沿后多长时间到达模块的port上的 。
set_output_delay是说该输出信号在后级模块中需要在时钟沿之前提前多长时间准备好。

4楼正解


    set_input_delay听懂了,但是set_output_delay还是有点迷惑。
   set_output_delay是说该输出信号在后级模块中需要在时钟沿之前提前多长时间准备好。这个准备是在后级模块的输入管脚处的准备时间,还是只在本级模块的输出管脚的时间呢?   set_input_delay按照你的解释是相对于时钟到达输入管脚的时间。

可以结合DC的UG看看图你就明白了,4楼正解

楼上的你到底懂不懂?懂就把道理说明白,不懂别装懂。

同意4楼。
set_input_delay比较好理解。set_output_delay比较容易搞错。一般第一印象会是相对时钟往后的输出延迟,其实却是相对下一个时钟往前算的。

DC的UG其实说得不清楚,建议lz用一下Timequest的向导功能,里面有图形化显示。
这东西靠文字说不清楚。

山鸡哥~

input_delay 和output_delay其实也是将边界的port转换成register-to-register来进行setup/hold 检查,只不过是input或者output 端口将其从Q到D的延时隔开了,input_delay相当于外部的一个寄存器的Q端数据到MY_DESIGN的输入端的时间,output_delay类似。

12楼说得不错。其实很简单,简化成reg2reg的这种电路就会明白了。output_delay 可以直接转化成setup time 和 hold time。



大侠你好,output delay 包括了后一级触发器的Tsetup+Clock的Uncertainty+输出PORT后面的组合逻辑(如果有组合逻辑的话)或者线的延时,这样理解对吗?output delay 到底是由哪些延时组成的?求解答   

我的理解是set_input_delay和set_output_delay都是描述你的外围设计的时序特性的,认为驱动这些信号的时钟与当前设计是同步的,其中set_input_delay是说外部电路驱动某输入信号到你的设计的端口需要多少时间,那对应的一个周期去掉这部分之后就是留给你的输入信号的margin了。对于输出信号, 你可同理推之,set_output_delay的意思就是从你的设计的输出端口到它的fanout逻辑使用的时间,那一个周期减少这部分时间,就是你的设计驱动这些输出信号的margin了。不知道讲得明白不?如果还不理解,请参考下Altera的TimeQuest中关于timing的说明,当然DC的教程里也有,本论坛上就有许多。

四楼正解

15楼正解!


问一下,模块的port ? 比如对于verilog来说,一个always可以算一个模块,是吧?然后一个 .v 文件中可以有多个模块,这个port指的是哪个模块呢。第一个吗?


这个外部是什么意思呢? 比如我三个 .v 文件 a.v  b.v  c.v 然后有一个 top.v 文件,将这三个 .v 文件调用起来,你说的 my_design就是 我这里说的 top.v 是吗? 那 也就是 top.v 之外的信号 到我的 top.v 中第一个port的时间 是吗?这个外部指的是哪里啊


外围设计(外围驱动电路)指的是什么 比如产生时钟的模块 就算是外围设计啦 是吧;那么 比如我三个 .v 文件 a.v  b.v  c.v 然后有一个 top.v 文件,将这三个 .v 文件调用起来,所说的 “你的设计端口” 就是 我这里说的 top.v 的第一个端口 是吗?



   一个module是一个模块。一个always是一个process。



    DC中会指定current_design,应该是根据current_design指定的模块来作为边界的


你好啊,接着问下,比如我三个 .v 文件 a.v  b.v  c.v 然后有一个 top.v 文件,我current_design top 以后,即是说top作为边界了,但是top里有三个模块,外部设计先接入哪个模块呢? 哪个算第一个呢


呃,应该是同时的吧。布局布线以后大概会有skew,综合的时候应该不考虑这些吧?
纯属个人意见


哦 多谢啦



   只有design的input和output才能称为port,子模块叫pin。

要搞清这个问题,首先要理解约束input delay和output delay的目的。
约束input和output delay是因为你的设计不知道外围设计的时序条件,因此你要告诉外围设计的时序条件,以便你的设计和外围设计都满足时序要求。
input delay是外部信号基于同一时钟源信号到达输入引脚的时间,时钟周期减去input delay就是你的设计预留的margin;
output delay 是输出端口基于同一时钟源到外围设计下一级寄存器的时间,时钟周期减去output delay就是你的设计预留的margin;



   我也是这么理解的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top