【Vivado】xdc约束文件编写

随手记录一下项目中学到的约束文件编写技巧。

时序约束

创建生成时钟

参考链接:
Vivado Design Suite Tcl Command Reference Guide (UG835)
Vivado Design Suite User Guide: Using Constraints (UG903)

时钟变换模块

通过Clocking Wizard IP创建的时钟(MMCM或PLL),系统会自动生成约束。由于项目布局布线后的结果中时序勉强收敛,因此我想不修改MMCM输出时钟频率的同时,手动修改约束,验证一下时序设计裕量。

create_generated_clock -name clk_low_freq -source [get_pins Classifier_hw_i/clk_wiz_1/clk_in1] -multiply_by 3 -divide_by 4 [get_pins Classifier_hw_i/clk_wiz_1/clk_out1] 

源时钟是200MHz,这里想将输出时钟约束到150MHz,因此通过 -multiply_by 和 -divide_by 组合实现。

需要注意的是,对于使用get_pins、get_ports还是get_nets来获取信号,可以参考FPGA时序约束之Tcl命令的对象及属性
以及官方文档UG835

get_*之间的区别

在本示例中,约束的对象是clk_wiz IP模块的输出,因此选择get_pins。在引脚名称中,Classifier_hw_i是bd的名字。可以在TCL窗口输入get_ports来验证是否能够正确获取到对应的引脚。

在TCL命令行进行get_pins

其它实现示例可以看官方文档。

扇出约束

参考链接:
Vivado Design Suite Properties Reference Guide (UG912)

在优化布局布线后的时序时发现,一些寄存器的扇出数过大。因此尝试通过约束限制特定端口的最大扇出。

set_property MAX_FANOUT 32 [get_nets -hier {IPs_match*}]

其中,IPs_match* 表示所有前缀为IPs_match的信号组。


(随缘更新中……)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值