问题描述:
Versal XPIO IOLOGIC 包含 IDDR、IFD、IDELAY、ODDR、OFD 和 ODELAY。
将多个时钟布线到 IOLOGIC 内时,需对 IOLOGIC 内的一个或多个时钟进行局部反相,Vivado 存在某个问题,可能导致对 IOLOGIC 内的时钟进行错误反相。
局部反相是在实现步骤期间确定的,因此该问题与设计运行有关。如果实现工具不使用 IOLOGIC 时钟的局部反相,那么不会出现此问题。
如果对 IOLOGIC 进行错误的局部反相编程,那么捕获数据的时钟沿与期望的时钟沿将相反,这可能导致数据时钟对齐错误。
此问题最早出现在 2021.1 版本中,但支持 Versal 系列的所有 Vivado 版本中都普遍存在。
解决方法:
您可运行此处提供的脚本来检查设计是否在 IOLOGIC 内存在错误的局部时钟反相编程。
source -notrace pre_bitream.tcl
如果发现问题,此脚本将自动纠正反相编程,并且应在生成器件镜像之前运行此脚本。
cells driven by XPIOLOGIC_X82Y2/GCLK_SIG_1_ have incorrect inversion in PDI inverting cloc k pins on cell rx_data_in found cell of type IDDRE1 flip IS_C_INVERTED flip IS_CB_INVERTED
如未找到任何问题,此脚本将无任何输出。
注释:应先运行时序分析,然后再应用此脚本。应先应用此脚本,然后再运行 pdi / write_device_image。
如果在应用此脚本后重新运行时序,那么在时序中将显示时钟路径内存在一个额外的反相器。这将导致时序分析错误。