recreate.tcl 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917
  1. #*****************************************************************************************
  2. # Vivado (TM) v2024.1 (64-bit)
  3. #
  4. # recreate.tcl: Tcl script for re-creating project 'VNA_XDMA'
  5. #
  6. # Generated by Vivado on Fri Oct 11 11:13:01 +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.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. #
  27. # 3. The following remote source files that were added to the original project:-
  28. #
  29. # "C:/VNA_XDMA_REPO/src/ip/xdma_0/xdma_0.xci"
  30. # "C:/VNA_XDMA_REPO/src/src/DevicesWrappers/AttPeWrapper.v"
  31. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/EP_MEM.v"
  32. # "C:/VNA_XDMA_REPO/src/src/FifoCtrl/FifoCtrl.v"
  33. # "C:/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperA.v"
  34. # "C:/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperB.v"
  35. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO.v"
  36. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP.v"
  37. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP_MEM_ACCESS.v"
  38. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_RX_ENGINE.v"
  39. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TO_CTRL.v"
  40. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TX_ENGINE.v"
  41. # "C:/VNA_XDMA_REPO/src/src/QSpiM/QuadSpiMVariableWidth.v"
  42. # "C:/VNA_XDMA_REPO/src/src/DevicesWrappers/SbTmsgWrapper.v"
  43. # "C:/VNA_XDMA_REPO/src/src/SpiM/SpiM.v"
  44. # "C:/VNA_XDMA_REPO/src/src/SpiM/SpiMVariableWidth.v"
  45. # "C:/VNA_XDMA_REPO/src/src/IntBlockApp/pcie_app_7x.v"
  46. # "C:/VNA_XDMA_REPO/src/src/Xdma/xdma_app.v"
  47. # "C:/VNA_XDMA_REPO/src/src/Xdma/xilinx_dma_pcie_ep.sv"
  48. # "C:/VNA_XDMA_REPO/src/constrs/xilinx_xdma_pcie_x0y0.xdc"
  49. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/board_common.vh"
  50. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"
  51. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"
  52. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"
  53. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"
  54. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/tests.vh"
  55. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/sample_tests.vh"
  56. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"
  57. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_core_top.v"
  58. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_top.v"
  59. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen.v"
  60. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"
  61. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_pcie_uscale_rp.v"
  62. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/board.v"
  63. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_dma_pcie_ep.sv"
  64. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"
  65. # "C:/VNA_XDMA_REPO/src/src/PCIeImports/xdma_app.v"
  66. #
  67. #*****************************************************************************************
  68. # Check file required for this script exists
  69. proc checkRequiredFiles { origin_dir} {
  70. set files [list \
  71. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/ip/xdma_0/xdma_0.xci"]"\
  72. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/DevicesWrappers/AttPeWrapper.v"]"\
  73. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/EP_MEM.v"]"\
  74. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/FifoCtrl/FifoCtrl.v"]"\
  75. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperA.v"]"\
  76. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperB.v"]"\
  77. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO.v"]"\
  78. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP.v"]"\
  79. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP_MEM_ACCESS.v"]"\
  80. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_RX_ENGINE.v"]"\
  81. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TO_CTRL.v"]"\
  82. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TX_ENGINE.v"]"\
  83. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/QSpiM/QuadSpiMVariableWidth.v"]"\
  84. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/DevicesWrappers/SbTmsgWrapper.v"]"\
  85. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/SpiM/SpiM.v"]"\
  86. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/SpiM/SpiMVariableWidth.v"]"\
  87. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/IntBlockApp/pcie_app_7x.v"]"\
  88. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/Xdma/xdma_app.v"]"\
  89. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/Xdma/xilinx_dma_pcie_ep.sv"]"\
  90. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/constrs/xilinx_xdma_pcie_x0y0.xdc"]"\
  91. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/board_common.vh"]"\
  92. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"]"\
  93. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"]"\
  94. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"]"\
  95. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"]"\
  96. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/tests.vh"]"\
  97. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/sample_tests.vh"]"\
  98. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"]"\
  99. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_core_top.v"]"\
  100. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_top.v"]"\
  101. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen.v"]"\
  102. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"]"\
  103. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_pcie_uscale_rp.v"]"\
  104. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/board.v"]"\
  105. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_dma_pcie_ep.sv"]"\
  106. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"]"\
  107. "[file normalize "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/xdma_app.v"]"\
  108. ]
  109. foreach ifile $files {
  110. if { ![file isfile $ifile] } {
  111. puts " Could not find remote file $ifile "
  112. set status false
  113. }
  114. }
  115. return $status
  116. }
  117. # Set the reference directory for source file relative paths (by default the value is script directory path)
  118. set origin_dir "C:/"
  119. # Use origin directory path location variable, if specified in the tcl shell
  120. if { [info exists ::origin_dir_loc] } {
  121. set origin_dir $::origin_dir_loc
  122. }
  123. # Set the project name
  124. set _xil_proj_name_ "VNA_XDMA"
  125. # Use project name variable, if specified in the tcl shell
  126. if { [info exists ::user_project_name] } {
  127. set _xil_proj_name_ $::user_project_name
  128. }
  129. variable script_file
  130. set script_file "recreate.tcl"
  131. # Help information for this script
  132. proc print_help {} {
  133. variable script_file
  134. puts "\nDescription:"
  135. puts "Recreate a Vivado project from this script. The created project will be"
  136. puts "functionally equivalent to the original project for which this script was"
  137. puts "generated. The script contains commands for creating a project, filesets,"
  138. puts "runs, adding/importing sources and setting properties on various objects.\n"
  139. puts "Syntax:"
  140. puts "$script_file"
  141. puts "$script_file -tclargs \[--origin_dir <path>\]"
  142. puts "$script_file -tclargs \[--project_name <name>\]"
  143. puts "$script_file -tclargs \[--help\]\n"
  144. puts "Usage:"
  145. puts "Name Description"
  146. puts "-------------------------------------------------------------------------"
  147. puts "\[--origin_dir <path>\] Determine source file paths wrt this path. Default"
  148. puts " origin_dir path value is \".\", otherwise, the value"
  149. puts " that was set with the \"-paths_relative_to\" switch"
  150. puts " when this script was generated.\n"
  151. puts "\[--project_name <name>\] Create project with the specified name. Default"
  152. puts " name is the name of the project from where this"
  153. puts " script was generated.\n"
  154. puts "\[--help\] Print help information for this script"
  155. puts "-------------------------------------------------------------------------\n"
  156. exit 0
  157. }
  158. if { $::argc > 0 } {
  159. for {set i 0} {$i < $::argc} {incr i} {
  160. set option [string trim [lindex $::argv $i]]
  161. switch -regexp -- $option {
  162. "--origin_dir" { incr i; set origin_dir [lindex $::argv $i] }
  163. "--project_name" { incr i; set _xil_proj_name_ [lindex $::argv $i] }
  164. "--help" { print_help }
  165. default {
  166. if { [regexp {^-} $option] } {
  167. puts "ERROR: Unknown option '$option' specified, please type '$script_file -tclargs --help' for usage info.\n"
  168. return 1
  169. }
  170. }
  171. }
  172. }
  173. }
  174. # Set the directory path for the original project from where this script was exported
  175. set orig_proj_dir "[file normalize "$origin_dir/VNA_XDMA_PROJ"]"
  176. # Check for paths and files needed for project creation
  177. set validate_required 0
  178. if { $validate_required } {
  179. if { [checkRequiredFiles $origin_dir] } {
  180. puts "Tcl file $script_file is valid. All files required for project creation is accesable. "
  181. } else {
  182. puts "Tcl file $script_file is not valid. Not all files required for project creation is accesable. "
  183. return
  184. }
  185. }
  186. # Create project
  187. create_project ${_xil_proj_name_} ./${_xil_proj_name_} -part xc7a100tfgg484-2
  188. # Set the directory path for the new project
  189. set proj_dir [get_property directory [current_project]]
  190. # Reconstruct message rules
  191. # None
  192. # Set project properties
  193. set obj [current_project]
  194. set_property -name "default_lib" -value "xil_defaultlib" -objects $obj
  195. set_property -name "enable_resource_estimation" -value "0" -objects $obj
  196. set_property -name "enable_vhdl_2008" -value "1" -objects $obj
  197. set_property -name "ip_cache_permissions" -value "read write" -objects $obj
  198. set_property -name "ip_output_repo" -value "$proj_dir/${_xil_proj_name_}.cache/ip" -objects $obj
  199. set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj
  200. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  201. set_property -name "revised_directory_structure" -value "1" -objects $obj
  202. set_property -name "sim.central_dir" -value "$proj_dir/${_xil_proj_name_}.ip_user_files" -objects $obj
  203. set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj
  204. set_property -name "sim_compile_state" -value "1" -objects $obj
  205. set_property -name "webtalk.activehdl_export_sim" -value "1" -objects $obj
  206. set_property -name "webtalk.modelsim_export_sim" -value "1" -objects $obj
  207. set_property -name "webtalk.questa_export_sim" -value "1" -objects $obj
  208. set_property -name "webtalk.riviera_export_sim" -value "1" -objects $obj
  209. set_property -name "webtalk.vcs_export_sim" -value "1" -objects $obj
  210. set_property -name "webtalk.xcelium_export_sim" -value "1" -objects $obj
  211. set_property -name "webtalk.xsim_export_sim" -value "1" -objects $obj
  212. set_property -name "xpm_libraries" -value "XPM_CDC XPM_FIFO XPM_MEMORY" -objects $obj
  213. # Create 'sources_1' fileset (if not found)
  214. if {[string equal [get_filesets -quiet sources_1] ""]} {
  215. create_fileset -srcset sources_1
  216. }
  217. # Set 'sources_1' fileset object
  218. set obj [get_filesets sources_1]
  219. set files [list \
  220. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/ip/xdma_0/xdma_0.xci"] \
  221. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/DevicesWrappers/AttPeWrapper.v"] \
  222. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/EP_MEM.v"] \
  223. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/FifoCtrl/FifoCtrl.v"] \
  224. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperA.v"] \
  225. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/DevicesWrappers/LmkWrapperB.v"] \
  226. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO.v"] \
  227. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP.v"] \
  228. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_EP_MEM_ACCESS.v"] \
  229. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_RX_ENGINE.v"] \
  230. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TO_CTRL.v"] \
  231. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/PIO_TX_ENGINE.v"] \
  232. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/QSpiM/QuadSpiMVariableWidth.v"] \
  233. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/DevicesWrappers/SbTmsgWrapper.v"] \
  234. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/SpiM/SpiM.v"] \
  235. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/SpiM/SpiMVariableWidth.v"] \
  236. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/IntBlockApp/pcie_app_7x.v"] \
  237. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/Xdma/xdma_app.v"] \
  238. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/Xdma/xilinx_dma_pcie_ep.sv"] \
  239. ]
  240. add_files -norecurse -fileset $obj $files
  241. # Set 'sources_1' fileset file properties for remote files
  242. set file "$origin_dir/VNA_XDMA_REPO/src/ip/xdma_0/xdma_0.xci"
  243. set file [file normalize $file]
  244. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  245. set_property -name "generate_files_for_reference" -value "0" -objects $file_obj
  246. if { ![get_property "is_locked" $file_obj] } {
  247. set_property -name "is_locked" -value "1" -objects $file_obj
  248. }
  249. set_property -name "registered_with_manager" -value "1" -objects $file_obj
  250. set file "$origin_dir/VNA_XDMA_REPO/src/src/Xdma/xilinx_dma_pcie_ep.sv"
  251. set file [file normalize $file]
  252. set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
  253. set_property -name "file_type" -value "SystemVerilog" -objects $file_obj
  254. # Set 'sources_1' fileset file properties for local files
  255. # None
  256. # Set 'sources_1' fileset properties
  257. set obj [get_filesets sources_1]
  258. set_property -name "dataflow_viewer_settings" -value "min_width=16" -objects $obj
  259. set_property -name "top" -value "xilinx_dma_pcie_ep" -objects $obj
  260. set_property -name "top_auto_set" -value "0" -objects $obj
  261. # Set 'sources_1' fileset file properties for remote files
  262. # None
  263. # Set 'sources_1' fileset file properties for remote files
  264. # None
  265. # Set 'sources_1' fileset file properties for remote files
  266. # None
  267. # Create 'constrs_1' fileset (if not found)
  268. if {[string equal [get_filesets -quiet constrs_1] ""]} {
  269. create_fileset -constrset constrs_1
  270. }
  271. # Set 'constrs_1' fileset object
  272. set obj [get_filesets constrs_1]
  273. # Add/Import constrs file and set constrs file properties
  274. set file "[file normalize "$origin_dir/VNA_XDMA_REPO/src/constrs/xilinx_xdma_pcie_x0y0.xdc"]"
  275. set file_added [add_files -norecurse -fileset $obj [list $file]]
  276. set file "$origin_dir/VNA_XDMA_REPO/src/constrs/xilinx_xdma_pcie_x0y0.xdc"
  277. set file [file normalize $file]
  278. set file_obj [get_files -of_objects [get_filesets constrs_1] [list "*$file"]]
  279. set_property -name "file_type" -value "XDC" -objects $file_obj
  280. # Set 'constrs_1' fileset properties
  281. set obj [get_filesets constrs_1]
  282. set_property -name "target_part" -value "xc7a100tfgg484-2" -objects $obj
  283. # Create 'sim_1' fileset (if not found)
  284. if {[string equal [get_filesets -quiet sim_1] ""]} {
  285. create_fileset -simset sim_1
  286. }
  287. # Set 'sim_1' fileset object
  288. set obj [get_filesets sim_1]
  289. set files [list \
  290. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/board_common.vh"] \
  291. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"] \
  292. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"] \
  293. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_com.v"] \
  294. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_rx.v"] \
  295. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/tests.vh"] \
  296. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/sample_tests.vh"] \
  297. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_tx.v"] \
  298. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_core_top.v"] \
  299. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pcie3_uscale_rp_top.v"] \
  300. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen.v"] \
  301. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/sys_clk_gen_ds.v"] \
  302. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_pcie_uscale_rp.v"] \
  303. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/board.v"] \
  304. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_dma_pcie_ep.sv"] \
  305. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_pl.v"] \
  306. [file normalize "${origin_dir}/VNA_XDMA_REPO/src/src/PCIeImports/xdma_app.v"] \
  307. ]
  308. add_files -norecurse -fileset $obj $files
  309. # Set 'sim_1' fileset file properties for remote files
  310. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/board_common.vh"
  311. set file [file normalize $file]
  312. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  313. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  314. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_usrapp_cfg.v"
  315. set file [file normalize $file]
  316. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  317. set_property -name "used_in" -value "simulation" -objects $file_obj
  318. set_property -name "used_in_implementation" -value "0" -objects $file_obj
  319. set_property -name "used_in_synthesis" -value "0" -objects $file_obj
  320. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/pci_exp_expect_tasks.vh"
  321. set file [file normalize $file]
  322. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  323. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  324. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/tests.vh"
  325. set file [file normalize $file]
  326. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  327. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  328. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/sample_tests.vh"
  329. set file [file normalize $file]
  330. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  331. set_property -name "file_type" -value "Verilog Header" -objects $file_obj
  332. set file "$origin_dir/VNA_XDMA_REPO/src/src/PCIeImports/xilinx_dma_pcie_ep.sv"
  333. set file [file normalize $file]
  334. set file_obj [get_files -of_objects [get_filesets sim_1] [list "*$file"]]
  335. set_property -name "file_type" -value "SystemVerilog" -objects $file_obj
  336. # Set 'sim_1' fileset file properties for local files
  337. # None
  338. # Set 'sim_1' fileset properties
  339. set obj [get_filesets sim_1]
  340. set_property -name "top" -value "board" -objects $obj
  341. set_property -name "top_lib" -value "xil_defaultlib" -objects $obj
  342. # Set 'utils_1' fileset object
  343. set obj [get_filesets utils_1]
  344. # Import local files from the original project
  345. # Set 'utils_1' fileset properties
  346. set obj [get_filesets utils_1]
  347. set idrFlowPropertiesConstraints ""
  348. catch {
  349. set idrFlowPropertiesConstraints [get_param runs.disableIDRFlowPropertyConstraints]
  350. set_param runs.disableIDRFlowPropertyConstraints 1
  351. }
  352. # Create 'synth_1' run (if not found)
  353. if {[string equal [get_runs -quiet synth_1] ""]} {
  354. create_run -name synth_1 -part xc7a100tfgg484-2 -flow {Vivado Synthesis 2024} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset constrs_1
  355. } else {
  356. set_property strategy "Vivado Synthesis Defaults" [get_runs synth_1]
  357. set_property flow "Vivado Synthesis 2024" [get_runs synth_1]
  358. }
  359. set obj [get_runs synth_1]
  360. set_property set_report_strategy_name 1 $obj
  361. set_property report_strategy {Vivado Synthesis Default Reports} $obj
  362. set_property set_report_strategy_name 0 $obj
  363. # Create 'synth_1_synth_report_utilization_0' report (if not found)
  364. if { [ string equal [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] "" ] } {
  365. create_report_config -report_name synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs synth_1
  366. }
  367. set obj [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0]
  368. if { $obj != "" } {
  369. }
  370. set obj [get_runs synth_1]
  371. set_property -name "needs_refresh" -value "1" -objects $obj
  372. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  373. set_property -name "auto_incremental_checkpoint" -value "1" -objects $obj
  374. set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj
  375. # set the current synth run
  376. current_run -synthesis [get_runs synth_1]
  377. # Create 'impl_1' run (if not found)
  378. if {[string equal [get_runs -quiet impl_1] ""]} {
  379. 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
  380. } else {
  381. set_property strategy "Vivado Implementation Defaults" [get_runs impl_1]
  382. set_property flow "Vivado Implementation 2024" [get_runs impl_1]
  383. }
  384. set obj [get_runs impl_1]
  385. set_property set_report_strategy_name 1 $obj
  386. set_property report_strategy {Vivado Implementation Default Reports} $obj
  387. set_property set_report_strategy_name 0 $obj
  388. # Create 'impl_1_init_report_timing_summary_0' report (if not found)
  389. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] "" ] } {
  390. 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
  391. }
  392. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0]
  393. if { $obj != "" } {
  394. set_property -name "is_enabled" -value "0" -objects $obj
  395. set_property -name "options.max_paths" -value "10" -objects $obj
  396. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  397. }
  398. # Create 'impl_1_opt_report_drc_0' report (if not found)
  399. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] "" ] } {
  400. create_report_config -report_name impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs impl_1
  401. }
  402. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0]
  403. if { $obj != "" } {
  404. }
  405. # Create 'impl_1_opt_report_timing_summary_0' report (if not found)
  406. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] "" ] } {
  407. 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
  408. }
  409. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0]
  410. if { $obj != "" } {
  411. set_property -name "is_enabled" -value "0" -objects $obj
  412. set_property -name "options.max_paths" -value "10" -objects $obj
  413. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  414. }
  415. # Create 'impl_1_power_opt_report_timing_summary_0' report (if not found)
  416. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] "" ] } {
  417. 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
  418. }
  419. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0]
  420. if { $obj != "" } {
  421. set_property -name "is_enabled" -value "0" -objects $obj
  422. set_property -name "options.max_paths" -value "10" -objects $obj
  423. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  424. }
  425. # Create 'impl_1_place_report_io_0' report (if not found)
  426. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] "" ] } {
  427. create_report_config -report_name impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs impl_1
  428. }
  429. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0]
  430. if { $obj != "" } {
  431. }
  432. # Create 'impl_1_place_report_utilization_0' report (if not found)
  433. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] "" ] } {
  434. create_report_config -report_name impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs impl_1
  435. }
  436. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0]
  437. if { $obj != "" } {
  438. }
  439. # Create 'impl_1_place_report_control_sets_0' report (if not found)
  440. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] "" ] } {
  441. 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
  442. }
  443. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0]
  444. if { $obj != "" } {
  445. set_property -name "options.verbose" -value "1" -objects $obj
  446. }
  447. # Create 'impl_1_place_report_incremental_reuse_0' report (if not found)
  448. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] "" ] } {
  449. 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
  450. }
  451. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0]
  452. if { $obj != "" } {
  453. set_property -name "is_enabled" -value "0" -objects $obj
  454. }
  455. # Create 'impl_1_place_report_incremental_reuse_1' report (if not found)
  456. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] "" ] } {
  457. 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
  458. }
  459. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1]
  460. if { $obj != "" } {
  461. set_property -name "is_enabled" -value "0" -objects $obj
  462. }
  463. # Create 'impl_1_place_report_timing_summary_0' report (if not found)
  464. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] "" ] } {
  465. 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
  466. }
  467. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0]
  468. if { $obj != "" } {
  469. set_property -name "is_enabled" -value "0" -objects $obj
  470. set_property -name "options.max_paths" -value "10" -objects $obj
  471. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  472. }
  473. # Create 'impl_1_post_place_power_opt_report_timing_summary_0' report (if not found)
  474. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] "" ] } {
  475. 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
  476. }
  477. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0]
  478. if { $obj != "" } {
  479. set_property -name "is_enabled" -value "0" -objects $obj
  480. set_property -name "options.max_paths" -value "10" -objects $obj
  481. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  482. }
  483. # Create 'impl_1_phys_opt_report_timing_summary_0' report (if not found)
  484. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] "" ] } {
  485. 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
  486. }
  487. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0]
  488. if { $obj != "" } {
  489. set_property -name "is_enabled" -value "0" -objects $obj
  490. set_property -name "options.max_paths" -value "10" -objects $obj
  491. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  492. }
  493. # Create 'impl_1_route_report_drc_0' report (if not found)
  494. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] "" ] } {
  495. create_report_config -report_name impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs impl_1
  496. }
  497. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0]
  498. if { $obj != "" } {
  499. }
  500. # Create 'impl_1_route_report_methodology_0' report (if not found)
  501. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] "" ] } {
  502. create_report_config -report_name impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs impl_1
  503. }
  504. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0]
  505. if { $obj != "" } {
  506. }
  507. # Create 'impl_1_route_report_power_0' report (if not found)
  508. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] "" ] } {
  509. create_report_config -report_name impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs impl_1
  510. }
  511. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0]
  512. if { $obj != "" } {
  513. }
  514. # Create 'impl_1_route_report_route_status_0' report (if not found)
  515. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] "" ] } {
  516. 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
  517. }
  518. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0]
  519. if { $obj != "" } {
  520. }
  521. # Create 'impl_1_route_report_timing_summary_0' report (if not found)
  522. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] "" ] } {
  523. 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
  524. }
  525. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0]
  526. if { $obj != "" } {
  527. set_property -name "options.max_paths" -value "10" -objects $obj
  528. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  529. }
  530. # Create 'impl_1_route_report_incremental_reuse_0' report (if not found)
  531. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] "" ] } {
  532. 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
  533. }
  534. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0]
  535. if { $obj != "" } {
  536. }
  537. # Create 'impl_1_route_report_clock_utilization_0' report (if not found)
  538. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] "" ] } {
  539. 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
  540. }
  541. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0]
  542. if { $obj != "" } {
  543. }
  544. # Create 'impl_1_route_report_bus_skew_0' report (if not found)
  545. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] "" ] } {
  546. 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
  547. }
  548. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0]
  549. if { $obj != "" } {
  550. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  551. }
  552. # Create 'impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found)
  553. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } {
  554. 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
  555. }
  556. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0]
  557. if { $obj != "" } {
  558. set_property -name "options.max_paths" -value "10" -objects $obj
  559. set_property -name "options.report_unconstrained" -value "1" -objects $obj
  560. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  561. }
  562. # Create 'impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found)
  563. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } {
  564. 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
  565. }
  566. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0]
  567. if { $obj != "" } {
  568. set_property -name "options.warn_on_violation" -value "1" -objects $obj
  569. }
  570. set obj [get_runs impl_1]
  571. set_property -name "needs_refresh" -value "1" -objects $obj
  572. set_property -name "part" -value "xc7a100tfgg484-2" -objects $obj
  573. set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj
  574. set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj
  575. set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj
  576. # set the current impl run
  577. current_run -implementation [get_runs impl_1]
  578. catch {
  579. if { $idrFlowPropertiesConstraints != {} } {
  580. set_param runs.disableIDRFlowPropertyConstraints $idrFlowPropertiesConstraints
  581. }
  582. }
  583. puts "INFO: Project created:${_xil_proj_name_}"
  584. # Create 'drc_1' gadget (if not found)
  585. if {[string equal [get_dashboard_gadgets [ list "drc_1" ] ] ""]} {
  586. create_dashboard_gadget -name {drc_1} -type drc
  587. }
  588. set obj [get_dashboard_gadgets [ list "drc_1" ] ]
  589. set_property -name "reports" -value "impl_1#impl_1_route_report_drc_0" -objects $obj
  590. # Create 'methodology_1' gadget (if not found)
  591. if {[string equal [get_dashboard_gadgets [ list "methodology_1" ] ] ""]} {
  592. create_dashboard_gadget -name {methodology_1} -type methodology
  593. }
  594. set obj [get_dashboard_gadgets [ list "methodology_1" ] ]
  595. set_property -name "reports" -value "impl_1#impl_1_route_report_methodology_0" -objects $obj
  596. # Create 'power_1' gadget (if not found)
  597. if {[string equal [get_dashboard_gadgets [ list "power_1" ] ] ""]} {
  598. create_dashboard_gadget -name {power_1} -type power
  599. }
  600. set obj [get_dashboard_gadgets [ list "power_1" ] ]
  601. set_property -name "reports" -value "impl_1#impl_1_route_report_power_0" -objects $obj
  602. # Create 'timing_1' gadget (if not found)
  603. if {[string equal [get_dashboard_gadgets [ list "timing_1" ] ] ""]} {
  604. create_dashboard_gadget -name {timing_1} -type timing
  605. }
  606. set obj [get_dashboard_gadgets [ list "timing_1" ] ]
  607. set_property -name "reports" -value "impl_1#impl_1_route_report_timing_summary_0" -objects $obj
  608. # Create 'utilization_1' gadget (if not found)
  609. if {[string equal [get_dashboard_gadgets [ list "utilization_1" ] ] ""]} {
  610. create_dashboard_gadget -name {utilization_1} -type utilization
  611. }
  612. set obj [get_dashboard_gadgets [ list "utilization_1" ] ]
  613. set_property -name "reports" -value "synth_1#synth_1_synth_report_utilization_0" -objects $obj
  614. set_property -name "run.step" -value "synth_design" -objects $obj
  615. set_property -name "run.type" -value "synthesis" -objects $obj
  616. # Create 'utilization_2' gadget (if not found)
  617. if {[string equal [get_dashboard_gadgets [ list "utilization_2" ] ] ""]} {
  618. create_dashboard_gadget -name {utilization_2} -type utilization
  619. }
  620. set obj [get_dashboard_gadgets [ list "utilization_2" ] ]
  621. set_property -name "reports" -value "impl_1#impl_1_place_report_utilization_0" -objects $obj
  622. move_dashboard_gadget -name {utilization_1} -row 0 -col 0
  623. move_dashboard_gadget -name {power_1} -row 1 -col 0
  624. move_dashboard_gadget -name {drc_1} -row 2 -col 0
  625. move_dashboard_gadget -name {timing_1} -row 0 -col 1
  626. move_dashboard_gadget -name {utilization_2} -row 1 -col 1
  627. move_dashboard_gadget -name {methodology_1} -row 2 -col 1
  628. ##################################################################
  629. # CHECK VIVADO VERSION
  630. ##################################################################
  631. set scripts_vivado_version 2024.1
  632. set current_vivado_version [version -short]
  633. if { [string first $scripts_vivado_version $current_vivado_version] == -1 } {
  634. 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."}
  635. return 1
  636. }
  637. ##################################################################
  638. # START
  639. ##################################################################
  640. # To test this script, run the following commands from Vivado Tcl console:
  641. # source recreateIp.tcl
  642. # If there is no project opened, this script will create a
  643. # project, but make sure you do not have an existing project
  644. # in the current working folder.
  645. set list_projs [get_projects -quiet]
  646. if { $list_projs eq "" } {
  647. create_project VNA_XDMA VNA_XDMA_PROJ -part xc7a100tfgg484-2
  648. set_property target_language Verilog [current_project]
  649. set_property simulator_language Verilog [current_project]
  650. }
  651. ##################################################################
  652. # CHECK IPs
  653. ##################################################################
  654. set bCheckIPs 1
  655. set bCheckIPsPassed 1
  656. if { $bCheckIPs == 1 } {
  657. set list_check_ips { xilinx.com:ip:fifo_generator:13.2 xilinx.com:ip:clk_wiz:6.0 xilinx.com:ip:blk_mem_gen:8.4 xilinx.com:ip:xdma:4.1 }
  658. set list_ips_missing ""
  659. common::send_msg_id "IPS_TCL-1001" "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ."
  660. foreach ip_vlnv $list_check_ips {
  661. set ip_obj [get_ipdefs -all $ip_vlnv]
  662. if { $ip_obj eq "" } {
  663. lappend list_ips_missing $ip_vlnv
  664. }
  665. }
  666. if { $list_ips_missing ne "" } {
  667. 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." }
  668. set bCheckIPsPassed 0
  669. }
  670. }
  671. if { $bCheckIPsPassed != 1 } {
  672. common::send_msg_id "IPS_TCL-102" "WARNING" "Will not continue with creation of design due to the error(s) above."
  673. return 1
  674. }
  675. ##################################################################
  676. # CREATE IP FifoAttPe
  677. ##################################################################
  678. set FifoAttPe [create_ip -name fifo_generator -vendor xilinx.com -library ip -version 13.2 -module_name FifoAttPe]
  679. # User Parameters
  680. set_property -dict [list \
  681. CONFIG.Fifo_Implementation {Independent_Clocks_Distributed_RAM} \
  682. CONFIG.Input_Data_Width {8} \
  683. CONFIG.Input_Depth {16} \
  684. CONFIG.Performance_Options {First_Word_Fall_Through} \
  685. ] [get_ips FifoAttPe]
  686. # Runtime Parameters
  687. set_property -dict {
  688. GENERATE_SYNTH_CHECKPOINT {1}
  689. } $FifoAttPe
  690. ##################################################################
  691. ##################################################################
  692. # CREATE IP FifoLMK
  693. ##################################################################
  694. set FifoLMK [create_ip -name fifo_generator -vendor xilinx.com -library ip -version 13.2 -module_name FifoLMK]
  695. # User Parameters
  696. set_property -dict [list \
  697. CONFIG.Fifo_Implementation {Independent_Clocks_Builtin_FIFO} \
  698. CONFIG.Input_Data_Width {24} \
  699. CONFIG.Input_Depth {512} \
  700. CONFIG.Performance_Options {First_Word_Fall_Through} \
  701. ] [get_ips FifoLMK]
  702. # Runtime Parameters
  703. set_property -dict {
  704. GENERATE_SYNTH_CHECKPOINT {1}
  705. } $FifoLMK
  706. ##################################################################
  707. ##################################################################
  708. # CREATE IP FifoTmsg
  709. ##################################################################
  710. set FifoTmsg [create_ip -name fifo_generator -vendor xilinx.com -library ip -version 13.2 -module_name FifoTmsg]
  711. # User Parameters
  712. set_property -dict [list \
  713. CONFIG.Fifo_Implementation {Independent_Clocks_Builtin_FIFO} \
  714. CONFIG.Input_Data_Width {32} \
  715. CONFIG.Input_Depth {512} \
  716. CONFIG.Performance_Options {First_Word_Fall_Through} \
  717. ] [get_ips FifoTmsg]
  718. # Runtime Parameters
  719. set_property -dict {
  720. GENERATE_SYNTH_CHECKPOINT {1}
  721. } $FifoTmsg
  722. ##################################################################
  723. ##################################################################
  724. # CREATE IP PllSpi
  725. ##################################################################
  726. set PllSpi [create_ip -name clk_wiz -vendor xilinx.com -library ip -version 6.0 -module_name PllSpi]
  727. # User Parameters
  728. set_property -dict [list \
  729. CONFIG.CLKIN1_JITTER_PS {80.0} \
  730. CONFIG.CLKOUT1_JITTER {197.700} \
  731. CONFIG.CLKOUT1_PHASE_ERROR {96.948} \
  732. CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {10} \
  733. CONFIG.CLKOUT2_JITTER {143.688} \
  734. CONFIG.CLKOUT2_PHASE_ERROR {96.948} \
  735. CONFIG.CLKOUT2_REQUESTED_OUT_FREQ {50} \
  736. CONFIG.CLKOUT2_USED {true} \
  737. CONFIG.MMCM_CLKFBOUT_MULT_F {8.000} \
  738. CONFIG.MMCM_CLKIN1_PERIOD {8.000} \
  739. CONFIG.MMCM_CLKOUT0_DIVIDE_F {100.000} \
  740. CONFIG.MMCM_CLKOUT1_DIVIDE {20} \
  741. CONFIG.NUM_OUT_CLKS {2} \
  742. CONFIG.PRIM_IN_FREQ {125} \
  743. CONFIG.USE_LOCKED {false} \
  744. CONFIG.USE_RESET {false} \
  745. ] [get_ips PllSpi]
  746. # Runtime Parameters
  747. set_property -dict {
  748. GENERATE_SYNTH_CHECKPOINT {1}
  749. } $PllSpi
  750. ##################################################################
  751. ##################################################################
  752. # CREATE IP blk_mem_gen_1
  753. ##################################################################
  754. set blk_mem_gen_1 [create_ip -name blk_mem_gen -vendor xilinx.com -library ip -version 8.4 -module_name blk_mem_gen_1]
  755. # User Parameters
  756. set_property -dict [list \
  757. CONFIG.Interface_Type {AXI4} \
  758. CONFIG.Write_Width_A {64} \
  759. ] [get_ips blk_mem_gen_1]
  760. # Runtime Parameters
  761. set_property -dict {
  762. GENERATE_SYNTH_CHECKPOINT {1}
  763. } $blk_mem_gen_1
  764. ##################################################################
  765. ##################################################################
  766. # CREATE IP xdma_0
  767. ##################################################################
  768. # set_property simulator_language MIXED [current_project]
  769. # set xdma_0 [create_ip -name xdma -vendor xilinx.com -library ip -version 4.1 -module_name xdma_0]
  770. # # User Parameters
  771. # set_property -dict [list \
  772. # CONFIG.PF0_DEVICE_ID_mqdma {9022} \
  773. # CONFIG.PF0_SRIOV_VF_DEVICE_ID {0000} \
  774. # CONFIG.PF1_SRIOV_VF_DEVICE_ID {A132} \
  775. # CONFIG.PF2_DEVICE_ID_mqdma {9022} \
  776. # CONFIG.PF2_SRIOV_VF_DEVICE_ID {A232} \
  777. # CONFIG.PF3_DEVICE_ID_mqdma {9022} \
  778. # CONFIG.PF3_SRIOV_VF_DEVICE_ID {A332} \
  779. # CONFIG.axist_bypass_en {true} \
  780. # CONFIG.axisten_freq {125} \
  781. # CONFIG.copy_pf0 {true} \
  782. # CONFIG.pf0_device_id {7022} \
  783. # CONFIG.pf1_msix_cap_pba_offset {00000000} \
  784. # CONFIG.pf1_msix_cap_table_offset {00000000} \
  785. # CONFIG.pf1_msix_cap_table_size {000} \
  786. # CONFIG.pl_link_cap_max_link_speed {5.0_GT/s} \
  787. # CONFIG.pl_link_cap_max_link_width {X2} \
  788. # CONFIG.plltype {QPLL1} \
  789. # CONFIG.runbit_fix {false} \
  790. # ] [get_ips xdma_0]
  791. # # Runtime Parameters
  792. # set_property -dict {
  793. # GENERATE_SYNTH_CHECKPOINT {1}
  794. # } $xdma_0
  795. ##################################################################