Add variable to control what program gets flashed to FPGA.
[freedom-sifive.git] / fpga / u500vc707devkit / script / prologue.tcl
1 set scriptdir [file dirname [info script]]
2 set commondir [file dirname $scriptdir]
3 set srcdir [file join $commondir src]
4 set constrsdir [file join $commondir constrs]
5
6 set wrkdir [file join [pwd] obj]
7 set ipdir [file join $wrkdir ip]
8
9 set top {system}
10
11 create_project -part $part_fpga -in_memory
12 set_property -dict [list \
13 BOARD_PART $part_board \
14 TARGET_LANGUAGE {Verilog} \
15 SIMULATOR_LANGUAGE {Mixed} \
16 TARGET_SIMULATOR {XSim} \
17 DEFAULT_LIB {xil_defaultlib} \
18 IP_REPO_PATHS $ipdir \
19 ] [current_project]
20
21 proc recglob { basedir pattern } {
22 set dirlist [glob -nocomplain -directory $basedir -type d *]
23 set findlist [glob -nocomplain -directory $basedir $pattern]
24 foreach dir $dirlist {
25 set reclist [recglob $dir $pattern]
26 set findlist [concat $findlist $reclist]
27 }
28 return $findlist
29 }
30
31
32 if {[get_filesets -quiet sources_1] eq ""} {
33 create_fileset -srcset sources_1
34 }
35 set obj [current_fileset]
36
37 set srcmainverilogfiles [recglob $srcdir "*.v"]
38 add_files -norecurse -fileset $obj $srcmainverilogfiles
39
40 if {[info exists ::env(EXTRA_VSRCS)]} {
41 set extra_vsrcs [split $::env(EXTRA_VSRCS)]
42 foreach extra_vsrc $extra_vsrcs {
43 add_files -norecurse -fileset $obj $extra_vsrc
44 }
45 }
46 ## TODO: These paths and files should come from the caller, not within this script.
47 #if {[file exists [file join $srcdir include verilog]]} {
48 # add_files -norecurse -fileset $obj [file join $srcdir include verilog DebugTransportModuleJtag.v]
49 # add_files -norecurse -fileset $obj [file join $srcdir include verilog AsyncResetReg.v]
50 #}
51
52 set vsrc_top $::env(VSRC_TOP)
53
54 set_property verilog_define [list "VSRC_TOP=${vsrc_top}"] $obj
55
56 add_files -norecurse -fileset $obj $vsrc_top
57
58 if {[get_filesets -quiet sim_1] eq ""} {
59 create_fileset -simset sim_1
60 }
61 set obj [current_fileset -simset]
62 add_files -norecurse -fileset $obj [glob -directory $srcdir {*.v}]
63 set_property TOP {tb} $obj
64
65 if {[get_filesets -quiet constrs_1] eq ""} {
66 create_fileset -constrset constrs_1
67 }
68 set obj [current_fileset -constrset]
69 add_files -norecurse -fileset $obj [glob -directory $constrsdir {*.xdc}]