complete-bd.tcl 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. # Set the reference directory for source file relative paths (by default the value is script directory path)
  2. set origin_dir "."
  3. # Use origin directory path location variable, if specified in the tcl shell
  4. if { [info exists ::origin_dir_loc] } {
  5. set origin_dir $::origin_dir_loc
  6. }
  7. # Set the project name
  8. set _xil_proj_name_ "complete-bd"
  9. # Use project name variable, if specified in the tcl shell
  10. if { [info exists ::user_project_name] } {
  11. set _xil_proj_name_ $::user_project_name
  12. }
  13. variable script_file
  14. set script_file ".exported.tcl"
  15. # Help information for this script
  16. proc print_help {} {
  17. variable script_file
  18. puts "\nDescription:"
  19. puts "Recreate a Vivado project from this script. The created project will be"
  20. puts "functionally equivalent to the original project for which this script was"
  21. puts "generated. The script contains commands for creating a project, filesets,"
  22. puts "runs, adding/importing sources and setting properties on various objects.\n"
  23. puts "Syntax:"
  24. puts "$script_file"
  25. puts "$script_file -tclargs \[--origin_dir <path>\]"
  26. puts "$script_file -tclargs \[--project_name <name>\]"
  27. puts "$script_file -tclargs \[--help\]\n"
  28. puts "Usage:"
  29. puts "Name Description"
  30. puts "-------------------------------------------------------------------------"
  31. puts "\[--origin_dir <path>\] Determine source file paths wrt this path. Default"
  32. puts " origin_dir path value is \".\", otherwise, the value"
  33. puts " that was set with the \"-paths_relative_to\" switch"
  34. puts " when this script was generated.\n"
  35. puts "\[--project_name <name>\] Create project with the specified name. Default"
  36. puts " name is the name of the project from where this"
  37. puts " script was generated.\n"
  38. puts "\[--help\] Print help information for this script"
  39. puts "-------------------------------------------------------------------------\n"
  40. exit 0
  41. }
  42. if { $::argc > 0 } {
  43. for {set i 0} {$i < $::argc} {incr i} {
  44. set option [string trim [lindex $::argv $i]]
  45. switch -regexp -- $option {
  46. "--origin_dir" { incr i; set origin_dir [lindex $::argv $i] }
  47. "--project_name" { incr i; set _xil_proj_name_ [lindex $::argv $i] }
  48. "--help" { print_help }
  49. default {
  50. if { [regexp {^-} $option] } {
  51. puts "ERROR: Unknown option '$option' specified, please type '$script_file -tclargs --help' for usage info.\n"
  52. return 1
  53. }
  54. }
  55. }
  56. }
  57. }
  58. # Set the directory path for the original project from where this script was exported
  59. set orig_proj_dir "[file normalize "sources/complete-bd"]"
  60. # Create project
  61. create_project complete-bd workspace/complete-bd
  62. # Set the directory path for the new project
  63. set proj_dir [get_property directory [current_project]]
  64. # Set project properties
  65. set obj [current_project]
  66. set_property -name "default_lib" -value "xil_defaultlib" -objects $obj
  67. set_property -name "dsa.accelerator_binary_content" -value "bitstream" -objects $obj
  68. set_property -name "dsa.accelerator_binary_format" -value "xclbin2" -objects $obj
  69. set_property -name "dsa.description" -value "Vivado generated DSA" -objects $obj
  70. set_property -name "dsa.dr_bd_base_address" -value "0" -objects $obj
  71. set_property -name "dsa.emu_dir" -value "emu" -objects $obj
  72. set_property -name "dsa.flash_interface_type" -value "bpix16" -objects $obj
  73. set_property -name "dsa.flash_offset_address" -value "0" -objects $obj
  74. set_property -name "dsa.flash_size" -value "1024" -objects $obj
  75. set_property -name "dsa.host_architecture" -value "x86_64" -objects $obj
  76. set_property -name "dsa.host_interface" -value "pcie" -objects $obj
  77. set_property -name "dsa.num_compute_units" -value "60" -objects $obj
  78. set_property -name "dsa.platform_state" -value "pre_synth" -objects $obj
  79. set_property -name "dsa.vendor" -value "xilinx" -objects $obj
  80. set_property -name "dsa.version" -value "0.0" -objects $obj
  81. set_property -name "enable_vhdl_2008" -value "1" -objects $obj
  82. set_property -name "ip_cache_permissions" -value "read write" -objects $obj
  83. set_property -name "ip_output_repo" -value "" -objects $obj
  84. set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj
  85. set_property -name "part" -value "xc7a100tcsg324-1" -objects $obj
  86. set_property -name "sim.central_dir" -value "" -objects $obj
  87. set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj
  88. set_property -name "simulator_language" -value "Mixed" -objects $obj
  89. set_property -name "target_language" -value "VHDL" -objects $obj
  90. set_property -name "webtalk.activehdl_export_sim" -value "1" -objects $obj
  91. set_property -name "webtalk.ies_export_sim" -value "1" -objects $obj
  92. set_property -name "webtalk.modelsim_export_sim" -value "1" -objects $obj
  93. set_property -name "webtalk.questa_export_sim" -value "1" -objects $obj
  94. set_property -name "webtalk.riviera_export_sim" -value "1" -objects $obj
  95. set_property -name "webtalk.vcs_export_sim" -value "1" -objects $obj
  96. set_property -name "webtalk.xsim_export_sim" -value "1" -objects $obj
  97. set_property -name "xpm_libraries" -value "XPM_CDC XPM_MEMORY" -objects $obj
  98. # Create 'sources_1' fileset (if not found)
  99. if {[string equal [get_filesets -quiet sources_1] ""]} {
  100. create_fileset -srcset sources_1
  101. }
  102. # Set IP repository paths
  103. set obj [get_filesets sources_1]
  104. # set_property "ip_repo_paths" "[file normalize "$origin_dir/workspace/ip_repo"]" $obj
  105. set_property "ip_repo_paths" "[file normalize "workspace/ip_repo"]" $obj
  106. # Rebuild user ip_repo's index before adding any source files
  107. update_ip_catalog -rebuild
  108. puts "*** BEGINNING TO RECONSTRUCT BLOCK DESIGNS"
  109. foreach {bd_file} [glob sources/complete-bd.bd/*] {
  110. source $bd_file
  111. }
  112. puts "*** FINISHED RECONSTRUCTING BLOCK DESIGNS"
  113. # Set 'sources_1' fileset object
  114. set obj [get_filesets sources_1]
  115. # Set 'sources_1' fileset file properties for remote files
  116. # None
  117. # Set 'sources_1' fileset file properties for local files
  118. # None
  119. # Set 'sources_1' fileset properties
  120. set obj [get_filesets sources_1]
  121. # Create 'constrs_1' fileset (if not found)
  122. if {[string equal [get_filesets -quiet constrs_1] ""]} {
  123. create_fileset -constrset constrs_1
  124. }
  125. # Set 'constrs_1' fileset object
  126. set obj [get_filesets constrs_1]
  127. # Add/Import constrs file and set constrs file properties
  128. # set file "[file normalize ${origin_dir}/workspace/complete-bd/complete-bd.srcs/constrs_1/imports/new/nexys_4_ddr.xdc]"
  129. # set file_imported [import_files -fileset constrs_1 [list $file]]
  130. # set file "new/nexys_4_ddr.xdc"
  131. # set file_obj [get_files -of_objects [get_filesets constrs_1] [list "*$file"]]
  132. # set_property -name "file_type" -value "XDC" -objects $file_obj
  133. # Set 'constrs_1' fileset properties
  134. set obj [get_filesets constrs_1]
  135. set_property -name "target_part" -value "xc7a100tcsg324-1" -objects $obj
  136. # Create 'sim_1' fileset (if not found)
  137. if {[string equal [get_filesets -quiet sim_1] ""]} {
  138. create_fileset -simset sim_1
  139. }
  140. # Set 'sim_1' fileset object
  141. set obj [get_filesets sim_1]
  142. # Empty (no sources present)
  143. # Set 'sim_1' fileset properties
  144. set obj [get_filesets sim_1]
  145. # Set 'utils_1' fileset object
  146. set obj [get_filesets utils_1]
  147. # Empty (no sources present)
  148. # Set 'utils_1' fileset properties
  149. set obj [get_filesets utils_1]
  150. # Adding sources referenced in BDs, if not already added
  151. # Proc to create BD design_1
  152. proc cr_bd_design_1 { parentCell } {
  153. # CHANGE DESIGN NAME HERE
  154. set design_name design_1
  155. common::send_msg_id "BD_TCL-003" "INFO" "Currently there is no design <$design_name> in project, so creating one..."
  156. create_bd_design $design_name
  157. set bCheckIPsPassed 1
  158. ##################################################################
  159. # CHECK IPs
  160. ##################################################################
  161. set bCheckIPs 1
  162. if { $bCheckIPs == 1 } {
  163. set list_check_ips "\
  164. xilinx.com:ip:c_counter_binary:12.0\
  165. xilinx.com:user:ethernet_transceiver2:1.0\
  166. xilinx.com:ip:fifo_generator:13.2\
  167. xilinx.com:ip:c_addsub:12.0\
  168. user.org:user:packaging:3.0\
  169. xilinx.com:user:segment:1.0\
  170. xilinx.com:ip:xlconcat:2.1\
  171. xilinx.com:ip:xlconstant:1.1\
  172. xilinx.com:ip:xlslice:1.0\
  173. "
  174. set list_ips_missing ""
  175. common::send_msg_id "BD_TCL-006" "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ."
  176. foreach ip_vlnv $list_check_ips {
  177. set ip_obj [get_ipdefs -all $ip_vlnv]
  178. if { $ip_obj eq "" } {
  179. lappend list_ips_missing $ip_vlnv
  180. }
  181. }
  182. if { $list_ips_missing ne "" } {
  183. catch {common::send_msg_id "BD_TCL-115" "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." }
  184. set bCheckIPsPassed 0
  185. }
  186. }
  187. if { $bCheckIPsPassed != 1 } {
  188. common::send_msg_id "BD_TCL-1003" "WARNING" "Will not continue with creation of design due to the error(s) above."
  189. return 3
  190. }
  191. variable script_folder
  192. if { $parentCell eq "" } {
  193. set parentCell [get_bd_cells /]
  194. }
  195. # Get object for parentCell
  196. set parentObj [get_bd_cells $parentCell]
  197. if { $parentObj == "" } {
  198. catch {common::send_msg_id "BD_TCL-100" "ERROR" "Unable to find parent cell <$parentCell>!"}
  199. return
  200. }
  201. # Make sure parentObj is hier blk
  202. set parentType [get_property TYPE $parentObj]
  203. if { $parentType ne "hier" } {
  204. catch {common::send_msg_id "BD_TCL-101" "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be <hier>."}
  205. return
  206. }
  207. # Save current instance; Restore later
  208. set oldCurInst [current_bd_instance .]
  209. # Set parent object as current
  210. current_bd_instance $parentObj
  211. # Create interface ports
  212. # Create ports
  213. set anodes_0 [ create_bd_port -dir O -from 0 -to 7 anodes_0 ]
  214. set cathodes_0 [ create_bd_port -dir O -from 0 -to 7 cathodes_0 ]
  215. set clk_100MHz [ create_bd_port -dir I -type clk clk_100MHz ]
  216. set_property -dict [ list \
  217. CONFIG.FREQ_HZ {100000000} \
  218. ] $clk_100MHz
  219. set eth_crsdv_0 [ create_bd_port -dir IO eth_crsdv_0 ]
  220. set eth_mdc_0 [ create_bd_port -dir O eth_mdc_0 ]
  221. set eth_mdio_0 [ create_bd_port -dir IO eth_mdio_0 ]
  222. set eth_refclk_0 [ create_bd_port -dir O eth_refclk_0 ]
  223. set eth_rstn_0 [ create_bd_port -dir IO -type rst eth_rstn_0 ]
  224. set eth_rxd_0 [ create_bd_port -dir IO -from 1 -to 0 eth_rxd_0 ]
  225. set eth_rxerr_0 [ create_bd_port -dir IO eth_rxerr_0 ]
  226. set eth_txd_0 [ create_bd_port -dir IO -from 1 -to 0 eth_txd_0 ]
  227. set eth_txen_0 [ create_bd_port -dir IO eth_txen_0 ]
  228. set led16_b_0 [ create_bd_port -dir O led16_b_0 ]
  229. set led16_g_0 [ create_bd_port -dir O led16_g_0 ]
  230. set led16_r_0 [ create_bd_port -dir O led16_r_0 ]
  231. set led17_b_0 [ create_bd_port -dir O led17_b_0 ]
  232. set led17_g_0 [ create_bd_port -dir O led17_g_0 ]
  233. set led17_r_0 [ create_bd_port -dir O led17_r_0 ]
  234. set led_0 [ create_bd_port -dir O -from 15 -to 0 led_0 ]
  235. set reset_rtl_0 [ create_bd_port -dir I -type rst reset_rtl_0 ]
  236. set_property -dict [ list \
  237. CONFIG.POLARITY {ACTIVE_LOW} \
  238. ] $reset_rtl_0
  239. set sw_0 [ create_bd_port -dir I -from 4 -to 0 sw_0 ]
  240. # Create instance: c_counter_binary_0, and set properties
  241. set c_counter_binary_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:c_counter_binary:12.0 c_counter_binary_0 ]
  242. set_property -dict [ list \
  243. CONFIG.CE {true} \
  244. CONFIG.Fb_Latency {2} \
  245. CONFIG.Fb_Latency_Configuration {Automatic} \
  246. CONFIG.Final_Count_Value {270F} \
  247. CONFIG.Latency_Configuration {Automatic} \
  248. CONFIG.Restrict_Count {true} \
  249. CONFIG.SCLR {true} \
  250. CONFIG.SSET {false} \
  251. ] $c_counter_binary_0
  252. # Create instance: c_counter_binary_1, and set properties
  253. set c_counter_binary_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:c_counter_binary:12.0 c_counter_binary_1 ]
  254. set_property -dict [ list \
  255. CONFIG.CE {true} \
  256. CONFIG.Fb_Latency {2} \
  257. CONFIG.Fb_Latency_Configuration {Automatic} \
  258. CONFIG.Final_Count_Value {270F} \
  259. CONFIG.Latency_Configuration {Automatic} \
  260. CONFIG.Restrict_Count {true} \
  261. CONFIG.SCLR {true} \
  262. CONFIG.SSET {false} \
  263. ] $c_counter_binary_1
  264. # Create instance: ethernet_transceiver2_0, and set properties
  265. set ethernet_transceiver2_0 [ create_bd_cell -type ip -vlnv xilinx.com:user:ethernet_transceiver2:1.0 ethernet_transceiver2_0 ]
  266. # Create instance: fifo_input, and set properties
  267. set fifo_input [ create_bd_cell -type ip -vlnv xilinx.com:ip:fifo_generator:13.2 fifo_input ]
  268. set_property -dict [ list \
  269. CONFIG.Almost_Empty_Flag {false} \
  270. CONFIG.Data_Count {false} \
  271. CONFIG.Data_Count_Width {6} \
  272. CONFIG.Empty_Threshold_Assert_Value {2} \
  273. CONFIG.Empty_Threshold_Assert_Value_rach {1022} \
  274. CONFIG.Empty_Threshold_Assert_Value_wach {1022} \
  275. CONFIG.Empty_Threshold_Assert_Value_wrch {1022} \
  276. CONFIG.Empty_Threshold_Negate_Value {3} \
  277. CONFIG.Enable_Safety_Circuit {false} \
  278. CONFIG.FIFO_Implementation_rach {Common_Clock_Distributed_RAM} \
  279. CONFIG.FIFO_Implementation_wach {Common_Clock_Distributed_RAM} \
  280. CONFIG.FIFO_Implementation_wrch {Common_Clock_Distributed_RAM} \
  281. CONFIG.Fifo_Implementation {Common_Clock_Distributed_RAM} \
  282. CONFIG.Full_Flags_Reset_Value {0} \
  283. CONFIG.Full_Threshold_Assert_Value {62} \
  284. CONFIG.Full_Threshold_Assert_Value_rach {1023} \
  285. CONFIG.Full_Threshold_Assert_Value_wach {1023} \
  286. CONFIG.Full_Threshold_Assert_Value_wrch {1023} \
  287. CONFIG.Full_Threshold_Negate_Value {61} \
  288. CONFIG.INTERFACE_TYPE {Native} \
  289. CONFIG.Input_Data_Width {32} \
  290. CONFIG.Input_Depth {64} \
  291. CONFIG.Output_Data_Width {32} \
  292. CONFIG.Output_Depth {64} \
  293. CONFIG.Overflow_Flag {true} \
  294. CONFIG.Performance_Options {Standard_FIFO} \
  295. CONFIG.Programmable_Empty_Type {No_Programmable_Empty_Threshold} \
  296. CONFIG.Programmable_Full_Type {No_Programmable_Full_Threshold} \
  297. CONFIG.Read_Data_Count {false} \
  298. CONFIG.Read_Data_Count_Width {6} \
  299. CONFIG.Reset_Pin {true} \
  300. CONFIG.Reset_Type {Synchronous_Reset} \
  301. CONFIG.Underflow_Flag {false} \
  302. CONFIG.Use_Dout_Reset {true} \
  303. CONFIG.Use_Embedded_Registers {false} \
  304. CONFIG.Use_Extra_Logic {false} \
  305. CONFIG.Valid_Flag {false} \
  306. CONFIG.Write_Data_Count {false} \
  307. CONFIG.Write_Data_Count_Width {6} \
  308. ] $fifo_input
  309. # Create instance: fifo_output, and set properties
  310. set fifo_output [ create_bd_cell -type ip -vlnv xilinx.com:ip:fifo_generator:13.2 fifo_output ]
  311. set_property -dict [ list \
  312. CONFIG.Almost_Empty_Flag {false} \
  313. CONFIG.Almost_Full_Flag {false} \
  314. CONFIG.Data_Count {false} \
  315. CONFIG.Data_Count_Width {9} \
  316. CONFIG.Empty_Threshold_Assert_Value {2} \
  317. CONFIG.Empty_Threshold_Assert_Value_rach {1022} \
  318. CONFIG.Empty_Threshold_Assert_Value_wach {1022} \
  319. CONFIG.Empty_Threshold_Assert_Value_wrch {1022} \
  320. CONFIG.Empty_Threshold_Negate_Value {3} \
  321. CONFIG.Enable_Safety_Circuit {false} \
  322. CONFIG.FIFO_Implementation_rach {Common_Clock_Distributed_RAM} \
  323. CONFIG.FIFO_Implementation_wach {Common_Clock_Distributed_RAM} \
  324. CONFIG.FIFO_Implementation_wrch {Common_Clock_Distributed_RAM} \
  325. CONFIG.Fifo_Implementation {Independent_Clocks_Distributed_RAM} \
  326. CONFIG.Full_Flags_Reset_Value {1} \
  327. CONFIG.Full_Threshold_Assert_Value {509} \
  328. CONFIG.Full_Threshold_Assert_Value_rach {1023} \
  329. CONFIG.Full_Threshold_Assert_Value_wach {1023} \
  330. CONFIG.Full_Threshold_Assert_Value_wrch {1023} \
  331. CONFIG.Full_Threshold_Negate_Value {508} \
  332. CONFIG.INTERFACE_TYPE {Native} \
  333. CONFIG.Input_Data_Width {32} \
  334. CONFIG.Input_Depth {512} \
  335. CONFIG.Output_Data_Width {32} \
  336. CONFIG.Output_Depth {512} \
  337. CONFIG.Overflow_Flag {true} \
  338. CONFIG.Performance_Options {Standard_FIFO} \
  339. CONFIG.Programmable_Empty_Type {No_Programmable_Empty_Threshold} \
  340. CONFIG.Programmable_Full_Type {No_Programmable_Full_Threshold} \
  341. CONFIG.Read_Data_Count {true} \
  342. CONFIG.Read_Data_Count_Width {9} \
  343. CONFIG.Reset_Pin {true} \
  344. CONFIG.Reset_Type {Asynchronous_Reset} \
  345. CONFIG.Underflow_Flag {false} \
  346. CONFIG.Use_Dout_Reset {true} \
  347. CONFIG.Use_Embedded_Registers {false} \
  348. CONFIG.Use_Extra_Logic {false} \
  349. CONFIG.Valid_Flag {false} \
  350. CONFIG.Write_Data_Count {false} \
  351. CONFIG.Write_Data_Count_Width {9} \
  352. ] $fifo_output
  353. # Create instance: negate_0, and set properties
  354. set negate_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:c_addsub:12.0 negate_0 ]
  355. set_property -dict [ list \
  356. CONFIG.A_Type {Unsigned} \
  357. CONFIG.A_Width {1} \
  358. CONFIG.Add_Mode {Add} \
  359. CONFIG.B_Constant {true} \
  360. CONFIG.B_Type {Unsigned} \
  361. CONFIG.B_Value {1} \
  362. CONFIG.B_Width {1} \
  363. CONFIG.CE {false} \
  364. CONFIG.Latency {1} \
  365. CONFIG.Latency_Configuration {Automatic} \
  366. CONFIG.Out_Width {1} \
  367. ] $negate_0
  368. # Create instance: packaging_1, and set properties
  369. set packaging_1 [ create_bd_cell -type ip -vlnv user.org:user:packaging:3.0 packaging_1 ]
  370. # Create instance: segment_0, and set properties
  371. set segment_0 [ create_bd_cell -type ip -vlnv xilinx.com:user:segment:1.0 segment_0 ]
  372. # Create instance: xlconcat_4, and set properties
  373. set xlconcat_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_4 ]
  374. set_property -dict [ list \
  375. CONFIG.IN0_WIDTH {4} \
  376. CONFIG.IN1_WIDTH {4} \
  377. CONFIG.IN2_WIDTH {8} \
  378. CONFIG.IN3_WIDTH {2} \
  379. CONFIG.IN4_WIDTH {5} \
  380. CONFIG.NUM_PORTS {3} \
  381. ] $xlconcat_4
  382. # Create instance: xlconcat_5, and set properties
  383. set xlconcat_5 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_5 ]
  384. set_property -dict [ list \
  385. CONFIG.IN0_WIDTH {9} \
  386. CONFIG.IN1_WIDTH {7} \
  387. CONFIG.IN2_WIDTH {8} \
  388. CONFIG.IN3_WIDTH {2} \
  389. CONFIG.IN4_WIDTH {5} \
  390. CONFIG.NUM_PORTS {2} \
  391. ] $xlconcat_5
  392. # Create instance: xlconstant_0, and set properties
  393. set xlconstant_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_0 ]
  394. set_property -dict [ list \
  395. CONFIG.CONST_VAL {0} \
  396. CONFIG.CONST_WIDTH {16} \
  397. ] $xlconstant_0
  398. # Create instance: xlconstant_1, and set properties
  399. set xlconstant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_1 ]
  400. set_property -dict [ list \
  401. CONFIG.CONST_VAL {0} \
  402. CONFIG.CONST_WIDTH {7} \
  403. ] $xlconstant_1
  404. # Create instance: xlslice_0, and set properties
  405. set xlslice_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlslice:1.0 xlslice_0 ]
  406. set_property -dict [ list \
  407. CONFIG.DIN_FROM {7} \
  408. CONFIG.DIN_TO {0} \
  409. CONFIG.DIN_WIDTH {16} \
  410. CONFIG.DOUT_WIDTH {8} \
  411. ] $xlslice_0
  412. # Create interface connections
  413. connect_bd_intf_net -intf_net ethernet_transceiver2_0_fifo_read [get_bd_intf_pins ethernet_transceiver2_0/fifo_read] [get_bd_intf_pins fifo_output/FIFO_READ]
  414. connect_bd_intf_net -intf_net ethernet_transceiver2_0_fifo_write [get_bd_intf_pins ethernet_transceiver2_0/fifo_write] [get_bd_intf_pins fifo_input/FIFO_WRITE]
  415. connect_bd_intf_net -intf_net packaging_1_fifo_read [get_bd_intf_pins fifo_input/FIFO_READ] [get_bd_intf_pins packaging_1/fifo_read]
  416. connect_bd_intf_net -intf_net packaging_1_fifo_write [get_bd_intf_pins fifo_output/FIFO_WRITE] [get_bd_intf_pins packaging_1/fifo_write]
  417. # Create port connections
  418. connect_bd_net -net Net [get_bd_ports eth_rxd_0] [get_bd_pins ethernet_transceiver2_0/eth_rxd]
  419. connect_bd_net -net Net1 [get_bd_ports eth_txd_0] [get_bd_pins ethernet_transceiver2_0/eth_txd]
  420. connect_bd_net -net Net2 [get_bd_ports eth_crsdv_0] [get_bd_pins ethernet_transceiver2_0/eth_crsdv]
  421. connect_bd_net -net Net3 [get_bd_ports eth_txen_0] [get_bd_pins ethernet_transceiver2_0/eth_txen]
  422. connect_bd_net -net Net4 [get_bd_ports eth_rxerr_0] [get_bd_pins ethernet_transceiver2_0/eth_rxerr]
  423. connect_bd_net -net Net5 [get_bd_ports eth_mdio_0] [get_bd_pins ethernet_transceiver2_0/eth_mdio]
  424. connect_bd_net -net Net6 [get_bd_ports eth_rstn_0] [get_bd_pins ethernet_transceiver2_0/eth_rstn]
  425. connect_bd_net -net c_counter_binary_0_Q [get_bd_pins c_counter_binary_0/Q] [get_bd_pins segment_0/num2]
  426. connect_bd_net -net c_counter_binary_1_Q [get_bd_pins c_counter_binary_1/Q] [get_bd_pins segment_0/num1]
  427. connect_bd_net -net clk_wiz_clk_out1 [get_bd_ports clk_100MHz] [get_bd_pins c_counter_binary_0/CLK] [get_bd_pins c_counter_binary_1/CLK] [get_bd_pins ethernet_transceiver2_0/clk100mhz] [get_bd_pins fifo_input/clk] [get_bd_pins fifo_output/wr_clk] [get_bd_pins negate_0/CLK] [get_bd_pins packaging_1/clk] [get_bd_pins segment_0/clk]
  428. connect_bd_net -net ethernet_transceiver2_0_eth_mdc [get_bd_ports eth_mdc_0] [get_bd_pins ethernet_transceiver2_0/eth_mdc]
  429. connect_bd_net -net ethernet_transceiver2_0_eth_refclk [get_bd_ports eth_refclk_0] [get_bd_pins ethernet_transceiver2_0/eth_refclk] [get_bd_pins fifo_output/rd_clk]
  430. connect_bd_net -net ethernet_transceiver2_0_led16_b [get_bd_ports led16_b_0] [get_bd_pins ethernet_transceiver2_0/led16_b]
  431. connect_bd_net -net ethernet_transceiver2_0_led16_g [get_bd_ports led16_g_0] [get_bd_pins ethernet_transceiver2_0/led16_g]
  432. connect_bd_net -net ethernet_transceiver2_0_led16_r [get_bd_ports led16_r_0] [get_bd_pins ethernet_transceiver2_0/led16_r]
  433. connect_bd_net -net ethernet_transceiver2_0_led17_b [get_bd_ports led17_b_0] [get_bd_pins ethernet_transceiver2_0/led17_b]
  434. connect_bd_net -net ethernet_transceiver2_0_led17_g [get_bd_ports led17_g_0] [get_bd_pins ethernet_transceiver2_0/led17_g]
  435. connect_bd_net -net ethernet_transceiver2_0_led17_r [get_bd_ports led17_r_0] [get_bd_pins ethernet_transceiver2_0/led17_r]
  436. connect_bd_net -net fifo_input_overflow [get_bd_pins c_counter_binary_1/CE] [get_bd_pins fifo_input/overflow]
  437. connect_bd_net -net fifo_output_overflow [get_bd_pins c_counter_binary_0/CE] [get_bd_pins fifo_output/overflow]
  438. connect_bd_net -net fifo_output_rd_data_count [get_bd_pins fifo_output/rd_data_count] [get_bd_pins xlconcat_5/In0]
  439. connect_bd_net -net packaging_1_errorCode [get_bd_pins packaging_1/errorCode] [get_bd_pins xlconcat_4/In0]
  440. connect_bd_net -net packaging_1_stateOut [get_bd_pins packaging_1/stateOut] [get_bd_pins xlconcat_4/In1]
  441. connect_bd_net -net rst_clk_wiz_100M_peripheral_aresetn [get_bd_ports reset_rtl_0] [get_bd_pins ethernet_transceiver2_0/btn_reset] [get_bd_pins negate_0/A] [get_bd_pins packaging_1/rst]
  442. connect_bd_net -net segment_0_anodes [get_bd_ports anodes_0] [get_bd_pins segment_0/anodes]
  443. connect_bd_net -net segment_0_cathodes [get_bd_ports cathodes_0] [get_bd_pins segment_0/cathodes]
  444. connect_bd_net -net sw_0_1 [get_bd_ports sw_0] [get_bd_pins ethernet_transceiver2_0/ip]
  445. connect_bd_net -net xlconcat_4_dout [get_bd_ports led_0] [get_bd_pins xlconcat_4/dout]
  446. connect_bd_net -net xlconcat_5_dout [get_bd_pins ethernet_transceiver2_0/fifo_read_length] [get_bd_pins xlconcat_5/dout] [get_bd_pins xlslice_0/Din]
  447. connect_bd_net -net xlconstant_0_dout [get_bd_pins ethernet_transceiver2_0/udp_packet_checksum] [get_bd_pins xlconstant_0/dout]
  448. connect_bd_net -net xlconstant_1_dout [get_bd_pins xlconcat_5/In1] [get_bd_pins xlconstant_1/dout]
  449. connect_bd_net -net xlslice_0_Dout [get_bd_pins xlconcat_4/In2] [get_bd_pins xlslice_0/Dout]
  450. connect_bd_net -net xlslice_1_Dout [get_bd_pins c_counter_binary_0/SCLR] [get_bd_pins c_counter_binary_1/SCLR] [get_bd_pins fifo_input/srst] [get_bd_pins fifo_output/rst] [get_bd_pins negate_0/S]
  451. # Create address segments
  452. # Restore current instance
  453. current_bd_instance $oldCurInst
  454. save_bd_design
  455. common::send_msg_id "BD_TCL-1000" "WARNING" "This Tcl script was generated from a block design that has not been validated. It is possible that design <$design_name> may result in errors during validation."
  456. close_bd_design $design_name
  457. }
  458. # End of cr_bd_design_1()
  459. cr_bd_design_1 ""
  460. set_property REGISTERED_WITH_MANAGER "1" [get_files design_1.bd ]
  461. set_property SYNTH_CHECKPOINT_MODE "Hierarchical" [get_files design_1.bd ]
  462. # Create 'synth_1' run (if not found)
  463. if {[string equal [get_runs -quiet synth_1] ""]} {
  464. create_run -name synth_1 -part xc7a100tcsg324-1 -flow {Vivado Synthesis 2018} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset constrs_1
  465. } else {
  466. set_property strategy "Vivado Synthesis Defaults" [get_runs synth_1]
  467. set_property flow "Vivado Synthesis 2018" [get_runs synth_1]
  468. }
  469. set obj [get_runs synth_1]
  470. set_property set_report_strategy_name 1 $obj
  471. set_property report_strategy {Vivado Synthesis Default Reports} $obj
  472. set_property set_report_strategy_name 0 $obj
  473. # Create 'synth_1_synth_report_utilization_0' report (if not found)
  474. if { [ string equal [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] "" ] } {
  475. create_report_config -report_name synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs synth_1
  476. }
  477. set obj [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0]
  478. if { $obj != "" } {
  479. set_property -name "display_name" -value "synth_1_synth_report_utilization_0" -objects $obj
  480. }
  481. set obj [get_runs synth_1]
  482. set_property -name "part" -value "xc7a100tcsg324-1" -objects $obj
  483. set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj
  484. # set the current synth run
  485. current_run -synthesis [get_runs synth_1]
  486. # Create 'impl_1' run (if not found)
  487. if {[string equal [get_runs -quiet impl_1] ""]} {
  488. create_run -name impl_1 -part xc7a100tcsg324-1 -flow {Vivado Implementation 2018} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset constrs_1 -parent_run synth_1
  489. } else {
  490. set_property strategy "Vivado Implementation Defaults" [get_runs impl_1]
  491. set_property flow "Vivado Implementation 2018" [get_runs impl_1]
  492. }
  493. set obj [get_runs impl_1]
  494. set_property set_report_strategy_name 1 $obj
  495. set_property report_strategy {Vivado Implementation Default Reports} $obj
  496. set_property set_report_strategy_name 0 $obj
  497. # Create 'impl_1_init_report_timing_summary_0' report (if not found)
  498. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] "" ] } {
  499. 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
  500. }
  501. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0]
  502. if { $obj != "" } {
  503. set_property -name "is_enabled" -value "0" -objects $obj
  504. set_property -name "display_name" -value "impl_1_init_report_timing_summary_0" -objects $obj
  505. }
  506. # Create 'impl_1_opt_report_drc_0' report (if not found)
  507. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] "" ] } {
  508. create_report_config -report_name impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs impl_1
  509. }
  510. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0]
  511. if { $obj != "" } {
  512. set_property -name "display_name" -value "impl_1_opt_report_drc_0" -objects $obj
  513. }
  514. # Create 'impl_1_opt_report_timing_summary_0' report (if not found)
  515. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] "" ] } {
  516. 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
  517. }
  518. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0]
  519. if { $obj != "" } {
  520. set_property -name "is_enabled" -value "0" -objects $obj
  521. set_property -name "display_name" -value "impl_1_opt_report_timing_summary_0" -objects $obj
  522. }
  523. # Create 'impl_1_power_opt_report_timing_summary_0' report (if not found)
  524. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] "" ] } {
  525. 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
  526. }
  527. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0]
  528. if { $obj != "" } {
  529. set_property -name "is_enabled" -value "0" -objects $obj
  530. set_property -name "display_name" -value "impl_1_power_opt_report_timing_summary_0" -objects $obj
  531. }
  532. # Create 'impl_1_place_report_io_0' report (if not found)
  533. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] "" ] } {
  534. create_report_config -report_name impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs impl_1
  535. }
  536. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0]
  537. if { $obj != "" } {
  538. set_property -name "display_name" -value "impl_1_place_report_io_0" -objects $obj
  539. }
  540. # Create 'impl_1_place_report_utilization_0' report (if not found)
  541. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] "" ] } {
  542. create_report_config -report_name impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs impl_1
  543. }
  544. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0]
  545. if { $obj != "" } {
  546. set_property -name "display_name" -value "impl_1_place_report_utilization_0" -objects $obj
  547. }
  548. # Create 'impl_1_place_report_control_sets_0' report (if not found)
  549. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] "" ] } {
  550. 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
  551. }
  552. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0]
  553. if { $obj != "" } {
  554. set_property -name "display_name" -value "impl_1_place_report_control_sets_0" -objects $obj
  555. }
  556. # Create 'impl_1_place_report_incremental_reuse_0' report (if not found)
  557. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] "" ] } {
  558. 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
  559. }
  560. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0]
  561. if { $obj != "" } {
  562. set_property -name "is_enabled" -value "0" -objects $obj
  563. set_property -name "display_name" -value "impl_1_place_report_incremental_reuse_0" -objects $obj
  564. }
  565. # Create 'impl_1_place_report_incremental_reuse_1' report (if not found)
  566. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] "" ] } {
  567. 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
  568. }
  569. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1]
  570. if { $obj != "" } {
  571. set_property -name "is_enabled" -value "0" -objects $obj
  572. set_property -name "display_name" -value "impl_1_place_report_incremental_reuse_1" -objects $obj
  573. }
  574. # Create 'impl_1_place_report_timing_summary_0' report (if not found)
  575. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] "" ] } {
  576. 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
  577. }
  578. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0]
  579. if { $obj != "" } {
  580. set_property -name "is_enabled" -value "0" -objects $obj
  581. set_property -name "display_name" -value "impl_1_place_report_timing_summary_0" -objects $obj
  582. }
  583. # Create 'impl_1_post_place_power_opt_report_timing_summary_0' report (if not found)
  584. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] "" ] } {
  585. 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
  586. }
  587. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0]
  588. if { $obj != "" } {
  589. set_property -name "is_enabled" -value "0" -objects $obj
  590. set_property -name "display_name" -value "impl_1_post_place_power_opt_report_timing_summary_0" -objects $obj
  591. }
  592. # Create 'impl_1_phys_opt_report_timing_summary_0' report (if not found)
  593. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] "" ] } {
  594. 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
  595. }
  596. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0]
  597. if { $obj != "" } {
  598. set_property -name "is_enabled" -value "0" -objects $obj
  599. set_property -name "display_name" -value "impl_1_phys_opt_report_timing_summary_0" -objects $obj
  600. }
  601. # Create 'impl_1_route_report_drc_0' report (if not found)
  602. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] "" ] } {
  603. create_report_config -report_name impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs impl_1
  604. }
  605. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0]
  606. if { $obj != "" } {
  607. set_property -name "display_name" -value "impl_1_route_report_drc_0" -objects $obj
  608. }
  609. # Create 'impl_1_route_report_methodology_0' report (if not found)
  610. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] "" ] } {
  611. create_report_config -report_name impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs impl_1
  612. }
  613. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0]
  614. if { $obj != "" } {
  615. set_property -name "display_name" -value "impl_1_route_report_methodology_0" -objects $obj
  616. }
  617. # Create 'impl_1_route_report_power_0' report (if not found)
  618. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] "" ] } {
  619. create_report_config -report_name impl_1_route_report_power_0 -report_type report_power: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_power_0]
  622. if { $obj != "" } {
  623. set_property -name "display_name" -value "impl_1_route_report_power_0" -objects $obj
  624. }
  625. # Create 'impl_1_route_report_route_status_0' report (if not found)
  626. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] "" ] } {
  627. 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
  628. }
  629. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0]
  630. if { $obj != "" } {
  631. set_property -name "display_name" -value "impl_1_route_report_route_status_0" -objects $obj
  632. }
  633. # Create 'impl_1_route_report_timing_summary_0' report (if not found)
  634. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] "" ] } {
  635. 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
  636. }
  637. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0]
  638. if { $obj != "" } {
  639. set_property -name "display_name" -value "impl_1_route_report_timing_summary_0" -objects $obj
  640. }
  641. # Create 'impl_1_route_report_incremental_reuse_0' report (if not found)
  642. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] "" ] } {
  643. 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
  644. }
  645. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0]
  646. if { $obj != "" } {
  647. set_property -name "display_name" -value "impl_1_route_report_incremental_reuse_0" -objects $obj
  648. }
  649. # Create 'impl_1_route_report_clock_utilization_0' report (if not found)
  650. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] "" ] } {
  651. 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
  652. }
  653. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0]
  654. if { $obj != "" } {
  655. set_property -name "display_name" -value "impl_1_route_report_clock_utilization_0" -objects $obj
  656. }
  657. # Create 'impl_1_route_report_bus_skew_0' report (if not found)
  658. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] "" ] } {
  659. 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
  660. }
  661. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0]
  662. if { $obj != "" } {
  663. set_property -name "display_name" -value "impl_1_route_report_bus_skew_0" -objects $obj
  664. }
  665. # Create 'impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found)
  666. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } {
  667. 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
  668. }
  669. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0]
  670. if { $obj != "" } {
  671. set_property -name "display_name" -value "impl_1_post_route_phys_opt_report_timing_summary_0" -objects $obj
  672. }
  673. # Create 'impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found)
  674. if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } {
  675. 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
  676. }
  677. set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0]
  678. if { $obj != "" } {
  679. set_property -name "display_name" -value "impl_1_post_route_phys_opt_report_bus_skew_0" -objects $obj
  680. }
  681. set obj [get_runs impl_1]
  682. set_property -name "part" -value "xc7a100tcsg324-1" -objects $obj
  683. set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj
  684. set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj
  685. set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj
  686. # set the current impl run
  687. current_run -implementation [get_runs impl_1]
  688. puts "INFO: Project created:${_xil_proj_name_}"
  689. set obj [get_dashboards default_dashboard]
  690. # Create 'drc_1' gadget (if not found)
  691. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "drc_1" ] ] ""]} {
  692. create_dashboard_gadget -name {drc_1} -type drc
  693. }
  694. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "drc_1" ] ]
  695. set_property -name "reports" -value "impl_1#impl_1_route_report_drc_0" -objects $obj
  696. # Create 'methodology_1' gadget (if not found)
  697. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "methodology_1" ] ] ""]} {
  698. create_dashboard_gadget -name {methodology_1} -type methodology
  699. }
  700. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "methodology_1" ] ]
  701. set_property -name "reports" -value "impl_1#impl_1_route_report_methodology_0" -objects $obj
  702. # Create 'power_1' gadget (if not found)
  703. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "power_1" ] ] ""]} {
  704. create_dashboard_gadget -name {power_1} -type power
  705. }
  706. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "power_1" ] ]
  707. set_property -name "reports" -value "impl_1#impl_1_route_report_power_0" -objects $obj
  708. # Create 'timing_1' gadget (if not found)
  709. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "timing_1" ] ] ""]} {
  710. create_dashboard_gadget -name {timing_1} -type timing
  711. }
  712. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "timing_1" ] ]
  713. set_property -name "reports" -value "impl_1#impl_1_route_report_timing_summary_0" -objects $obj
  714. # Create 'utilization_1' gadget (if not found)
  715. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "utilization_1" ] ] ""]} {
  716. create_dashboard_gadget -name {utilization_1} -type utilization
  717. }
  718. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "utilization_1" ] ]
  719. set_property -name "reports" -value "synth_1#synth_1_synth_report_utilization_0" -objects $obj
  720. set_property -name "run.step" -value "synth_design" -objects $obj
  721. set_property -name "run.type" -value "synthesis" -objects $obj
  722. # Create 'utilization_2' gadget (if not found)
  723. if {[string equal [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "utilization_2" ] ] ""]} {
  724. create_dashboard_gadget -name {utilization_2} -type utilization
  725. }
  726. set obj [get_dashboard_gadgets -of_objects [get_dashboards default_dashboard] [ list "utilization_2" ] ]
  727. set_property -name "reports" -value "impl_1#impl_1_place_report_utilization_0" -objects $obj
  728. move_dashboard_gadget -name {utilization_1} -row 0 -col 0
  729. move_dashboard_gadget -name {power_1} -row 1 -col 0
  730. move_dashboard_gadget -name {drc_1} -row 2 -col 0
  731. move_dashboard_gadget -name {timing_1} -row 0 -col 1
  732. move_dashboard_gadget -name {utilization_2} -row 1 -col 1
  733. move_dashboard_gadget -name {methodology_1} -row 2 -col 1
  734. # Set current dashboard to 'default_dashboard'
  735. current_dashboard default_dashboard