通过前面的学习,我们已经对zynq系列的pl和ps部分已经有了相当多的了解。其中有关约束的部分我们曾经提到过但是没有重点关注。约束可以添加特定的信息到你的设计,并在综合工具和实现工具中可以得到实现。最简单的约束例子就是对操作时钟和引脚的约束。另外一种类型的约束可以实现设计所用逻辑所在的位置。
实现axi dma核的资源原来为粉红色部分
约束可以分为两部分:那些用于综合和实现部分的例如时序约束和仅在实现部分有效的例如管脚约束。
我们所使用的约束是根据sdc设计标准来进行制定的。
由于它作为xilinx的特定约束文件,所以简称为xdc而不是sdc。
当我们声明约束时应该按照如下顺序:
? 时序约束—时序关系需要正确的约束
? 时序例外—我们首先定义了时序之间的正确关系,现在我们来定义这些约束的例外,例如多周期路径。但不能定义标准以外的时序例外。
? 实现约束—那些在布局布线时的约束.这些约束用于实现期望的结果(例如管脚约束)。
通常,一个设计包括许多约束文件,一般分为两类,一类为时序约束,另一类为实现约束。
两种约束都默认作用于综合和实现。而且综合之前也是可读的,用于综合和实现,或者只作用于实现。你可以通过选择来指定约束文件的作用范围,如下图所示。
vivado设计流程通常是基于ip的。ip模块通常也带有相关的约束文件。由于有着用户各种各样和工具本身生成的约束文件,所以我们需要知道这些约束文件的优先级以更好的对设计进行约束。
默认情况下,用户制定的约束文件会作用于ip生成的约束文件。但是,也是可以改变那些可编写的约束文件的顺序。类似与设置综合或者实现的选项。我们可以选择约束文件的执行顺序。优先级可以选择如下:
? first: 首先执行这里的约束文件,优先级最高
? default: 按照正常顺序执行约束文件,优先级一般
? last: 最后执行约束文件,优先级最低
在后续的博客教程中,我们可以学到更多的如何创建和验证约束文件的内容。在下一期博客中,我们会重点关注我们第一类约束:时序约束,解释它是什么,和如何使用vivado去创建一个时序约束。
C语言开发中可能会用到的GNU
夺得多项第一!问界M7冬测成绩大翻身?低温仍是纯电车的痛
云和数据促创新 中兴通讯GoldenDB亮相2020数据技术嘉年华
智能手机外观趋势:从华为P10、小米6、魅蓝E2衍生话题!
目前出现人工智能专业人才紧缺现状,人才培养体系出炉
Adam Taylor玩转MicroZed系列69:关于Zynq的约束简介
CPLD的串口通信设计
接在220V交流电的指示灯,串联多大的电阻都会烧?
Python应用与优化所必备的6个基本库
MAX1562, MAX1562H, MAX1563应用电路
allegro推出首款完全集成的高灵敏度电流传感器 适用于电流小于5A的应用
华为品牌价值位列全球第40名 中国手机向高端市场发起进攻
三防漆自动涂覆工艺的常见问题及解决方法
工信部出台PCB新规 将于2月1日起开始施行
智能网络必须针对任务关键型环境而发展
中芯国际与台积电的差距在哪
CES Asia首日:凯迪拉克超级智能驾驶系统上海发布,各大车企争奇斗艳!
台媒:联发科5G芯片打入三星供应链
受MLCC涨价影响,MOSFET芯片厂商也涨了
《自动化学报》—多Agent深度强化学习综述