AR# 75369

2020.1 Tactical patch - Vivado Timing & Constraints - Patch for multiple issues including incorrect auto-generated clock names, analysis difference and tool crash

Description

This Answer Record contains a patch for Vivado 2020.1 which resolves the following issues:

 

Issue 1:

When loading DCPs in the same Vivado version, the tool does not preserve the renamed clock and auto-generated clock names correctly, and as a result timing analysis is corrupted. 

This issue does not occur if the DCP is generated and opened in different Vivado versions.

Issue 2:

Timing result differences can occur between the in-memory design and the reloaded DCP when there are generated clocks defined on a hierarchical pin and it will block other clock propagation to all loading pins of the net.

If any loading pin is not blocked by the generated clock definition, then the issue will not be triggered.

Issue 3:

If a constraint has a collection which is a list before opt/place_design, and after opt/place_design, some replicated objects are added to the collection.
Lists of lists (for example: get_pins [list [list $pins]].) are not currently supported in Vivado 2020.1.
If the design is implemented with Vivado 2020.1 and the DCP is reloaded with the same Vivado 2020.1 , there is no issue.

The issue will be triggered if a different Vivado version is used between implementation and reloading the DCP.

In this case there will be some timing mismatches and warning messages generated when the checkpoint is reloaded due to some patterns not matching.

For example:

WARNING: [Vivado 12-1580] clock, cell, port or pin 'u_nic/u_kc50_nic_qdma_wrapper/u_qdma/inst/pcie4_ip_i/inst/user_reset_reg/PRE

Unknown macro: {u_nic/u_kc50_nic_qdma_wrapper/u_qdma/inst/pcie4_ip_i/inst/user_reset_reg_replica/PRE ... u_nic/u_kc50_nic_qdma_wrapper/u_qdma/inst/pcie4_ip_i/inst/user_reset_reg_replica_19/PRE}
' not found. [/auto/kc/kc_backend/kc50_00_01_100_0001/xdc/kc50_qdma_ip.xdc:436]

Issue 4:

Vivado crashes during the placer phase “Phase 1.3 Build Placer Netlist Model".

The stack will look similar to the following:

<VIVADO>/lib/lnx64.o/librdi_timing.so(Neptune::Timing::TmExcpManager::CollectNode
<VIVADO>/lib/lnx64.o/librdi_timing.so(Neptune::Timing::TmExcpManager::SetBoundary
<VIVADO>/lib/lnx64.o/librdi_timing.so(void* HCTThreadUtils::forEachStart

The crash is likely due to use of the following command:

‘set_false_path -through <hierarchicalPin>’.

Solution

This issues will be resolved for the 2020.2 release of Vivado.

A tactical patch has been created to avoid the issues in Vivado 2020.1. The patch must be applied before implementation to prevent all of the above issues.

Below are the instructions for the attached patch file.

METHOD 1: (Vivado 2014.4 and later only)

  1. Navigate to the $XILINX_VIVADO/patches directory (Linux) or C:\Xilinx\Vivado\<vivado_version>\patches (Windows) directory (create this directory if it does not exist)
  2. Extract the contents of the ".zip" archive to a directory starting with the name AR75369
    Note: most extraction tools will allow you to automatically create a directory the same name as the zip file
  3. Run Vivado software tools from the original install location.

METHOD 2:

Creating a separate directory containing patched files

  1. Extract the contents of the ".zip" archive to the desired patch directory location.
  2. Set the XILINX_PATH environment variable to point to this patch directory
     i.e. set XILINX_PATH=C:\XILINX_PATH\vivado-patch-AR75369\vivado\
  3. Run Vivado software tools from the original install location.

Attachments

Associated Attachments

Name File Size File Type
AR75369_vivado_2020_1_preliminary_rev1.zip 318 MB ZIP
AR# 75369
Date 08/26/2020
Status Active
Type Known Issues
Tools