Add a simple makefile and tcl script for vivado
This commit is contained in:
parent
27b860c295
commit
767277e341
34
vivado/Makefile.rules
Normal file
34
vivado/Makefile.rules
Normal file
@ -0,0 +1,34 @@
|
||||
TB ?= tb_top
|
||||
|
||||
XVLOG ?= xvlog
|
||||
XELAB ?= xelab
|
||||
XSIM ?= xsim
|
||||
|
||||
vpath %.sv $(PATH_SRC)
|
||||
vpath %.svh $(PATH_SRC)
|
||||
vpath %.sdb xsim.dir/work
|
||||
|
||||
.PHONY: all clean sim_build sim sim_gui
|
||||
|
||||
all: sim
|
||||
|
||||
%.sdb: %.sv
|
||||
$(XVLOG) --sv --nolog $<
|
||||
rm xvlog.pb
|
||||
|
||||
xsim.dir/work.$(TB)/xsim.dbg: $(subst sv,sdb,$(SOURCES))
|
||||
$(XELAB) --nolog --debug all -Odisable_unused_removal $(TB)
|
||||
rm -f xelab.pb
|
||||
|
||||
sim_build: xsim.dir/work.$(TB)/xsim.dbg
|
||||
|
||||
sim: sim_build
|
||||
$(XSIM) --nolog --runall $(TB)
|
||||
rm -f xsim.jou xsim_* webtalk*
|
||||
|
||||
sim_gui: xsim.dir/work.$(TB)/xsim.dbg
|
||||
$(XSIM) --nolog --gui $(TB)
|
||||
rm -f xsim.jou xsim_* webtalk* work.$(TB).wdb vivado_pid*.zip
|
||||
|
||||
clean:
|
||||
rm -rf xsim.dir xsim* webtalk* xelab.pb xvlog.pb .Xil
|
92
vivado/vivado_wrapper.tcl
Normal file
92
vivado/vivado_wrapper.tcl
Normal file
@ -0,0 +1,92 @@
|
||||
if {$argc < 1} {
|
||||
puts "Usage: <command> $argv0 \[options\] \[sources\]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
set command [lindex $argv 0]
|
||||
|
||||
set top ""
|
||||
set part ""
|
||||
set sources ""
|
||||
set output ""
|
||||
|
||||
set i 1
|
||||
while {$i < $argc} {
|
||||
|
||||
switch [lindex $argv $i] {
|
||||
-top {
|
||||
incr i
|
||||
if {$i >= $argc} {
|
||||
puts "Missing parameter after -top"
|
||||
exit 2
|
||||
}
|
||||
set top [lindex $argv $i]
|
||||
}
|
||||
-part {
|
||||
incr i
|
||||
if {$i >= $argc} {
|
||||
puts "Missing parameter after -part"
|
||||
exit 2
|
||||
}
|
||||
set part [lindex $argv $i]
|
||||
}
|
||||
-o {
|
||||
incr i
|
||||
if {$i >= $argc} {
|
||||
puts "Missing parameter after -o"
|
||||
exit 2
|
||||
}
|
||||
set output [lindex $argv $i]
|
||||
}
|
||||
default {
|
||||
lappend sources [lindex $argv $i]
|
||||
}
|
||||
}
|
||||
|
||||
incr i
|
||||
}
|
||||
|
||||
foreach src $sources {
|
||||
if {[string match "*.sv" $src] || [string match "*.v" $src]} {
|
||||
read_verilog "$src"
|
||||
}
|
||||
if {[string match "*.vhdl" $src]} {
|
||||
read_vhdl "$src"
|
||||
}
|
||||
if {[string match "*.xdc" $src]} {
|
||||
read_xdc "$src"
|
||||
}
|
||||
}
|
||||
|
||||
if {[string length $top] <= 0} {
|
||||
puts "Error: top undefined (define with -top <name>)"
|
||||
exit 3
|
||||
}
|
||||
|
||||
switch "$command" {
|
||||
sim {
|
||||
create_project -in_memory sim
|
||||
|
||||
#launch_simulation
|
||||
}
|
||||
synth {
|
||||
if {[string length $part] <= 0} {
|
||||
puts "Error: part undefined (define with -part <name>)"
|
||||
exit 4
|
||||
}
|
||||
if {[string length $output] <= 0} {
|
||||
puts "Error: output undefined (define with -o <name>)"
|
||||
exit 4
|
||||
}
|
||||
synth_design -top "$top" -part "$part"
|
||||
opt_design
|
||||
place_design
|
||||
route_design
|
||||
write_bitstream -force "$output"
|
||||
}
|
||||
default {
|
||||
puts "Unknown command $command"
|
||||
exit 4
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user