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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user