示例:完成时序分析后报告时序例外 - 2023.2 简体中文

Vivado Design Suite 用户指南: 设计分析与收敛技巧 (UG906)

Document ID
UG906
Release Date
2023-10-19
Version
2023.2 简体中文

本示例描述了对设计中的部分时序例外进行处理的方式,如下图所示。设计已完全约束(clk 以及 clk 相关的输入/输出延迟已定义)。

图 1. 对应时序例外的完全约束设计示例

Report Exception(例外报告)命令的第一种工作模式为 report_exceptions

  1. 选择Window > Timing Constraints(窗口 > 时序约束)。
  2. 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]) 覆盖。