File: viv_generate_bd.tcl

package info (click to toggle)
uhd 3.13.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 207,120 kB
  • sloc: cpp: 167,245; ansic: 86,841; vhdl: 53,420; python: 40,839; xml: 13,167; tcl: 5,688; makefile: 2,167; sh: 1,719; pascal: 230; csh: 94; asm: 20; perl: 11
file content (57 lines) | stat: -rw-r--r-- 1,987 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#
# Copyright 2016 Ettus Research
#

# ---------------------------------------
# Gather all external parameters
# ---------------------------------------
set bd_file         $::env(BD_FILE)               ;# Absolute path to BD/Tcl file from src dir
set src_ext [file extension $bd_file]             ;# BD or Tcl file?
set part_name       $::env(PART_NAME)              ;# Full Xilinx part name
set bd_name [file rootname [file tail $bd_file]]   ;# Extract IP name
if {[info exists env(BD_IP_REPOS)]} {
    set ip_repos $::env(BD_IP_REPOS);# Any supporting IP repos
} else {
    set ip_repos {}
}

# Delete any previous output cookie file
file delete -force "$bd_file.out"
# ---------------------------------------
# Vivado Commands
# ---------------------------------------
if [expr [lsearch {.tcl} $src_ext] >= 0] {
    puts "BUILDER: Generating Block Diagram from script: $bd_file"
    create_project -part $part_name -in_memory
    set_property ip_repo_paths "{$ip_repos}" [current_project]
    update_ip_catalog
    create_bd_design -dir . $bd_name
    source $bd_file
    report_ip_status
    puts "BUILDER: Report_ip_status done"
    set bd_file $bd_name.bd
} else {
    puts "BUILDER: Adding Block Diagram: $bd_file"
    create_project -part $part_name -in_memory
    set_property ip_repo_paths "{$ip_repos}" [current_project]
    update_ip_catalog
    add_files -norecurse $bd_file
    puts "BUILDER: Generating BD Target first pass..."
    generate_target all [get_files $bd_file] -force
    report_ip_status
    puts "BUILDER: Report_ip_status done"
    open_bd_design $bd_file
}
puts "BUILDER: Generating BD Target..."
generate_target all [get_files $bd_file]
puts "BUILDER: Generate all done"

if { [get_msg_config -count -severity ERROR] == 0 } {
    # Write output cookie file
    set outfile [open "$bd_file.out" w]
    puts $outfile "This file was auto-generated by viv_generate_bd.tcl and signifies that BD generation is done."
    close $outfile
} else {
    exit 1
}