FYI: I am posting this for someone who emailed me, as they are currently unable to make an account. However, hopefully they will be able to read this.
Is there a way to overwrite or change the default options for “VivadoPostRouteOpt” when building assemblies?
I have come across a problem using the PhysOptDesign tool post route when building an assembly. Specifically, when I enable “VivadoPostRouteOpt” in the assembly Makefile I do not see the same behaviour as when running “phys_opt_design” in Vivado manually on the post route design checkpoint.
I am using Vivado 2019.2, OpenCPI 2.4.1 on CentOS7, although this has also been confirmed in 2.4.6.
I am using the PhysOptDesign tool in the Vivado GUI to meet timing for a design which has a very small setup slack violation (TNS = -0.0016ns, WNS = -0.0008ns). The tool is able to optimise the netlist to solve this very small violation.
The Makefile “opencpi/runtime/hdl-support/xilinx/vivado.mk” sets a default option of “-hold_fix”. Xilinx documentation p.1094 describes this as “Performs optimisations to insert data path delay to fix hold time violations”, and as an option which attempts to improve the slack of high hold violators, which in other Xilinx documentation is described as > 0.4ns. From this, it can be seen why the tool when used through the OpenCPI build process, was not providing the expected result – I do not have a problem with hold slack, rather a very small setup slack violation.
In the Xilinx documentation for phys_opt_design, the “-hold_fix” option is described as optional, and as such it would seem that it should also be optional in “post_route_phys_opt” options.
I have found no other way to overwrite the “-hold_fix” option, other than using the ‘sed’ tool to remove the default option in vivado.mk.