首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

fpga/asic input_delay和output_delay约束

fpga/asic input_delay和output_delay约束

刚开始做fpga的时候对于input delay和outputdelay的约束始终搞不清楚,后来发现原来其实是受了它的字面意思的误导而已.其实inputdelay的定义是通过对端芯片的一些输出延时定义的.而outputdealy是通过对端芯片的输入定义的.这点往往迷惑了很多人.下面是从一个文章中看到的定义,感觉解释的比较清楚,希望对大家有所帮助.
输入延时的概念可用图4-3 来解释。
在图4-3 中,假设时钟周期为Tc,外部逻辑中,触发器的传输延时为Td,组合逻辑M 的
延时为TM,待综合的逻辑中,组合逻辑N 的延时为TN,触发器的建立时间为TS。则有:
Tc = Td + TM + TN + Ts
即:
TN + Ts = Tc – ( Td + TM )
当系统时钟设置完毕后,Tc 已经确定,对待综合模块的输入部分加以约束(即设定TN+Ts
的值),可以通过设定Td + TM 来实现。这里的Td + TM 就是DC 定义的(对于待综合模块的)
输入延时。若外部逻辑是寄存器直接输出,则TM = 0,输入延时就是外部逻辑触发器的延时,
一般为1ns 或更小。

输出延时的概念可以用图4-5 来说明。
在图4-5 中,假设时钟周期为Tc,外部逻辑中,触发器的建立时间为TS,组合逻辑M 的
延时为TM,待综合的逻辑中,组合逻辑N 的延时为TN,触发器的传输延时为Td。则有:
Tc = Td + TN + TM + Ts
即:
Td + TN = Tc – (TM + Ts )
当系统时钟设置完毕后,Tc 已经确定,对待综合模块的输出部分加以约束(即设定Td+TN
的值),可以通过设定TM + Ts 来实现。这里的TM + Ts 就是DC 定义的(对于待综合模块的)
输出延时。若待综合模块是寄存器直接输出,则TN = 0,又由于触发器的传输延时(Td)基本固定,
所以待综合模块的输出部分可以不必约束,既可以不设输出延时。
在DC 中,可以使用set_output_delay 命令来设置输出延时(该命令对当前设计有效),
返回列表