Actually I'm migrating some mature projects from Xilinx ISE to Xilinx PlanAhead. I need to take advantage of TCL scripting and partitioning of PlanAhead.
This ISE projects are under version control in a SubVersion repository, so I need to define the files that must be under version control but in PlanAhead projects.
On one hand, this question talks about the files needed to put under version control to exactly re-create the implementation results. Even in PlanAhead 13.2 exist the command "File->Archive Project…" that save the sources and other project and option files in a ZIP archive, allowing us identify the files that must be under version control. This is the first choice.
But on the other hand, it is not clear that use this collection of files is the right way to manage a version control for a PlanAhead project. This xilinx forum conversation talk about using a tcl script to re-create the full project, but this script must be maintained apart when a new change is introduced in the PA project
Vivado (son of PlanAhead) have the XAPP1165 application note that talk about version control and recommend put the re-creation TCL script under version control, but Vivado can generate automatically this TCL script.
I would to know which is the best way to version control PlanAhead projects. Identifying needed files or maintaining a re-creation TCL script?
Thank you very much for your responses. Best regards.
Best Answer
My personal workflow (I mention planAhead, but vivado is similar), with goal to add as little as possible to source-control:
Then, I add a script to create the project in source-control:
If you organize your sources files appropriately, the script should need a minimal amount of lines and not need to change when you add source files. Since the script is in source-control, it should stay in sync anyways (you do have to maintain it, since I expect you will use the GUI in your everyday use).
You should be able to start from there and add what you need. If you are not aware, most of what you do in planAhead GUI is a TCL command. You can see what commands were executed by going File->Open Journal.