Electrical – How to constrain an imported netlist in Vivado

fpgasynthesistiming-analysisvivadoxilinx

I have a pre-compiled netlist (created by Xilinx ISE 14.7), which is imported into Vivado 2015.4 and used in synthesis to assemble my complete design. Vivado reports unconstrained paths for the imported netlist.

  • According to the Vivado Constraint Guide, Vivado does not apply xdc constraints (Xilinx design constraints) to netlists. This feature will be implemented in the future.

  • Setting an xcf constraint file (XST constraint file), while synthesizing the netlist with XST does not help. The xcf is read and processed, but is seems that Vivado does not apply annotated/embedded constraints from ngc files.

  • Storing a ncf files (netlist constraint file) besides the ngc file does not help, because Vivado does not parse ucf style constraint files. (ISE reads ncf files and applies them to netlists, if the have the same name and location as the ngc files.)

  • I cannot synthesize the netlist with Vivido because there are bugs in Vivado, which prevent me from changing the tool chain.

How can I apply the required timing constrains?


Notes:

  • I can open the inner netlist in Vivado and see its hierarchy.
  • I can rerun XST synthesis to recreate the ngc netlist.

Best Answer

One solution is to write an XDC file including the required constraints and attach it to the entity name of the imported netlist using the XDC file property SCOPED_TO_REF. (Attaching it to a specific instance with SCOPED_TO_CELLS should also work.)

When using the SCOPED_TO_REF property, it must be set to the original (top-level) entity named stored within the netlist. Attaching it to the entity name of the black-box does not work (*). Moreover, the XDC file must be marked as to use "only for implementation", otherwise the synthesis step complains a critical warning. The setting "only for implementation" already includes the post-synthesis timing analysis.

(*) When attaching it to the entity name of the black-box the synthesis step will be satisfied. But, it cannot attach the timing constraints to the netlist anyway.