I/O限制
I/O约束配置:
•端口
•连接到端口的单元典型限制包括:
•I/O标准
•I/O位置
Vivado设计套件支持许多与集成软件相同的I/O限制环境(ISE)设计套件。以下I/O属性列表并非详尽无遗。
•有关I/O属性的完整列表、有关I/O端口和I/O单元属性的更多信息,和正确语法的编码示例,请参阅《Vivado Design Suite属性参考指南》(UG912)。
注意:除非另有说明,否则所有特性都应用于端口对象。
•有关这些属性背后的应用程序和方法的更多信息,请参阅设备SelectIO™文档,例如7系列FPGA SelectIO资源用户指南(UG471)。
•DRIVE:设置输出缓冲区驱动强度(mA),仅适用于某些I/O标准。
•IOSDARD:设置I/O标准。
•SLEW:设置设备输出的转换速率(转换速率)行为。
•IN_TERM:设置输入端口的输入端接电阻配置。
•DIFF_TERM:打开或关闭诸如IBUFDS_DIFF_OUT。
•KEEPER:在三态输出或双向端口上应用弱驱动程序以保留其不被驱动时的值。
•PULLTYPE:在三态输出或双向输出上应用弱逻辑低电平或高电平端口以防止其浮动。
•DCI_CASCADE:定义一组主库和从库。DCI参考电压连锁从主银行到奴隶。在IOBANK对象上设置DCI_CASACDE。
•INTERNAL_VREF:释放I/O组的VREF引脚,并使用内部生成的VREF相反在IOBANK对象上设置INTERNAL_VREF
•IODELAY_GROUP:使用IDELAYCTRL将一组IDELAY和IODELAY单元格分组为允许在设计中自动复制和放置IDELAYCTRL。
•IOB:告诉放置器尝试将FF放置在I/O逻辑中,而不是结构切片中。此属性必须分配给寄存器而不是端口。
重要!ISE设计套件和Vivado设计套件之间存在显著差异在IOB的处理中。Vivado工具允许在端口和寄存器单元上设置IOB连接到端口。如果在端口及其寄存器上设置了冲突的值,则寄存器上的值占上风。Vivado工具仅使用TRUE和FALSE值。FORCE值解释为TRUE,并且忽略值AUTO。与ISE不同,如果IOB true的设置无法兑现,Vivado工具会生成严重警告,而不是错误。
•IOB_TRI_REG:用于AMD UltraScale中的HDIO+™ 设备。告诉放置者尝试放置FF驱动I/O逻辑中的HDIO组IOB上的三态信号,而不是结构切片。这属性必须分配给寄存器,而不是分配给端口。
放置约束
放置约束应用于单元,以控制它们在设备中的位置。Vivado集成设计环境(IDE)支持许多与
集成软件环境(ISE)设计套件和PlanAhead™ 工具
•LUTNM:应用于两个LUT的唯一字符串名称,以控制它们在单个LUT上的位置地点与HLUTNM不同,LUTNM可用于组合属于不同的LUT分层单元格。
•HLUTNM:应用于同一层次结构中的两个LUT的唯一字符串名称,以控制它们放置在单个LUT位点上。在多次实例化的单元格中使用HLUTNM。
•禁止:禁止放置在现场。
•PBLOCK:连接到逻辑块,将它们约束到设备中的物理区域。PBLOCK是只读单元格属性,是单元格所在的PBLOCK的名称分配。
只有使用XDC Tcl命令才能更改单元Pblock成员身份add_cells_to_pblock和remove_cells_from_block。
•PACKAGE_PIN:指定设计端口在目标设备包引脚上的位置。
•LOC:将一个逻辑元素从网表放置到设备上的一个站点。
•BEL:将网表中的逻辑元素放置到设备切片内的特定BEL。有关更多信息,请参阅:
•第7章:XDC优先级
•第9章:定义相对放置的宏
放置类型
工具中有两种类型的放置:
•固定安置
•未固定放置
固定安置
固定放置是用户通过以下方式之一指定的放置:
•手动放置
•XDC约束
•在内存中加载的设计单元对象上使用IS_LOC_FIXED或IS_BEL_FIXED。
未固定的放置
非固定放置是由实施工具执行的放置。通过设置如果位置固定,则实现无法在下一个过程中移动受约束的单元格迭代或增量运行期间。固定位置保存在XDC文件中显示为简单的LOC或BEL约束。
•IS_LOC_FIXED:将LOC约束从未固定提升为固定。
•IS_BEL_FIXED:将BEL约束从未固定提升为固定。
放置约束示例
放置约束示例一
将块RAM定位在RAMB18_X0Y10并固定其位置。
放置约束示例二
将LUT放置在切片内的C5LUT BEL位置,并固定其BEL分配。
放置约束示例三
在ILOGIC单元中定位输入总线寄存器,以缩短输入延迟
放置约束示例四
将两个小LUT组合为一个LUT6_2,该LUT6_2同时使用O5和O6输出。
放置约束示例五
防止放置器使用块RAM的第一列。
% set_property PROHIBIT TRUE [get_sites {RAMB18_X0Y* RAMB36_X0Y*}]
放置约束示例六
防止放置程序使用时钟区域X0Y0。
放置约束示例七
防止放置器使用SLR0。