@@ -14,34 +14,55 @@ if {[info exists env(BD_IP_REPOS)]} {
14
14
} else {
15
15
set ip_repos {}
16
16
}
17
+ if {[info exists env(BD_HDL_SRCS)]} {
18
+ set hdl_sources $::env(BD_HDL_SRCS) ;# Any supporting HDL files
19
+ } else {
20
+ set hdl_sources {}
21
+ }
17
22
18
23
# Delete any previous output cookie file
19
24
file delete -force " $bd_file .out"
20
25
# ---------------------------------------
21
26
# Vivado Commands
22
27
# ---------------------------------------
28
+ create_project -part $part_name -in_memory
29
+ # In non-project mode, the hierarchy must be updated for the HDL source files to be
30
+ # correctly applied to the BD. See AR:
31
+ # https://www.xilinx.com/support/answers/63488.html
32
+ set_property source_mgmt_mode All [current_project]
33
+ set_property ip_repo_paths " {$ip_repos }" [current_project]
34
+ update_ip_catalog
35
+ # Add supplementary HDL sources, if they exist.
36
+ foreach src_file $hdl_sources {
37
+ set hdl_ext [file extension $src_file ]
38
+ if [expr [lsearch {.vhd .vhdl} $hdl_ext ] >= 0] {
39
+ puts " BUILDER: Adding VHDL : $src_file "
40
+ read_vhdl -library work $src_file
41
+ } elseif [expr [lsearch {.v .vh} $hdl_ext ] >= 0] {
42
+ puts " BUILDER: Adding Verilog : $src_file "
43
+ read_verilog $src_file
44
+ } else {
45
+ puts " BUILDER: \[ WARNING\] File ignored!!!: $src_file "
46
+ }
47
+ }
48
+ # Open .tcl or .bd design directly.
23
49
if [expr [lsearch {.tcl} $src_ext ] >= 0] {
24
50
puts " BUILDER: Generating Block Diagram from script: $bd_file "
25
- create_project -part $part_name -in_memory
26
- set_property ip_repo_paths " {$ip_repos }" [current_project]
27
- update_ip_catalog
28
51
create_bd_design -dir . $bd_name
29
52
source $bd_file
30
53
report_ip_status
31
54
puts " BUILDER: Report_ip_status done"
32
55
set bd_file $bd_name .bd
33
56
} else {
34
57
puts " BUILDER: Adding Block Diagram: $bd_file "
35
- create_project -part $part_name -in_memory
36
- set_property ip_repo_paths " {$ip_repos }" [current_project]
37
- update_ip_catalog
38
58
add_files -norecurse $bd_file
39
59
puts " BUILDER: Generating BD Target first pass..."
40
60
generate_target all [get_files $bd_file ] -force
41
61
report_ip_status
42
62
puts " BUILDER: Report_ip_status done"
43
63
open_bd_design $bd_file
44
64
}
65
+ # Generate outputs.
45
66
puts " BUILDER: Generating BD Target..."
46
67
generate_target all [get_files $bd_file ]
47
68
puts " BUILDER: Generate all done"
0 commit comments