前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA时序约束理论篇之xdc约束优先级

FPGA时序约束理论篇之xdc约束优先级

作者头像
猫叔Rex
发布2020-06-30 14:33:24
1.2K0
发布2020-06-30 14:33:24
举报
文章被收录于专栏:科学计算科学计算

xdc约束优先级

  在xdc文件中,按约束的先后顺序依次被执行,因此,针对同一个时钟的不同约束,只有最后一条约束生效。

  虽然执行顺序是从前到后,但优先级却不同;就像四则运算一样,+-x÷都是按照从左到右的顺序执行,但x÷的优先级比+-要高。

时序例外的优先级从高到低为:

  1. Clock Groups (set_clock_groups)
  2. False Path (set_false_path)
  3. Maximum Delay Path (set_max_delay) and Minimum Delay Path (set_min_delay)
  4. Multicycle Paths (set_multicycle_path)

set_bus_skew约束并不影响上述优先级且不与上述约束冲突。原因在于set_bus_skew并不是某条路径上的约束,而是路径与路径之间的约束。

  对于同样的约束,定义的越精细,优先级越高。各对象的约束优先级从高到低为:

  1. ports->pins->cells
  2. clocks。

  路径声明的优先级从高到低为:

  1. -from -through -to
  2. -from -to
  3. -from -through
  4. -from
  5. -through -to
  6. -to
  7. -through

优先考虑对象,再考虑路径。

  Example1:

代码语言:javascript
复制
set_max_delay 12 -from [get_clocks clk1] -to [get_clocks clk2]
set_max_delay 15 -from [get_clocks clk1]

该约束中,第一条约束会覆盖第二条约束。

  Example2:

代码语言:javascript
复制
set_max_delay 12 -from [get_cells inst0] -to [get_cells inst1]
set_max_delay 15 -from [get_clocks clk1] -through [get_pins hier0/p0] -to
[get_cells inst1]

该约束中,第一条约束会覆盖第二条约束。

  Example3:

代码语言:javascript
复制
set_max_delay 4 -through [get_pins inst0/I0]
set_max_delay 5 -through [get_pins inst0/I0] -through [get_pins inst1/I3]

这个约束中,两条都会存在,这也使得时序收敛的难度更大,因为这两条语句合并成了:

代码语言:javascript
复制
set_max_delay 4 -through [get_pins inst0/I0] -through [get_pins inst1/I3]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 傅里叶的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • xdc约束优先级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档