当前位置: 首页 > news >正文

【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的信号组。


(随缘更新中……)

http://www.lryc.cn/news/497206.html

相关文章:

  • Redis使用场景-缓存-缓存雪崩
  • 概率论相关知识随记
  • 【PlantUML系列】序列图(二)
  • WPF+MVVM案例实战与特效(三十四)- 日志管理:使用 log4net 实现高效日志记录
  • 前端测试框架 jasmine 的使用
  • Qwen2-VL视觉大模型微调实战:LaTex公式OCR识别任务(完整代码)
  • 「Mac玩转仓颉内测版42」小学奥数篇5 - 圆和矩形的面积计算
  • Groom Blender to UE5
  • 开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型
  • 第七十六条:努力保持故障的原子性
  • Word分栏后出现空白页解决方法
  • 基于HTML和CSS的校园网页设计与实现
  • 【算法day7】字符串:反转与替换
  • 分布式存储厂商
  • 合合信息扫描全能王线下体验活动:科技与人文的完美交融
  • 单链表在Go语言中的实现与操作
  • 网关整合sentinel无法读取nacos配置问题分析
  • 简化XPath表达式的方法与实践
  • 【文件下载】接口传递文件成功和失败时,前端的处理方式
  • html+css网页设计马林旅行社移动端4个页面
  • 视频 的 音频通道提取 以及 视频转URL 的在线工具!
  • 容易被遗忘的测试用例
  • uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(2)
  • 统计中间件稳定性指标
  • 移动端使用REM插件postcss之postcss-px2rem
  • FPGA Xilinx维特比译码器实现卷积码译码
  • hive 行转列
  • Vue中使用ECharts图表中的阈值标记(附源码)
  • 【特征融合】融合空间域和频率域提升边缘检测能力
  • 深入理解AVL树:结构、旋转及C++实现