走进Prime Time系列 - PT的Timing exception 03

本文详细介绍了如何使用TimingException进行时序分析,包括set_false_path移除不必要的路径,set_multicycle_path允许超时钟周期路径,set_max_delay和set_min_delay设置最大/小延迟。此外,还讲解了report_exceptions用于验证时序异常,以及reset_path用于清除约束。重点强调了合法的起点和终点选择,以及何时使用set_disable_timing。文章提醒避免过度使用through选项,并给出了设置false_path的例子。最后讨论了multicyclepath的重要性,特别是在处理加法器等无法在一个时钟周期完成的运算时。


本篇文章,介绍的是timing exception

Using Timing Exception

有一些path不存在,也不需要PT去计算,因为我们会告诉工具不要去计算这些path。

关于Timing Exception 主要有以下命令:
set_false_path 移除掉不用PT去分析的path
set_multicycle_path 允许超过一个clock的path
set_max_delay 允许最大delay
set_min_delay 允许最小delay

report_exceptions 验证在design中的任何timing exceptions
reset_path restore default timing constraints on sepcified paths 清除所有的constraint

timing exception place from 和to 在deseign中的timing points
合法的start 点和end 点有:
start点:
输入端口和寄存器的clk pin
end 点:
输出端口和寄存器的data pin
start点和end点同时指定:
clock object(直接指定时钟)

另外还可以指定中间点 ,通过-through 选项,但是该选项非常浪费PT的计算时间。

在这里插入图片描述
如上图所示,对于第一个Q2_reg[*]/CP 假如说有32个reg,那么就是
Q2_reg[1] 到所有的fan_out、以及Q2_reg[2]到所有的fan_o

<think>嗯,用户问的是Synopsys Primetime中check_timing命令的包含选项的使用和例子。首先,我需要回忆一下Primetime的基本知识。Primetime是用于静态时序分析的工具,check_timing命令用来检查设计中的时序问题,比如没有约束的时钟、缺失的输入延迟或输出延迟等。用户提到的include选项,可能是指如何指定特定的路径或模块进行检查,而不是全部设计。 接下来,我得确认check_timing的具体语法和选项。根据记忆,check_timing有一些选项,比如-from, -to, -through,这些用来指定检查的路径范围。还有-include选项,可能用于包含某些特定的对象,比如时钟或者端口。需要查证一下文档,确保这些选项的正确性。 用户可能希望知道如何应用这些选项来定位问题,比如只检查某个时钟域,或者排除某些已经验证的部分。例如,使用-include_clock可以只检查特定时钟相关的路径,或者使用-include_inputs检查所有输入端口是否有延迟约束。 然后,要举一些实际的例子,比如检查某个模块中的路径,或者某个时钟域下的时序问题。同时,要说明这些选项如何帮助缩小检查范围,提高效率。例如,在大型设计中,全盘检查可能耗时,通过include选项可以聚焦于关键部分。 还需要注意用户提到的参考引用,特别是引用[1]中的测试覆盖率要求,这可能和时序检查的完整性有关。不过用户的问题集中在check_timing命令的选项使用,所以重点还是放在命令的具体应用上。 最后,确保回答结构清晰,分点说明选项的用法,给出示例,并且可能的相关问题,帮助用户进一步学习。比如,如何结合其他命令使用,或者如何解释报告中的常见问题。</think>### Synopsys PrimeTime check_timing 命令选项详解 PrimeTime 是业界标准的静态时序分析工具,`check_timing` 命令用于检查设计中是否存在未约束的时序路径、缺失的时钟定义或其他时序约束漏洞。以下是 `-include` 相关选项的典型用法及实例。 --- #### 一、`check_timing` 核心选项 1. **`-include` 选项** - **功能**:指定需要检查的特定对象类型或路径范围,支持层次化筛选。 - **语法**: ```tcl check_timing -include {object_type | path_type} ``` - **示例**: ```tcl check_timing -include {clocks inputs} # 仅检查时钟和输入端口的约束完整性 ``` 2. **`-from`/`-to`/`-through` 路径过滤** - **功能**:限定检查的起点、终点或经过节点。 - **示例**: ```tcl check_timing -from [get_pins "submodule_A/CLK"] -to [get_ports OUT*] ``` 3. **`-verbose` 详细报告** - **功能**:输出更详细的检查结果,包括具体路径和约束缺失位置。 - **示例**: ```tcl check_timing -include {unconstrained_endpoints} -verbose ``` --- #### 二、典型应用场景 1. **检查未约束的输入端口** ```tcl check_timing -include {inputs} -exclude_clock_network ``` - **输出示例**: ``` Warning: Input port 'top/IN_DATA' has no input delay specified. [PT-004532] ``` 2. **验证时钟覆盖范围** ```tcl check_timing -include {clocks} -clock [get_clocks SYS_CLK] ``` - **输出示例**: ``` Info: Clock 'SYS_CLK' covers 95% of sequential elements. [PT-004567] ``` 3. **定位组合逻辑路径问题** ```tcl check_timing -include {combinational_paths} -from [get_pins MUX1/SEL] -through [get_nets net_123] ``` --- #### 三、常见问题解析 1. **未约束路径(Unconstrained Paths)** - **原因**:缺少 `set_input_delay`/`set_output_delay` 或时钟定义。 - **修复**: ```tcl set_input_delay -clock SYS_CLK 2.5 [get_ports IN_DATA] ``` 2. **多时钟域交叉(Clock Domain Crossing)** - **检测方法**: ```tcl check_timing -include {clock_crossing} -clock {CLK1 CLK2} ``` - **约束示例**: ```tcl set_false_path -from [get_clocks CLK1] -to [get_clocks CLK2] ``` --- #### 四、进阶用法 1. **脚本自动化检查** ```tcl set check_result [check_timing -include {all}] if {[regexp "Error" $check_result]} { report_constraint -all_violators > timing_violators.rpt } ``` 2. **与 `report_timing` 联动** ```tcl check_timing -include {no_input_delay} report_timing -from [all_inputs] -delay_type max ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值