前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >约束文件有哪些

约束文件有哪些

作者头像
Lauren的FPGA
发布2020-04-27 10:25:41
2K0
发布2020-04-27 10:25:41
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

对于一个完整的FPGA设计,既要有时序约束,也要有物理约束(例如:管脚分配与管脚电平设置)。Xilinx建议将这两类约束分开写在不同的约束文件中。此外,考虑到某些设计中可能会用到手工布局,从而会有相应的Floorplan约束(对应Pblock,可理解为面积约束)。同时,在大多数情形下都需要对FPGA设计进行调试,这样就会用到ILA,同时需要对相应的net设置MARK_DEBUG属性,这可理解为第三种约束即调试约束。因此一个完备的约束会包含时序约束、物理约束和调试约束,如下图所示。

对于约束文件,Vivado支持.xdc和.tcl两种格式。约束文件都有自己的属性,可在属性窗口中查看,也可通过下图示的Tcl脚本在Vivado Tcl Console中查看。

在这些属性中有一个需要关注的属性即USED_IN,如下图所示。图中显示其值为{synthesis, implementation},表示该约束文件在综合和实现阶段均有效。相应地,属性USED_IN_IMPLEMENTATION和USED_IN_SYNTHESIS属性值为1。可见对约束文件,可通过USED_IN属性设定其有效阶段。

另一个比较重要的属性是IS_ENABLED,如下图所示,用于ENABLE或DISABLE相应的约束文件,实际上就是管理约束文件是否使用。这个属性对于调式约束非常有用。当调试完毕,可直接将调试约束文件设置为不使用状态(在Sources窗口中显示为灰色)。如果调试约束与时序约束混合在一个文件中,调试结束就需要注释掉或直接删除相应的调试约束,操作起来不太方便。IS_ENABLED属性则避免了这种不便。

此外,Vivado允许用户创建不同的Design Runs,从而,对于不同的Design Run,用户可以使用不同的Constraint Set,如下图所示。这样的好处是可以根据Design Run的需求创建不同的约束。例如,Synth_1/Impl_1要求时钟频率为200MHz,而Synth_2/Impl_2要求时钟频率为300MHz,如果这两个Design Run的目标芯片一致,则可验证该设计的Fmax(最高时钟频率);如果目标芯片不一致,则可用于验证同一设计在不同芯片上所能达到的最高频率。

结论:

-约束文件= 时序约束 + 物理约束 + 调试约束

-通过属性可设定约束文件是否有效及其有效阶段

-Vivado允许用户创建多个Constraint Set

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

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

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

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