recreate_vna_pcie.tcl 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. #*****************************************************************************************
  2. # Vivado (TM) v2024.1 (64-bit)
  3. #
  4. # recreate_vna_pcie.tcl: Tcl script for re-creating project 'VNA_PCIE_PROJ'
  5. #
  6. # Generated by Vivado on Wed Oct 09 10:32:15 +0700 2024
  7. # IP Build 5075265 on Wed May 22 21:45:21 MDT 2024
  8. #
  9. # This file contains the Vivado Tcl commands for re-creating the project to the state*
  10. # when this script was generated. In order to re-create the project, please source this
  11. # file in the Vivado Tcl Shell.
  12. #
  13. # * Note that the runs in the created project will be configured the same way as the
  14. # original project, however they will not be launched automatically. To regenerate the
  15. # run results please launch the synthesis/implementation runs as needed.
  16. #
  17. #*****************************************************************************************
  18. # NOTE: In order to use this script for source control purposes, please make sure that the
  19. # following files are added to the source control system:-
  20. #
  21. # 1. This project restoration tcl script (recreate_vna_pcie.tcl) that was generated.
  22. #
  23. # 2. The following source(s) files that were local or imported into the original project.
  24. # (Please see the '$orig_proj_dir' and '$origin_dir' variable setting below at the start of the script)
  25. #
  26. # "c:/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/pcie1234/pcie1234.xci"
  27. # "c:/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/ClkPllSysTo125/ClkPllSysTo125.xci"
  28. #
  29. # 3. The following remote source files that were added to the original project:-
  30. #
  31. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/ActivePortSelector.v"
  32. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/AdcCalibration.v"
  33. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/ComplPrng.v"
  34. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/CordicNco.v"
  35. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/CordicRotation.v"
  36. # "C:/VNA_PCIE_REPO/src/src/DitherGen/DitherGenv2.v"
  37. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/DspPipeline.v"
  38. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/EP_MEM.v"
  39. # "C:/VNA_PCIE_REPO/src/src/Math/FpCustomMultiplier.v"
  40. # "C:/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControl.v"
  41. # "C:/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControlWrapper.v"
  42. # "C:/VNA_PCIE_REPO/src/src/InitRst/InitRst.v"
  43. # "C:/VNA_PCIE_REPO/src/src/Top/IntermediateLogic.v"
  44. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/InternalDsp.v"
  45. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/MeasCtrlModule.v"
  46. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/MeasStartEventGen.v"
  47. # "C:/VNA_PCIE_REPO/src/src/Math/MultModule.v"
  48. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/Mux.v"
  49. # "C:/VNA_PCIE_REPO/src/src/Math/MyIntToFp.v"
  50. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/NcoRstGen.v"
  51. # "C:/VNA_PCIE_REPO/src/src/GainOverloadControl/OverloadDetect.v"
  52. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/PGenRstGenerator.v"
  53. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO.v"
  54. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP.v"
  55. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP_MEM_ACCESS.v"
  56. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO_RX_ENGINE.v"
  57. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TO_CTRL.v"
  58. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TX_ENGINE.v"
  59. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/PulseGen.v"
  60. # "C:/VNA_PCIE_REPO/src/src/RegMap/RegMap.v"
  61. # "C:/VNA_PCIE_REPO/src/src/Top/S5443Top.v"
  62. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/SampleStrobeGenRstDemux.v"
  63. # "C:/VNA_PCIE_REPO/src/src/Math/SimpleMult.v"
  64. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/StartAfterGainSel.v"
  65. # "C:/VNA_PCIE_REPO/src/src/Math/SumAcc.v"
  66. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/TrigInt2Mux.v"
  67. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/WinParameters.v"
  68. # "C:/VNA_PCIE_REPO/src/src/InternalDsp/Win_calc.v"
  69. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_pipe_clock.v"
  70. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_support.v"
  71. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie_app_7x.v"
  72. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_ep_7x.v"
  73. # "C:/VNA_PCIE_REPO/src/src/Top/PciVnaEmulTop.v"
  74. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/AdcSync.v"
  75. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/delay_controller_wrap.v"
  76. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/n_x_serdes_1_to_7_mmcm_idelay_sdr.v"
  77. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_mmcm_idelay_sdr.v"
  78. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_slave_idelay_sdr.v"
  79. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/top5x2_7to1_sdr_rx.v"
  80. # "C:/VNA_PCIE_REPO/src/src/AdcDataRx/AdcDataInterface.v"
  81. # "C:/VNA_PCIE_REPO/src/src/ClkGen/Clk200Gen.v"
  82. # "C:/VNA_PCIE_REPO/src/src/ExtDspInterface/DspInterface.v"
  83. # "C:/VNA_PCIE_REPO/src/src/ExtDspInterface/DspPpiOut.v"
  84. # "C:/VNA_PCIE_REPO/src/src/MeasDataFifo/FifoController.v"
  85. # "C:/VNA_PCIE_REPO/src/src/Top/IntermediateLogicTb.v"
  86. # "C:/VNA_PCIE_REPO/src/src/MeasDataFifo/MeasDataFifoWrapper.v"
  87. # "C:/VNA_PCIE_REPO/src/src/PulseMeas/PulseGenNew.v"
  88. # "C:/VNA_PCIE_REPO/src/src/Sim/S5443TopPulseProfileTb.v"
  89. # "C:/VNA_PCIE_REPO/src/src/Sim/S5443TopSimpleMeasTb.v"
  90. # "C:/VNA_PCIE_REPO/src/src/ExtDspInterface/SlaveSpi.v"
  91. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/board_common.vh"
  92. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pipe_interconnect.vh"
  93. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/board.v"
  94. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"
  95. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"
  96. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"
  97. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"
  98. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"
  99. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/tests.vh"
  100. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/sample_tests1.vh"
  101. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"
  102. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_gt_top_pipe_mode.v"
  103. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie_2_1_rport_7x.v"
  104. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/pcie_axi_trn_bridge.v"
  105. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen.v"
  106. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"
  107. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/xil_sig2pipe.v"
  108. # "C:/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_rport_7x.v"
  109. # "C:/VNA_PCIE_REPO/src/consrtrs/xilinx_pcie_7x_ep_x1g1.xdc"
  110. #
  111. #*****************************************************************************************
  112. # Check file required for this script exists
  113. proc checkRequiredFiles { origin_dir} {
  114. set status true
  115. set files [list \
  116. "[file normalize "$origin_dir/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/pcie1234/pcie1234.xci"]"\
  117. "[file normalize "$origin_dir/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/ClkPllSysTo125/ClkPllSysTo125.xci"]"\
  118. ]
  119. foreach ifile $files {
  120. if { ![file isfile $ifile] } {
  121. puts " Could not find local file $ifile "
  122. set status false
  123. }
  124. }
  125. set files [list \
  126. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/ActivePortSelector.v"]"\
  127. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/AdcCalibration.v"]"\
  128. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/ComplPrng.v"]"\
  129. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/CordicNco.v"]"\
  130. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/CordicRotation.v"]"\
  131. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/DitherGen/DitherGenv2.v"]"\
  132. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/DspPipeline.v"]"\
  133. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/EP_MEM.v"]"\
  134. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Math/FpCustomMultiplier.v"]"\
  135. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControl.v"]"\
  136. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControlWrapper.v"]"\
  137. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InitRst/InitRst.v"]"\
  138. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Top/IntermediateLogic.v"]"\
  139. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/InternalDsp.v"]"\
  140. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/MeasCtrlModule.v"]"\
  141. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/MeasStartEventGen.v"]"\
  142. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Math/MultModule.v"]"\
  143. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/Mux.v"]"\
  144. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Math/MyIntToFp.v"]"\
  145. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/NcoRstGen.v"]"\
  146. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/GainOverloadControl/OverloadDetect.v"]"\
  147. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/PGenRstGenerator.v"]"\
  148. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO.v"]"\
  149. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP.v"]"\
  150. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP_MEM_ACCESS.v"]"\
  151. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO_RX_ENGINE.v"]"\
  152. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TO_CTRL.v"]"\
  153. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TX_ENGINE.v"]"\
  154. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/PulseGen.v"]"\
  155. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/RegMap/RegMap.v"]"\
  156. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Top/S5443Top.v"]"\
  157. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/SampleStrobeGenRstDemux.v"]"\
  158. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Math/SimpleMult.v"]"\
  159. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/StartAfterGainSel.v"]"\
  160. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Math/SumAcc.v"]"\
  161. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/TrigInt2Mux.v"]"\
  162. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/WinParameters.v"]"\
  163. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/InternalDsp/Win_calc.v"]"\
  164. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_pipe_clock.v"]"\
  165. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_support.v"]"\
  166. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie_app_7x.v"]"\
  167. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_ep_7x.v"]"\
  168. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Top/PciVnaEmulTop.v"]"\
  169. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/AdcSync.v"]"\
  170. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/delay_controller_wrap.v"]"\
  171. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/n_x_serdes_1_to_7_mmcm_idelay_sdr.v"]"\
  172. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_mmcm_idelay_sdr.v"]"\
  173. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_slave_idelay_sdr.v"]"\
  174. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/top5x2_7to1_sdr_rx.v"]"\
  175. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/AdcDataRx/AdcDataInterface.v"]"\
  176. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/ClkGen/Clk200Gen.v"]"\
  177. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/ExtDspInterface/DspInterface.v"]"\
  178. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/ExtDspInterface/DspPpiOut.v"]"\
  179. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/MeasDataFifo/FifoController.v"]"\
  180. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Top/IntermediateLogicTb.v"]"\
  181. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/MeasDataFifo/MeasDataFifoWrapper.v"]"\
  182. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PulseMeas/PulseGenNew.v"]"\
  183. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Sim/S5443TopPulseProfileTb.v"]"\
  184. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/Sim/S5443TopSimpleMeasTb.v"]"\
  185. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/ExtDspInterface/SlaveSpi.v"]"\
  186. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/board_common.vh"]"\
  187. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pipe_interconnect.vh"]"\
  188. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/board.v"]"\
  189. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"]"\
  190. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"]"\
  191. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"]"\
  192. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"]"\
  193. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"]"\
  194. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/tests.vh"]"\
  195. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/sample_tests1.vh"]"\
  196. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"]"\
  197. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_gt_top_pipe_mode.v"]"\
  198. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie_2_1_rport_7x.v"]"\
  199. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pcie_axi_trn_bridge.v"]"\
  200. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen.v"]"\
  201. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"]"\
  202. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/xil_sig2pipe.v"]"\
  203. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_rport_7x.v"]"\
  204. "[file normalize "$origin_dir/VNA_PCIE_REPO/src/consrtrs/xilinx_pcie_7x_ep_x1g1.xdc"]"\
  205. ]
  206. foreach ifile $files {
  207. if { ![file isfile $ifile] } {
  208. puts " Could not find remote file $ifile "
  209. set status false
  210. }
  211. }
  212. return $status
  213. }
  214. # Set the reference directory for source file relative paths (by default the value is script directory path)
  215. set origin_dir "C:/"
  216. # Use origin directory path location variable, if specified in the tcl shell
  217. if { [info exists ::origin_dir_loc] } {
  218. set origin_dir $::origin_dir_loc
  219. }
  220. # Set the project name
  221. set _xil_proj_name_ "VNA_PCIE_PROJ"
  222. # Use project name variable, if specified in the tcl shell
  223. if { [info exists ::user_project_name] } {
  224. set _xil_proj_name_ $::user_project_name
  225. }
  226. variable script_file
  227. set script_file "recreate_vna_pcie.tcl"
  228. # Help information for this script
  229. proc print_help {} {
  230. variable script_file
  231. puts "\nDescription:"
  232. puts "Recreate a Vivado project from this script. The created project will be"
  233. puts "functionally equivalent to the original project for which this script was"
  234. puts "generated. The script contains commands for creating a project, filesets,"
  235. puts "runs, adding/importing sources and setting properties on various objects.\n"
  236. puts "Syntax:"
  237. puts "$script_file"
  238. puts "$script_file -tclargs \[--origin_dir <path>\]"
  239. puts "$script_file -tclargs \[--project_name <name>\]"
  240. puts "$script_file -tclargs \[--help\]\n"
  241. puts "Usage:"
  242. puts "Name Description"
  243. puts "-------------------------------------------------------------------------"
  244. puts "\[--origin_dir <path>\] Determine source file paths wrt this path. Default"
  245. puts " origin_dir path value is \".\", otherwise, the value"
  246. puts " that was set with the \"-paths_relative_to\" switch"
  247. puts " when this script was generated.\n"
  248. puts "\[--project_name <name>\] Create project with the specified name. Default"
  249. puts " name is the name of the project from where this"
  250. puts " script was generated.\n"
  251. puts "\[--help\] Print help information for this script"
  252. puts "-------------------------------------------------------------------------\n"
  253. exit 0
  254. }
  255. if { $::argc > 0 } {
  256. for {set i 0} {$i < $::argc} {incr i} {
  257. set option [string trim [lindex $::argv $i]]
  258. switch -regexp -- $option {
  259. "--origin_dir" { incr i; set origin_dir [lindex $::argv $i] }
  260. "--project_name" { incr i; set _xil_proj_name_ [lindex $::argv $i] }
  261. "--help" { print_help }
  262. default {
  263. if { [regexp {^-} $option] } {
  264. puts "ERROR: Unknown option '$option' specified, please type '$script_file -tclargs --help' for usage info.\n"
  265. return 1
  266. }
  267. }
  268. }
  269. }
  270. }
  271. # Set the directory path for the original project from where this script was exported
  272. set orig_proj_dir "[file normalize "$origin_dir/VNA_PCIE_PROJ"]"
  273. # Check for paths and files needed for project creation
  274. set validate_required 0
  275. if { $validate_required } {
  276. if { [checkRequiredFiles $origin_dir] } {
  277. puts "Tcl file $script_file is valid. All files required for project creation is accesable. "
  278. } else {
  279. puts "Tcl file $script_file is not valid. Not all files required for project creation is accesable. "
  280. return
  281. }
  282. }
  283. # Create project
  284. create_project ${_xil_proj_name_} ./${_xil_proj_name_} -part xc7a100tfgg484-2
  285. # Set the directory path for the new project
  286. set proj_dir [get_property directory [current_project]]
  287. # Reconstruct message rules
  288. # None
  289. # Set project properties
  290. set obj [current_project]
  291. set_property -name "default_lib" -value "xil_defaultlib" -objects $obj
  292. set_property -name "enable_resource_estimation" -value "0" -objects $obj
  293. set_property -name "enable_vhdl_2008" -value "1" -objects $obj
  294. set_property -name "ip_cache_permissions" -value "read write" -objects $obj
  295. set_property -name "ip_output_repo" -value "$proj_dir/${_xil_proj_name_}.cache/ip" -objects $obj
  296. set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj
  297. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  298. set_property -name "revised_directory_structure" -value "1" -objects $obj
  299. set_property -name "sim.central_dir" -value "$proj_dir/${_xil_proj_name_}.ip_user_files" -objects $obj
  300. set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj
  301. set_property -name "sim_compile_state" -value "1" -objects $obj
  302. set_property -name "xpm_libraries" -value "XPM_CDC XPM_MEMORY" -objects $obj
  303. # Create 'sources_1' fileset (if not found)
  304. if {[string equal [get_filesets -quiet sources_1] ""]} {
  305. create_fileset -srcset sources_1
  306. }
  307. # Set 'sources_1' fileset object
  308. set obj [get_filesets sources_1]
  309. set files [list \
  310. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/ActivePortSelector.v"] \
  311. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/AdcCalibration.v"] \
  312. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/ComplPrng.v"] \
  313. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/CordicNco.v"] \
  314. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/CordicRotation.v"] \
  315. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/DitherGen/DitherGenv2.v"] \
  316. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/DspPipeline.v"] \
  317. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/EP_MEM.v"] \
  318. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Math/FpCustomMultiplier.v"] \
  319. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControl.v"] \
  320. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/GainOverloadControl/GainControlWrapper.v"] \
  321. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InitRst/InitRst.v"] \
  322. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Top/IntermediateLogic.v"] \
  323. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/InternalDsp.v"] \
  324. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/MeasCtrlModule.v"] \
  325. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/MeasStartEventGen.v"] \
  326. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Math/MultModule.v"] \
  327. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/Mux.v"] \
  328. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Math/MyIntToFp.v"] \
  329. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/NcoRstGen.v"] \
  330. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/GainOverloadControl/OverloadDetect.v"] \
  331. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/PGenRstGenerator.v"] \
  332. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO.v"] \
  333. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP.v"] \
  334. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO_EP_MEM_ACCESS.v"] \
  335. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO_RX_ENGINE.v"] \
  336. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TO_CTRL.v"] \
  337. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/PIO_TX_ENGINE.v"] \
  338. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/PulseGen.v"] \
  339. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/RegMap/RegMap.v"] \
  340. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Top/S5443Top.v"] \
  341. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/SampleStrobeGenRstDemux.v"] \
  342. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Math/SimpleMult.v"] \
  343. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/StartAfterGainSel.v"] \
  344. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Math/SumAcc.v"] \
  345. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/TrigInt2Mux.v"] \
  346. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/WinParameters.v"] \
  347. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/InternalDsp/Win_calc.v"] \
  348. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_pipe_clock.v"] \
  349. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_support.v"] \
  350. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie_app_7x.v"] \
  351. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_ep_7x.v"] \
  352. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Top/PciVnaEmulTop.v"] \
  353. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/AdcSync.v"] \
  354. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/delay_controller_wrap.v"] \
  355. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/n_x_serdes_1_to_7_mmcm_idelay_sdr.v"] \
  356. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_mmcm_idelay_sdr.v"] \
  357. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/serdes_1_to_7_slave_idelay_sdr.v"] \
  358. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/top5x2_7to1_sdr_rx.v"] \
  359. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/AdcDataRx/AdcDataInterface.v"] \
  360. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/ClkGen/Clk200Gen.v"] \
  361. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/ExtDspInterface/DspInterface.v"] \
  362. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/ExtDspInterface/DspPpiOut.v"] \
  363. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/MeasDataFifo/FifoController.v"] \
  364. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Top/IntermediateLogicTb.v"] \
  365. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/MeasDataFifo/MeasDataFifoWrapper.v"] \
  366. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PulseMeas/PulseGenNew.v"] \
  367. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Sim/S5443TopPulseProfileTb.v"] \
  368. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/Sim/S5443TopSimpleMeasTb.v"] \
  369. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/ExtDspInterface/SlaveSpi.v"] \
  370. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/board_common.vh"] \
  371. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pipe_interconnect.vh"] \
  372. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/board.v"] \
  373. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"] \
  374. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"] \
  375. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"] \
  376. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"] \
  377. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"] \
  378. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/tests.vh"] \
  379. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/sample_tests1.vh"] \
  380. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"] \
  381. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie1234_gt_top_pipe_mode.v"] \
  382. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie_2_1_rport_7x.v"] \
  383. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/pcie_axi_trn_bridge.v"] \
  384. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen.v"] \
  385. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"] \
  386. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/xil_sig2pipe.v"] \
  387. [file normalize "${origin_dir}/VNA_PCIE_REPO/src/src/PCIeImports/xilinx_pcie_2_1_rport_7x.v"] \
  388. ]
  389. add_files -norecurse -fileset $obj $files
  390. # Import local files from the original project
  391. set files [list \
  392. [file normalize "${origin_dir}/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/pcie1234/pcie1234.xci" ]\
  393. [file normalize "${origin_dir}/VNA_PCIE_PROJ/VNA_PCIE_PROJ.srcs/sources_1/ip/ClkPllSysTo125/ClkPllSysTo125.xci" ]\
  394. ]
  395. set imported_files ""
  396. foreach f $files {
  397. lappend imported_files [import_files -fileset sources_1 $f]
  398. }
  399. # Set 'sources_1' fileset file properties for remote files
  400. set file "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/board_common.vh"
  401. set file [file normalize $file]
  402. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  403. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  404. set file "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pipe_interconnect.vh"
  405. set file [file normalize $file]
  406. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  407. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  408. set file "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"
  409. set file [file normalize $file]
  410. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  411. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  412. set file "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/tests.vh"
  413. set file [file normalize $file]
  414. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  415. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  416. set file "$origin_dir/VNA_PCIE_REPO/src/src/PCIeImports/sample_tests1.vh"
  417. set file [file normalize $file]
  418. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  419. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  420. # Set 'sources_1' fileset file properties for local files
  421. set file "pcie1234/pcie1234.xci"
  422. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  423. set_property -name "generate_files_for_reference" -value "0" -objects $file_obj
  424. set_property -name "registered_with_manager" -value "1" -objects $file_obj
  425. if { ![get_property "is_locked" $file_obj] } {
  426. set_property -name "synth_checkpoint_mode" -value "Singular" -objects $file_obj
  427. }
  428. set file "ClkPllSysTo125/ClkPllSysTo125.xci"
  429. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  430. set_property -name "generate_files_for_reference" -value "0" -objects $file_obj
  431. set_property -name "registered_with_manager" -value "1" -objects $file_obj
  432. if { ![get_property "is_locked" $file_obj] } {
  433. set_property -name "synth_checkpoint_mode" -value "Singular" -objects $file_obj
  434. }
  435. # Set 'sources_1' fileset properties
  436. set obj [get_filesets sources_1]
  437. set_property -name "dataflow_viewer_settings" -value "min_width=16" -objects $obj
  438. set_property -name "top" -value "PciVnaEmulTop" -objects $obj
  439. set_property -name "top_auto_set" -value "0" -objects $obj
  440. # Create 'constrs_1' fileset (if not found)
  441. if {[string equal [get_filesets -quiet constrs_1] ""]} {
  442. create_fileset -constrset constrs_1
  443. }
  444. # Set 'constrs_1' fileset object
  445. set obj [get_filesets constrs_1]
  446. # Add/Import constrs file and set constrs file properties
  447. set file "[file normalize "$origin_dir/VNA_PCIE_REPO/src/consrtrs/xilinx_pcie_7x_ep_x1g1.xdc"]"
  448. set file_added [add_files -norecurse -fileset $obj [list $file]]
  449. set file "$origin_dir/VNA_PCIE_REPO/src/consrtrs/xilinx_pcie_7x_ep_x1g1.xdc"
  450. set file [file normalize $file]
  451. set file_obj [get_files -of_objects [get_filesets constrs_1] [list "*$file"]]
  452. set_property -name "file_type" -value "XDC" -objects $file_obj
  453. # Set 'constrs_1' fileset properties
  454. set obj [get_filesets constrs_1]
  455. set_property -name "target_part" -value "xc7a100tfgg484-2" -objects $obj
  456. # Create 'sim_1' fileset (if not found)
  457. if {[string equal [get_filesets -quiet sim_1] ""]} {
  458. create_fileset -simset sim_1
  459. }
  460. # Set 'sim_1' fileset object
  461. set obj [get_filesets sim_1]
  462. # Empty (no sources present)
  463. # Set 'sim_1' fileset properties
  464. set obj [get_filesets sim_1]
  465. set_property -name "top" -value "AdcDataInterface" -objects $obj
  466. set_property -name "top_lib" -value "xil_defaultlib" -objects $obj
  467. # Set 'utils_1' fileset object
  468. set obj [get_filesets utils_1]
  469. # Empty (no sources present)
  470. # Set 'utils_1' fileset properties
  471. set obj [get_filesets utils_1]
  472. set idrFlowPropertiesConstraints ""
  473. catch {
  474. set idrFlowPropertiesConstraints [get_param runs.disableIDRFlowPropertyConstraints]
  475. set_param runs.disableIDRFlowPropertyConstraints 1
  476. }
  477. # Create 'synth_1' run (if not found)
  478. if {[string equal [get_runs -quiet synth_1] ""]} {
  479. create_run -name synth_1 -part xc7a100tfgg484-2 -flow {Vivado Synthesis 2024} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset constrs_1
  480. } else {
  481. set_property strategy "Vivado Synthesis Defaults" [get_runs synth_1]
  482. set_property flow "Vivado Synthesis 2024" [get_runs synth_1]
  483. }
  484. set obj [get_runs synth_1]
  485. set_property set_report_strategy_name 1 $obj
  486. set_property report_strategy {Vivado Synthesis Default Reports} $obj
  487. set_property set_report_strategy_name 0 $obj
  488. # Create 'synth_1_synth_report_utilization_0' report (if not found)
  489. if { [ string equal [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] "" ] } {
  490. create_report_config -report_name synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs synth_1
  491. }
  492. set obj [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0]
  493. if { $obj != "" } {
  494. }
  495. set obj [get_runs synth_1]
  496. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  497. set_property -name "auto_incremental_checkpoint" -value "1" -objects $obj
  498. set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj
  499. # set the current synth run
  500. current_run -synthesis [get_runs synth_1]
  501. # Create 'impl_1' run (if not found)
  502. if {[string equal [get_runs -quiet impl_1] ""]} {
  503. create_run -name impl_1 -part xc7a100tfgg484-2 -flow {Vivado Implementation 2024} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset constrs_1 -parent_run synth_1
  504. } else {
  505. set_property strategy "Vivado Implementation Defaults" [get_runs impl_1]
  506. set_property flow "Vivado Implementation 2024" [get_runs impl_1]
  507. }
  508. set obj [get_runs impl_1]
  509. set_property set_report_strategy_name 1 $obj
  510. set_property report_strategy {Vivado Implementation Default Reports} $obj
  511. set_property set_report_strategy_name 0 $obj
  512. # Create 'impl_1_init_report_timing_summary_0' report (if not found)
  513. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] "" ] } {
  514. create_report_config -report_name impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs impl_1
  515. }
  516. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0]
  517. if { $obj != "" } {
  518. set_property -name "is_enabled" -value "0" -objects $obj
  519. set_property -name "options.max_paths" -value "10" -objects $obj
  520. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  521. }
  522. # Create 'impl_1_opt_report_drc_0' report (if not found)
  523. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] "" ] } {
  524. create_report_config -report_name impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs impl_1
  525. }
  526. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0]
  527. if { $obj != "" } {
  528. }
  529. # Create 'impl_1_opt_report_timing_summary_0' report (if not found)
  530. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] "" ] } {
  531. create_report_config -report_name impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs impl_1
  532. }
  533. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0]
  534. if { $obj != "" } {
  535. set_property -name "is_enabled" -value "0" -objects $obj
  536. set_property -name "options.max_paths" -value "10" -objects $obj
  537. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  538. }
  539. # Create 'impl_1_power_opt_report_timing_summary_0' report (if not found)
  540. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] "" ] } {
  541. create_report_config -report_name impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs impl_1
  542. }
  543. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0]
  544. if { $obj != "" } {
  545. set_property -name "is_enabled" -value "0" -objects $obj
  546. set_property -name "options.max_paths" -value "10" -objects $obj
  547. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  548. }
  549. # Create 'impl_1_place_report_io_0' report (if not found)
  550. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] "" ] } {
  551. create_report_config -report_name impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs impl_1
  552. }
  553. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0]
  554. if { $obj != "" } {
  555. }
  556. # Create 'impl_1_place_report_utilization_0' report (if not found)
  557. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] "" ] } {
  558. create_report_config -report_name impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs impl_1
  559. }
  560. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0]
  561. if { $obj != "" } {
  562. }
  563. # Create 'impl_1_place_report_control_sets_0' report (if not found)
  564. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] "" ] } {
  565. create_report_config -report_name impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs impl_1
  566. }
  567. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0]
  568. if { $obj != "" } {
  569. set_property -name "options.verbose" -value "1" -objects $obj
  570. }
  571. # Create 'impl_1_place_report_incremental_reuse_0' report (if not found)
  572. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] "" ] } {
  573. create_report_config -report_name impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1
  574. }
  575. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0]
  576. if { $obj != "" } {
  577. set_property -name "is_enabled" -value "0" -objects $obj
  578. }
  579. # Create 'impl_1_place_report_incremental_reuse_1' report (if not found)
  580. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] "" ] } {
  581. create_report_config -report_name impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1
  582. }
  583. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1]
  584. if { $obj != "" } {
  585. set_property -name "is_enabled" -value "0" -objects $obj
  586. }
  587. # Create 'impl_1_place_report_timing_summary_0' report (if not found)
  588. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] "" ] } {
  589. create_report_config -report_name impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs impl_1
  590. }
  591. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0]
  592. if { $obj != "" } {
  593. set_property -name "is_enabled" -value "0" -objects $obj
  594. set_property -name "options.max_paths" -value "10" -objects $obj
  595. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  596. }
  597. # Create 'impl_1_post_place_power_opt_report_timing_summary_0' report (if not found)
  598. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] "" ] } {
  599. create_report_config -report_name impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs impl_1
  600. }
  601. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0]
  602. if { $obj != "" } {
  603. set_property -name "is_enabled" -value "0" -objects $obj
  604. set_property -name "options.max_paths" -value "10" -objects $obj
  605. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  606. }
  607. # Create 'impl_1_phys_opt_report_timing_summary_0' report (if not found)
  608. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] "" ] } {
  609. create_report_config -report_name impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs impl_1
  610. }
  611. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0]
  612. if { $obj != "" } {
  613. set_property -name "is_enabled" -value "0" -objects $obj
  614. set_property -name "options.max_paths" -value "10" -objects $obj
  615. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  616. }
  617. # Create 'impl_1_route_report_drc_0' report (if not found)
  618. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] "" ] } {
  619. create_report_config -report_name impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs impl_1
  620. }
  621. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0]
  622. if { $obj != "" } {
  623. }
  624. # Create 'impl_1_route_report_methodology_0' report (if not found)
  625. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] "" ] } {
  626. create_report_config -report_name impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs impl_1
  627. }
  628. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0]
  629. if { $obj != "" } {
  630. }
  631. # Create 'impl_1_route_report_power_0' report (if not found)
  632. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] "" ] } {
  633. create_report_config -report_name impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs impl_1
  634. }
  635. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0]
  636. if { $obj != "" } {
  637. }
  638. # Create 'impl_1_route_report_route_status_0' report (if not found)
  639. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] "" ] } {
  640. create_report_config -report_name impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs impl_1
  641. }
  642. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0]
  643. if { $obj != "" } {
  644. }
  645. # Create 'impl_1_route_report_timing_summary_0' report (if not found)
  646. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] "" ] } {
  647. create_report_config -report_name impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs impl_1
  648. }
  649. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0]
  650. if { $obj != "" } {
  651. set_property -name "options.max_paths" -value "10" -objects $obj
  652. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  653. }
  654. # Create 'impl_1_route_report_incremental_reuse_0' report (if not found)
  655. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] "" ] } {
  656. create_report_config -report_name impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs impl_1
  657. }
  658. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0]
  659. if { $obj != "" } {
  660. }
  661. # Create 'impl_1_route_report_clock_utilization_0' report (if not found)
  662. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] "" ] } {
  663. create_report_config -report_name impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs impl_1
  664. }
  665. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0]
  666. if { $obj != "" } {
  667. }
  668. # Create 'impl_1_route_report_bus_skew_0' report (if not found)
  669. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] "" ] } {
  670. create_report_config -report_name impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs impl_1
  671. }
  672. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0]
  673. if { $obj != "" } {
  674. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  675. }
  676. # Create 'impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found)
  677. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } {
  678. create_report_config -report_name impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs impl_1
  679. }
  680. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0]
  681. if { $obj != "" } {
  682. set_property -name "options.max_paths" -value "10" -objects $obj
  683. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  684. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  685. }
  686. # Create 'impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found)
  687. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } {
  688. create_report_config -report_name impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs impl_1
  689. }
  690. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0]
  691. if { $obj != "" } {
  692. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  693. }
  694. set obj [get_runs impl_1]
  695. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  696. set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj
  697. set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj
  698. set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj
  699. # set the current impl run
  700. current_run -implementation [get_runs impl_1]
  701. catch {
  702. if { $idrFlowPropertiesConstraints != {} } {
  703. set_param runs.disableIDRFlowPropertyConstraints $idrFlowPropertiesConstraints
  704. }
  705. }
  706. puts "INFO: Project created:${_xil_proj_name_}"
  707. # Create 'drc_1' gadget (if not found)
  708. if {[string equal [get_dashboard_gadgets [ list "drc_1" ] ] ""]} {
  709. create_dashboard_gadget -name {drc_1} -type drc
  710. }
  711. set obj [get_dashboard_gadgets [ list "drc_1" ] ]
  712. set_property -name "reports" -value "impl_1#impl_1_route_report_drc_0" -objects $obj
  713. # Create 'methodology_1' gadget (if not found)
  714. if {[string equal [get_dashboard_gadgets [ list "methodology_1" ] ] ""]} {
  715. create_dashboard_gadget -name {methodology_1} -type methodology
  716. }
  717. set obj [get_dashboard_gadgets [ list "methodology_1" ] ]
  718. set_property -name "reports" -value "impl_1#impl_1_route_report_methodology_0" -objects $obj
  719. # Create 'power_1' gadget (if not found)
  720. if {[string equal [get_dashboard_gadgets [ list "power_1" ] ] ""]} {
  721. create_dashboard_gadget -name {power_1} -type power
  722. }
  723. set obj [get_dashboard_gadgets [ list "power_1" ] ]
  724. set_property -name "reports" -value "impl_1#impl_1_route_report_power_0" -objects $obj
  725. # Create 'timing_1' gadget (if not found)
  726. if {[string equal [get_dashboard_gadgets [ list "timing_1" ] ] ""]} {
  727. create_dashboard_gadget -name {timing_1} -type timing
  728. }
  729. set obj [get_dashboard_gadgets [ list "timing_1" ] ]
  730. set_property -name "reports" -value "impl_1#impl_1_route_report_timing_summary_0" -objects $obj
  731. # Create 'utilization_1' gadget (if not found)
  732. if {[string equal [get_dashboard_gadgets [ list "utilization_1" ] ] ""]} {
  733. create_dashboard_gadget -name {utilization_1} -type utilization
  734. }
  735. set obj [get_dashboard_gadgets [ list "utilization_1" ] ]
  736. set_property -name "reports" -value "synth_1#synth_1_synth_report_utilization_0" -objects $obj
  737. set_property -name "run.step" -value "synth_design" -objects $obj
  738. set_property -name "run.type" -value "synthesis" -objects $obj
  739. # Create 'utilization_2' gadget (if not found)
  740. if {[string equal [get_dashboard_gadgets [ list "utilization_2" ] ] ""]} {
  741. create_dashboard_gadget -name {utilization_2} -type utilization
  742. }
  743. set obj [get_dashboard_gadgets [ list "utilization_2" ] ]
  744. set_property -name "reports" -value "impl_1#impl_1_place_report_utilization_0" -objects $obj
  745. move_dashboard_gadget -name {utilization_1} -row 0 -col 0
  746. move_dashboard_gadget -name {power_1} -row 1 -col 0
  747. move_dashboard_gadget -name {drc_1} -row 2 -col 0
  748. move_dashboard_gadget -name {timing_1} -row 0 -col 1
  749. move_dashboard_gadget -name {utilization_2} -row 1 -col 1
  750. move_dashboard_gadget -name {methodology_1} -row 2 -col 1
  751. ##################################################################
  752. # CHECK VIVADO VERSION
  753. ##################################################################
  754. set scripts_vivado_version 2024.1
  755. set current_vivado_version [version -short]
  756. if { [string first $scripts_vivado_version $current_vivado_version] == -1 } {
  757. catch {common::send_msg_id "IPS_TCL-100" "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_ip_tcl to create an updated script."}
  758. return 1
  759. }
  760. ##################################################################
  761. # START
  762. ##################################################################
  763. # To test this script, run the following commands from Vivado Tcl console:
  764. # source recreateIp.tcl
  765. # If there is no project opened, this script will create a
  766. # project, but make sure you do not have an existing project
  767. # in the current working folder.
  768. set list_projs [get_projects -quiet]
  769. if { $list_projs eq "" } {
  770. create_project VNA_PCIE_PROJ VNA_PCIE_PROJ -part xc7a100tfgg484-2
  771. set_property target_language Verilog [current_project]
  772. set_property simulator_language Verilog [current_project]
  773. }
  774. ##################################################################
  775. # CHECK IPs
  776. ##################################################################
  777. set bCheckIPs 1
  778. set bCheckIPsPassed 1
  779. if { $bCheckIPs == 1 } {
  780. set list_check_ips { xilinx.com:ip:clk_wiz:6.0 xilinx.com:ip:pcie_7x:3.3 }
  781. set list_ips_missing ""
  782. common::send_msg_id "IPS_TCL-1001" "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ."
  783. foreach ip_vlnv $list_check_ips {
  784. set ip_obj [get_ipdefs -all $ip_vlnv]
  785. if { $ip_obj eq "" } {
  786. lappend list_ips_missing $ip_vlnv
  787. }
  788. }
  789. if { $list_ips_missing ne "" } {
  790. catch {common::send_msg_id "IPS_TCL-105" "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." }
  791. set bCheckIPsPassed 0
  792. }
  793. }
  794. if { $bCheckIPsPassed != 1 } {
  795. common::send_msg_id "IPS_TCL-102" "WARNING" "Will not continue with creation of design due to the error(s) above."
  796. return 1
  797. }
  798. ##################################################################
  799. # CREATE IP ClkPllSysTo125
  800. ##################################################################
  801. set ClkPllSysTo125 [create_ip -name clk_wiz -vendor xilinx.com -library ip -version 6.0 -module_name ClkPllSysTo125]
  802. # User Parameters
  803. set_property -dict [list \
  804. CONFIG.CLKOUT1_DRIVES {BUFG} \
  805. CONFIG.CLKOUT1_JITTER {203.457} \
  806. CONFIG.CLKOUT1_PHASE_ERROR {155.540} \
  807. CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {50.000} \
  808. CONFIG.CLKOUT2_DRIVES {BUFG} \
  809. CONFIG.CLKOUT3_DRIVES {BUFG} \
  810. CONFIG.CLKOUT4_DRIVES {BUFG} \
  811. CONFIG.CLKOUT5_DRIVES {BUFG} \
  812. CONFIG.CLKOUT6_DRIVES {BUFG} \
  813. CONFIG.CLKOUT7_DRIVES {BUFG} \
  814. CONFIG.MMCM_BANDWIDTH {OPTIMIZED} \
  815. CONFIG.MMCM_CLKFBOUT_MULT_F {17} \
  816. CONFIG.MMCM_CLKOUT0_DIVIDE_F {17} \
  817. CONFIG.MMCM_COMPENSATION {ZHOLD} \
  818. CONFIG.MMCM_DIVCLK_DIVIDE {2} \
  819. CONFIG.PRIMITIVE {PLL} \
  820. CONFIG.PRIM_SOURCE {Single_ended_clock_capable_pin} \
  821. CONFIG.SECONDARY_SOURCE {Single_ended_clock_capable_pin} \
  822. CONFIG.USE_LOCKED {false} \
  823. CONFIG.USE_PHASE_ALIGNMENT {false} \
  824. CONFIG.USE_RESET {false} \
  825. ] [get_ips ClkPllSysTo125]
  826. # Runtime Parameters
  827. set_property -dict {
  828. GENERATE_SYNTH_CHECKPOINT {1}
  829. } $ClkPllSysTo125
  830. ##################################################################
  831. ##################################################################
  832. # CREATE IP pcie1234
  833. ##################################################################
  834. set pcie1234 [create_ip -name pcie_7x -vendor xilinx.com -library ip -version 3.3 -module_name pcie1234]
  835. # User Parameters
  836. set_property -dict [list \
  837. CONFIG.Device_ID {7012} \
  838. CONFIG.Interface_Width {64_bit} \
  839. CONFIG.Link_Speed {2.5_GT/s} \
  840. CONFIG.Max_Payload_Size {512_bytes} \
  841. CONFIG.Maximum_Link_Width {X2} \
  842. CONFIG.PCIe_Blk_Locn {X0Y0} \
  843. CONFIG.Trans_Buf_Pipeline {None} \
  844. CONFIG.User_Clk_Freq {125} \
  845. CONFIG.en_ext_pipe_interface {false} \
  846. CONFIG.pipe_mode_sim {Enable_Pipe_Simulation} \
  847. CONFIG.pipe_sim {true} \
  848. ] [get_ips pcie1234]
  849. # Runtime Parameters
  850. set_property -dict {
  851. GENERATE_SYNTH_CHECKPOINT {1}
  852. } $pcie1234
  853. ##################################################################