设计咨询 2017.1 战术补丁,针对使用组件模式原语的 Vivado 双向逻辑问题(IOBUF 与 IDDRE1、ISERDESE3、ODDRE1、OSERDESE3 或 FDCE/FDPE/FDRE/FDSE 配合使用,IOB=TRUE)
发布时间:2018/3/8
描述
说明
该问题会影响在 Vivado 2017.1 的双向模式下使用组件模式逻辑的 UltraScale 和 UltraScale+ 设计。
对于这样的设计,应使用战术补丁确保正确的硬件功能性。不应用该补丁,设计可能会遇到硬件功能性及布线问题。
症状
该问题有两个不同的症状。
硬件错误功能
布线故障
确认
在通过以下组件模式原语使用双向 I/O 缓冲器(IOBUF 类缓冲器与所有衍生产品)的设计中会出现错误的硬件功能性:IFD(FDCE/FDPE/FDRE/FDSE,IOB=TRUE)、IDDRE1 和
ISERDESE3。
输出为三态时,硬件中会出现该问题。输入逻辑(IFD、IDDRE1
和 ISERDESE3)数据将被输出逻辑(OFD、ODDRE1 和 OSERDESE3)错误地驱动,正确情况下应该由输入引脚的数据驱动。仿真过程中不会出现该问题。
在通过以下组件模式原语使用双向 I/O 缓冲器(IOBUF 类缓冲器与所有衍生产品)的设计中会出现布线错误:OFD(FDCE/FDPE/FDRE/FDSE,IOB=TRUE)、ODDRE1 和
OSERDESE3。
Vivado 布线错误信息如下:
Checking all reachable nodes within 5
hops of driver and load
Unroute Type 1 : Site pin does not reach interconnect
fabric
Type 1 : HPIOB.I->SLICEL.F5
-----Num Open nets: 1
-----Representative Net: Net[12] spi_din_io_IOBUF_inst/O
-----IOB_X2Y244/I -> SLICE_X96Y270/F5
-----Driver Term: spi_din_io_IOBUF_inst/IBUFCTRL_INST/O Load Term [49]:
uart_rx_o_OBUF_inst_i_1/I0
Driver Pin does not reach Interconnect fabric within 5 hops.
Expansion wavefront from Driver was blocked by locked nodes at level: 1
Phase 3.1 Initial Routing Verification | Checksum: 1d0be91f0
...
Phase 8 Verifying routed nets
CRITICAL WARNING: [Route 35-54] Net: spi_din_io_IOBUF_inst/O is not completely
routed.
Resolution: Run report_route_status for more information.
解决方案
该问题将在 2017.2 版本中得到修复。已经创建了一个战术补丁,用于纠正 2017.1 版本的这种行为
不使用该补丁,就会出现布线及功能问题。
使用该补丁,将纠正这一布线及功能问题。
请注意:如果使用不打补丁的 Vivado 2017.1 创建设计检查点,这可能已经包含了错误的 BITSLICE 站点编程。
使用该补丁,通过重新综合可纠正 BITSLICE 站点编程。
安装及使用信息:
方法 1:
引导至 $XILINX_VIVADO/patches directory(如果没有该目录,就需要创建)
将打包文档的内容解压缩至以 AR69152 名字开头的目录下
注: 大多数提取工具都支持自动创建与打包文件同名的目录。
从原始安装位置运行 Vivado 软件工具。
方法 2:
请为该补丁文件创建一个单独的目录
将打包文档的内容解压缩至所需的补丁目录位置。
将随点变化的 MYVIVADO 环境设置为该补丁目录下的
Vivado 目录:
例如:
set MYVIVADO=C:\MYVIVADO\vivado-patch-AR69152\vivado\
从原始安装位置运行 Vivado 软件工具。