设计咨询 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 类缓冲器与所有衍生产品)的设计中会出现错误的硬件功能性:IFDFDCE/FDPE/FDRE/FDSEIOB=TRUE)、IDDRE1
ISERDESE3
 

输出为三态时,硬件中会出现该问题。输入逻辑(IFDIDDRE1
ISERDESE3)数据将被输出逻辑(OFDODDRE1 OSERDESE3)错误地驱动,正确情况下应该由输入引脚的数据驱动。仿真过程中不会出现该问题。



在通过以下组件模式原语使用双向 I/O 缓冲器(IOBUF 类缓冲器与所有衍生产品)的设计中会出现布线错误:OFDFDCE/FDPE/FDRE/FDSEIOB=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 软件工具。