xlinx开发实践过程中,常用的约束语句

在开发过程中遇到了很多约束语句,整理出来分享,从每个约束语句的功能、使用场景、使用举例三个方面进行说明。

--->>>约束语句快速跳转目录

1. create_clock

2. set_input_delay

3. set_output_delay

4. set_false_path

5. set_max_delay

 

6. set_min_delay

7. set_multicycle_path

8. set_false_path_group

9. set_clock_groups

10. set_global_assignment

11. set_input_jitter

12. set_clock_uncertainty

 

13. set_case_analysis

14. set_drive

15. set_min_pulse_width

16. set_max_skew

17. set_min_skew

18. set_false_path_from_to

19. set_max_fanout

20. set_max_transition

21. set_max_delay_paths

22. set_source_latency

 

23. set_destination_latency

24. set_data_check

25. set_dont_touch

26. set_max_round_trip

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>

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机探索者bea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值