在开发过程中遇到了很多约束语句,整理出来分享,从每个约束语句的功能、使用场景、使用举例三个方面进行说明。
--->>>约束语句快速跳转目录
1. create_clock
功能:指定时钟的周期。
使用场景:当设计中使用时钟信号时,需要用该约束语句指定时钟的周期。
使用范例:
create_clock -name <name> -period <period> [options]
2. set_input_delay
功能:指定输入端口的延迟。
使用场景:当设计中有需要对输入端口信号进行延迟处理时,使用该约束语句。
使用范例:
set_input_delay -clock <clock_name> -max <max_delay> -min <min_delay> <port>
3. set_output_delay
功能:指定输出端口的延迟。
使用场景:当设计中有需要对输出端口信号进行延迟处理时,使用该约束语句。
使用范例:
set_output_delay -clock <clock_name> -max <max_delay> -min <min_delay> <port>
4. set_false_path
功能:将指定路径定义为假路径,禁止时序分析器考虑该路径上的延迟。
使用场景:当设计中有一些路径不需要进行时序分析时,需要使用该约束语句将路径定义为假路径,以提高时序分析的效率。
使用范例:
set_false_path -from <from> -to <to> [options]
5. set_max_delay
功能:用于限制信号在两个时钟域之间的最大延迟。
使用场景:当设计在不同时钟域之间传输信号时,需要使用该约束语句限制信号传输的最大延迟。
使用范例:
set_max_delay -from <port1> -to <port2> -max <delay_time>
6. set_min_delay
功能:用于限制信号在两个时钟域之间的最小延迟。
使用场景:当设计在不同时钟域之间传输信号时,需要使用该约束语句限制信号传输的最小延迟。
使用范例:
set_min_delay -from <port1> -to <port2> -min <delay_time>
7. set_multicycle_path
功能:用于指定多阶段路径。
使用场景:当设计中有需要指定多阶段路径时,使用该约束语句。
使用范例:
set_multicycle_path -setup <value> -hold <value> [-end_points <port_list>][path_expression]
8. set_false_path_group
功能:用于指定多个路径组成的假路径,起到批量设置假路径的作用。
使用场景:当设计中存在多条路径需要定义为假路径时,使用该约束语句。
使用范例:
set_false_path_group [-name <group_name>][options][path_expression]
9. set_clock_groups
功能:用于定义不同时钟域之间的相对关系。
使用场景:当设计中有多个时钟域之间需要定义相对关系时,使用该约束语句。
使用范例:
set_clock_groups -asynchronous [-group <clock_group1>] [-group <clock_group2>][options]
10. set_global_assignment
功能:用于定义全局约束属性,如芯片引脚等。
使用场景:当设计中有需要定义全局约束属性时,使用该约束语句。
使用范例:
set_global_assignment [-name <property_name>][-value <value>] [more_options]
11. set_input_jitter
功能:用于设置输入端口的抖动容忍范围。
使用场景:当设计中需要设置端口延时容忍范围时,使用该约束语句。
使用范例:
set_input_jitter -max <max_jitter> -min <-min_jitter> [options]
12. set_clock_uncertainty
功能:用于设置时钟的不确定度。
使用场景:当设计中需要设置时钟的不确定度时,使用该约束语句。
使用范例:
set_clock_uncertainty -setup <value> -hold <value> [options]
13. set_case_analysis
功能:用于启用或禁用case分支分析器。
使用场景:当设计中需要对case分支分析器进行设置时,使用该约束语句。
使用范例:
set_case_analysis [-blocks] [-bits] [-triangles] [-callstack] [-overflow] [-enable] [-disable] [options]
14. set_drive
功能:用于指定时钟或数据端口的驱动强度。
使用场景:当设计中需要对端口的驱动强度进行设置时,使用该约束语句。
使用范例:
set_drive <port_name> <drive_strength>
15. set_min_pulse_width
功能:用于限定输入端口的最小脉宽。
使用场景:当设计中需要对输入端口的脉宽进行限制时,使用该约束语句。
使用范例:
set_min_pulse_width -from <port1> -to <port2> -width <pulse_width>
16. set_max_skew
功能:用于限制时钟域之间的最大时钟偏差。
使用场景:当设计中需要限制时钟域之间的最大时钟偏差时,使用该约束语句。
使用范例:
set_max_skew <max_skew_value> -source <reg1> -destination <reg2>
17. set_min_skew
功能:用于限制时钟域之间的最小时钟偏差。
使用场景:当设计中需要限制时钟域之间的最小时钟偏差时,使用该约束语句。
使用范例:
set_min_skew <min_skew_value> -source <reg1> -destination <reg2>
18. set_false_path_from_to
功能:用于将指定路径定义为假路径。
使用场景:当设计中有该路径不需要进行时序分析时,使用该约束语句将路径定义为假路径,以提高时序分析的效率。
使用范例:
set_false_path_from_to -from <port1> -to <port2>
19. set_max_fanout
功能:用于限制指定信号的最大负载数。
使用场景:当设计中有一些信号需要限制最大的驱动负载数时,使用该约束语句。
使用范例:
set_max_fanout -from <port1> -through <port2> -to <port3> -max <max_fanout>
20. set_max_transition
功能:用于限制信号的最大过渡时间。
使用场景:当设计中需要对信号的过渡时间进行限制时,使用该约束语句。
使用范例:
set_max_transition <max_time> -from <port1> -to <port2>
21. set_max_delay_paths
功能:为指定路径组设置最大延迟限制。
使用场景:当设计中需要为一组路径设置最大延迟时,使用该约束语句。
使用范例:
set_max_delay_paths -max <max_delay> -from <port1> -to <port2> [-through <port_list>]
22. set_source_latency
功能:用于指定信号源的延迟。
使用场景:当设计中需要定义信号源的延迟时,使用该约束语句。
使用范例:
set_source_latency -net <net> -latency <latency>
23. set_destination_latency
功能:用于指定信号目的地的延迟。
使用场景:当设计中需要定义信号目的地的延迟时,使用该约束语句。
使用范例:
set_destination_latency -net <net> -latency <latency>
24. set_data_check
功能:用于检查信号的值是否满足指定的条件。
使用场景:当设计中需要对某些信号进行检查,以验证其值是否满足一定条件时,使用该约束语句。
使用范例:
set_data_check -rule <check rule> -relation <relation> <port>
25. set_dont_touch
功能:指定某些信号不参与综合或布局布线。
使用场景:当设计中有一些信号不需要进行综合和布局布线时,使用该约束语句。
使用范例:
set_dont_touch -nets <net_list> [-objects <design_object>]
功能:用于限制时钟域之间的最大时钟回路时间。
使用场景:当设计中需要限制时钟域之间的最大时钟回路时间时,使用该约束语句。
使用范例:
set_max_round_trip <max_time> -source <reg1> -destination <reg2>