3.6 创建实现约束 |
|
本节将介绍实现约束的原理和具体的实现过程。作为基本设计流程的一部分,本节只介绍为设计添加引脚约束的过程,对于时序等高级约束等问题,将在后面章节进行详细说明。
综合过程成功完成后,就会生成综合后的网表。设计者就可以将综合后的网表,以及XDC文件或者Tcl脚本一起加载到存储器中,用于后续的实现过程。
在一些情况下,综合后网表的对象名字和详细描述后设计中对象的名字并不相同。如果出现这种情况,设计者必须使用正确的名字重新创建约束,并将其只保存在实现过程所使用到的XDC文件。
一旦Vivado工具可以正确加载所有的XDC文件,设计者就可以运行时序分析,用于:
(1)添加缺失的约束。
(2)添加时序异常。
(3)识别在设计中由于长路径导致大的冲突,并且修改RTL描述。
可以通过I/O规划器实现约束引脚位置。I/O规划器允许设计者查看晶圆和封装视图,这样设计者就可以理解I/O组合逻辑之间的关系。
图3.29和图3.30分别给出了I/O规划器工具中器件视图和器件封装。
图3.29 器件视图
图3.30 器件封装
(1)从图中可以看到,通过图形显示了封装引脚、晶圆焊盘和I/O组。
(2)可以在这两个视图中的一个分配I/O端口。
器件视图中,引脚之间的不同颜色区域标识了I/O组;同时,显示了差分对。从图上可以看到时钟使能引脚、VCC、GND,以及没有连接的引脚,通过不同的形状标识这些引脚。
封装引脚视图的功能表现在以下几个方面。
(1)显示了I/O封装规范和分配状态,允许设计者查看Trace延迟、引脚类型、电压标准和差分对。
(2)在一个I/O组内,可以以一个组或者列表的形式显示引脚。
(3)当拖拽的时候,图标显示引脚和I/O组布局状态。
在该设计中,使用Nexys4开发板上的两个开关作为a和b的逻辑输入量,以及开发板上的6个LED灯作为z0~z5的逻辑输出量。
本节给出的引脚约束参考了Xilinx大学计划提供的Nexys4板子的设计图纸和相关资料。
本节将通过I/O规划器图形化界面添加实现约束。添加实现约束条件的步骤如下所示。
第一步 :在Vivado源文件窗口下,单击鼠标右键,如图3.31所示,出现浮动菜单。执行菜单命令【Add Sources…】,或者【Edit Constraints Sets…】(当选择该菜单命令时,跳过下面第二步的对话框,直接进入第三步)。
图3.31 添加约束文件选项
第二步 :弹出“Add Sources”对话框。在该对话框下,选择“Add or Create Constraints”选项。
第三步 :单击【Next】按钮,弹出“Add or Create Constraints”(添加或者创建约束)对话框。在该对话框下,单击【Create File…】按钮。
第四步 :如图3.32所示,弹出“Create Constraints File”(创建约束文件)对话框。按下面参数设置:
图3.32 添加约束文件对话框界面
(1)File type:XDC。
(2)File name:top。
(3)File location:Local to Project。
第五步 :单击【OK】按钮,返回添加或者创建约束对话框。可以看到添加了名字为“top.XDC”的约束文件。
Vivado中约束文件名字的后缀名是“.xdc”,用于取代ISE集成设计环境中的“.ucf”文件。
第六步 :单击【Finish】按钮。如图3.33所示,可以看到添加了“top.xdc”文件。
图3.33 添加约束文件后的源文件窗口
第七步 :如图3.34所示,在下拉框中选择“I/O Planning”(I/O规划)。
图3.34 选择“I/O Planning”
需要执行完前面的综合,并且在综合完后,选择“Open Synthesized Design”。当打开综合后的设计时,才能出现“I/O Planning”选项。
第八步 :如图3.35所示,在I/O规划器底部出现“I/O Ports”(I/O端口)对话框。该对话框中:
图3.35 “I/O Ports”对话框
(1)显示了工程中定义的所有端口。
(2)将总线分组到可扩展的文件夹。
(3)将端口显示为一组总线或者列表。
(4)图标标识I/O端口的方向和状态。
第九步 :按表3.2所示,在Site标题下输入每个逻辑端口在FPGA上的引脚位置,以及在I/O Std(I/O标准)标题下,为每个逻辑端口定义其I/O电气标准。
表3.2 逻辑端口的I/O约束
第十步 :输入完成后,在如图3.35所示的对话框内,单击鼠标右键,出现浮动菜单,执行菜单命令【Export I/O Ports…】。
第十一步 :如图3.36所示,弹出“Export I/O Ports”(导出I/O端口)对话框。选中XDC,并将导出路径指向当前工程的“top.xdc”。此外,读者也可以通过菜单和【Ctrl+S】按键保存该文件。
图3.36 “Export I/O Ports”对话框
(1)对于VHDL语言的设计流程,路径指向:
(2)对于Verilog语言的设计流程,路径指向:
第十二步 :单击【OK】按钮。
第十三步 :在源文件窗口,双击“top.xdc”文件,打开约束文件,下面给出了约束代码清单,见代码清单3-5。
代码清单3-5 top.xdc文件
第十四步 :如图3.34所示,将选项再次切换到“Default Layout”。
除了通过GUI设置实现约束外,设计者可以在XDC文件中按照语法规则输入实现约束条件。下面给出用于I/O约束的XDC语法格式。
语法格式为:
语法格式为:
语法格式为:
语法格式为:
语法格式为:
语法格式为:
对于其他I/O约束命令,读者可以参考Vivado提供的XDC语言模板。