I've been battling the tool for a week now, and I'm very close to having something that works the way I want it to... but still not quite there.
I'm writing a TCL script to control a complex project's creation. There are several IP blocks that are created "on the fly" by the script (if the result XCI is not found first). There is a second TCL script called to create even more IP blocks. Then I add the files for the project's glue logic and top level (add_files -norecurse <PATH>/<FILE>). The constraints are then added to the project similarly. Then I issue a call to update the compile order of the project and launch the synthesis run(s).
Then I call a TCL script that is designed to overwrite project parameters (for timestamping and version control). I can see these parameters make it into the toolset properly... when I open the GUI after a run I see them all correctly defined in the generics/parameters section of the tool control panel. However, the parameter values are not propagated through the design when I run the implementation in my TCL script. I have to run the full build again in the GUI to apply the parameter overwrite values properly in the RTL.
If I try to apply the parameter overwrites before I launch synthesis, every IP block's synthesis run fails because they all try to apply the parameter re-defines and can't find the module hierarchy specified in the parameter paths. Because... I only want the parameter redefine script to apply to the entire project scoped properly from the top level... not each individual IP block's synthesis. But if I wait until after synthesis the parameter overwrites aren't applied at all (even though the tool knows about them?).
Is there a way to get the synthesis runs of the IP blocks to execute before I run my parameter redefinition script, then once those are all done make another call to run the "top" level synthesis with the completed IP blocks and new parameter values included and handled properly?
Thanks in advance for your time and attention to my problem!