本示例描述了对设计中的部分时序例外进行处理的方式,如下图所示。设计已完全约束(clk
以及 clk
相关的输入/输出延迟已定义)。
图 1. 对应时序例外的完全约束设计示例
Report Exception(例外报告)命令的第一种工作模式为 report_exceptions
。
- 选择 (窗口 > 时序约束)。
- 在Timing Constraints窗口中,为设计添加以下时序例外:
set_multicycle_path 3 -from [get_cell int10_reg] -to [get_cell int20_reg]
id="ab439753">set_multicycle_path 4 -to [get_cell int20_reg] set_false_path -from [get_ports in6] -to [get_cell int20_reg] set_false_path -to [get_ports out5] set_false_path -to [get_cell int21_reg] set_false_path -from [get_ports in6] -to [get_ports out6] set_max_delay 5 -to [get_ports out6] set_min_delay 3 -from [get_cells int10_reg] -to [get_cell int20_reg]
Timing Constraints窗口会显示应用于设计的时序约束,如下图所示。
图 2. 显示时序约束变更的Timing Constraints窗口
下图显示了实际例外报告 (report_exceptions
)。
图 3. Report Exception
“Exceptions Report”(例外报告)包含以下信息:
- Position(位置)列指示约束位置编号。此位置编号与Timing Constraint窗口报告的位置相同(如前文中所示)。
-
From/Through/To列指示使用
-*from/-*through/-*to
命令行选项(包括这些选项的所有rise/fall
版本)所指定的模式或对象。未指定关联选项时,将显示星号。 -
Setup/Hold列指示约束适用于建立时间检查和/或保持时间检查。下表显示了Setup/Hold列的命名约定:
表 1. Setup/Hold列命令约定 简称 时序例外 cycles=
set_multicycle_path
false
set_false_path
max=
set_max_delay
max_dpo=
set_max_delay -datapath_only
min=
set_min_delay
clock_group=
set_clock_group
- 当约束的某一部分被另一个时序例外覆盖时,Status(状态)列将报告 1 条消息。下表显示了Status列的命名约定:
表 2. Status列命名约定 简称 时序例外 MCP 多周期路径 FP 伪路径 MXD 最大延迟 MND 最小延迟 CG 时钟组 注释: 仅当时钟组约束覆盖另一个时序例外时,才会在report_timing -ignored
命令的Status列中报告该时钟组。
本例中有 2 条有关被部分覆盖的约束的消息:
- 时序约束位置 5(
set_multicycle_path 4 -to [get_cell int20_reg]
,基于Timing Constraints窗口)的某些部分被多周期约束位置 4 (set_multicycle_path 3 -from [get_cell int10_reg] -to [get_cell int20_reg]
) 和伪路径约束位置 6 (set_false_path -from [get_ports in6] -to [get_cell int20_reg]
) 覆盖。 - 时序约束位置 10 (
set_max_delay 5 -to [get_ports out6]
) 的某些部分被伪路径位置 9 (set_false_path -from [get_ports in6] -to [get_ports out6]
) 覆盖。