教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

第五章 综合的约束与优化(3)

来源:网络收集 时间:2026-04-29
导读: dc_shell> set_input_delay 20 -clock CLK DATA_IN dc_shell> set_output_delay 15 -clock CLK DATA_OUT 下面是一个加以约束的设计模块的实例:图5.5解释了设计模块my_block的时序要求,下面的命令行是用来定义这些

dc_shell> set_input_delay 20 -clock CLK DATA_IN dc_shell> set_output_delay 15 -clock CLK DATA_OUT

下面是一个加以约束的设计模块的实例:图5.5解释了设计模块my_block的时序要求,下面的命令行是用来定义这些时序要求的。

图5.5 my_block的时序要求

create_clock -period 20 -waveform {5 15} clka create_clock -period 30 -waveform {10 25} clkb set_input_delay 10.4 -clock clka in1

159

set_input_delay 6.4 -clock clkb -add_delay in1 set_output_delay 1.6 -clock clka -min out1 set_output_delay 4.8 -clock clka -max out1 5-3-1-3 指定组合路径延迟要求

对于不被时钟周期限制的完全的组合延迟,命令set_max_delay和set_min_delay定义指定路径的最小和最大延迟。

在HDL代码中产生异步逻辑,一种普通的方法就是对锁存器和触发器使用异步置位或复位。因为复位信号跨越几个模块,在顶层约束这个信号。比如,要对复位信号定义最大延迟为5,输入:

dc_shell> set_max_delay 5 -from RESET

对从IN1到OUT1的路径指定最小延迟为10,输入: dc_shell> set_min_delay 10 -from IN1 -to OUT1

用report_timing_requirements命令列出对你的设计所要求的最大和最小延迟。

5-3-1-4 指定时序异常

时序异常是对一个或更多的违反默认的单循环时序关系的路径指定时序关系。利用时

序异常来对那些不遵循默认的单循环行为的路径或异步路径加以约束或使其失去作用。指定众多的时序异常会增加编译时间。然而,很多设计需要许多的时序异常。

Design Compiler只承认有正确参考点的时序异常。

? 设计中的有效起点是指时序单元的主要的输入端口和时钟管脚。 ? 有效的结束点是指设计的主要输出端口和时序单元的数据管脚。

如果你指定了一个无效的参考点,Design Compiler不会发出警告信息。你必须用命令report_timing_requirements中的-ignored选项来查明被Design Compiler忽视的时序异常。

你可以利用时序异常命令来指定下列条件:

? 错误路径(False paths (set_false_path))

? 最小延迟要求(Minimum delay requirements (set_min_delay)) ? 最大延迟要求(Maximum delay requirements (set_max_delay)) ? 多循环路径(Multicycle paths (set_multicycle_path))

用report_timing_requirements命令列出设计中的时序异常。

1.指定错误路径

Design Compiler在时序报告中不报告错误路径,或在时序优化时不照顾它们。用命

令set_false_path指定错误路径。用这个命令来忽视那些非关键路径,它们可能掩盖其他一些在优化时必须考虑的路径;或者是那些在正常操作中从不会发生。

160

比如,图5.6显示了一个寄存器的外形,它从双向总线(DATA)进行读写。

图5.6 Configuration Register

这个电路有这些时序路径: 1. DATA to U1/D 2. RD to DATA

3. U1/G to CONFIG (with possible time borrowing at U1/D) 4. U1/G to DATA (with possible time borrowing at U1/D) 5. U1/G to U1/D (through DATA, with possible time borrowing)

前面四条路径都是有效的,而第五条是一条功能错误的路径,因为正常的操作不可能要求对寄存器同时进行读和写。在这个设计里,你可以用这个命令来使这条路径失效: dc_shell> set_false_path -from U1/G -to U1/D

利用reset_path命令和相同的选项取消set_false_path命令,输入: dc_shell> set_false_path -setup -from IN2 -to FF12/D dc_shell> reset_path -setup -from IN2 -to FF12/D

创建一条错误路径不同于使时序弧失效。使时序弧失效表示一条路径的中断。定义一

个错误路径并不中断路径,它只是阻止在优化时,这条路径被考虑。 2.指定最小和最大延迟要求

你可以用set_min_delay和set_max_delay来指定路径延迟要求,它们远比Design

Compiler根据时钟时序得到的保守。利用reset_path命令取消set_min_delay和set_max_delay命令。 (1)寄存器到寄存器的路径

Design Compiler利用下列方程式得到寄存器到寄存器路径的最小和最大路径延迟的约束:

min_delay = (T capture - T launch ) + hold max_delay = (T capture - T launch ) - setup

你可以利用set_min_delay和set_max_delay命令而不考虑得到的路径延迟(T capture –T launch)。

比如,假设你有一条路径,时间20时从一个寄存器开始,在时间35到达一个寄存器,此时是时钟的下一个有效沿:

161

dc_shell> create_clock -period 40 waveform {0 20} clk1 dc_shell> create_clock -period 40 -waveform {15 35} clk2

Design Compiler自动地得到一个最大路径延迟约束:(35-20)-(终点库的寄存器的建立时间)。指定一个最大路径延迟为10,输入: dc_shell> set_max_delay 10 -from reg1 -to reg2

Design Compiler以10-(终点库的寄存器的建立时间)来计算最大路径延迟约束,没有考虑最初得到的最大路径延迟约束。 (2)寄存器到端口的路径

Design Compiler利用下列方程式得到寄存器到端口路径的最小和最大路径延迟的约

束:

min_delay = period - output_delay max_delay = period - output_delay

如果你用set_min_delay或set_max_delay命令,这些命令中定义的值将代替约束计算中的周期值。比如,假设你有一个时间时钟周期为20的设计,输出OUTPORTA的输出延迟为5:

dc_shell> create_clock -period 20 CLK

dc_shell> set_output_delay 5 -clock CLK OUTPORTA

Design Compiler自动地得到最大路径延迟约束15(20-5)。指定你想要的最大路径延迟10,输入:

dc_shell> set_max_delay 10 -to OUTPORTA

Design Compiler计算最大路径延迟为5(10-5),没有考虑原先得到的最大路径延迟约束。 (3)异步路径

你也可以用set_max_delay和set_min_delay命令来约束穿越不同频率域的异步路径。 比如:

dc_shell>set_max_delay 17.1 \\-from find(clock, clk1) -to find(clock, clk2) dc_shell> set_max_delay 23.5 \\-from find(clock, clk2) -to find(clock, clk3) dc_shell> set_max_delay 31.6 \\-from find(clock, clk3) -to find(clock, clk1) (4)设置多循环路径

当有疑问的路径长于单个循环或数据并没有如期的在单个循环内,多循环路径条件是

适当的。用set_multicycle_path命令来指定Design Compiler使用的时钟循环的数目,来决定在特殊的终点什么时候需要数据。

你可以为建立和保持检测指定循环乘法器。如果你没有为命令set_multicycle_path默认情况下,在数据从起点开始,到终点下一个时钟的活跃沿检查建立(默认乘数为指定-setup或-hold选项,Design Compiler只将乘数值应用于建立检查。

1)。在数据建立后数据保持一个时钟循环,但在建立时的那个沿检测(默认乘数为0)。

162

…… 此处隐藏:2109字,全部文档内容请下载后查看。喜欢就下载吧 ……
第五章 综合的约束与优化(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/565731.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)