从vivado(Xilinx)谈约束文件

对于一个完整的FPGA设计,既要有时序约束,也要有物理约束(例如:管脚分配与管脚电平设置)。Xilinx建议将这两类约束分开写在不同的约束文件中。
此外,考虑到某些设计中可能会用到手工布局,从而会有相应的Floorplan约束(对应Pblock,可理解为面积约束)。
同时,在大多数情形下都需要对FPGA设计进行调试,这样就会用到ILA(集成逻辑分析仪,chipscope_pro),同时需要对相应的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

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值