SVN_REV=$(shell test -d .svn && svn info | grep "Revision" | sed -e "s/Revision: *//") SVN_STATUS = $(shell test -d .svn && svn status -q) ifeq ($(strip $(SVN_REV)),) SVN_REV=0 endif # The top level design name design=LTU_T revision=newStart design_folder=Quartus-Files # source files prefix = ./SRC prefix_ltut_m = $(prefix)/LTU_T_modules pll = PLL_syn.v counter = $(prefix_ltut_m)/counter_32bit_up_syn.v $(prefix_ltut_m)/counter_BC_syn.v CTPEmu = $(prefix_ltut_m)/CTP_Emulator.v $(prefix_ltut_m)/RAM_2port_1024x32_syn.v $(prefix_ltut_m)/MersenneTwister/MersenneTwister.v protocol_converter = $(prefix_ltut_m)/protocol_converter.v LED_controler = $(prefix_ltut_m)/LED_controler/time_counter_syn.v $(prefix_ltut_m)/LED_controler/input_counter_syn.v $(prefix_ltut_m)/LED_controler/LED_control.v $(prefix_ltut_m)/LED_controler/LED_control_RDWR.v communicator = $(prefix_ltut_m)/communicator.v SSMcontroler = $(prefix_ltut_m)/SSMcontroler.v PTcommands = $(prefix_ltut_m)/PTcommands.v mux = $(prefix_ltut_m)/mux_sync.v $(prefix_ltut_m)/mux_Async.v src_files = $(counter) $(SSMcontroler) $(PTcommands) $(mux) $(LED_controler) $(CTPEmu) $(communicator) $(prefix_ltut_m)/$(pll) $(protocol_converter) $(prefix)/$(design).v # Testbench prefix_tb = ./TestBench #testbench = $(prefix_tb)/LTU_T-Testbench.v testbench = $(prefix_tb)/LTU_T-Testbench-CTP.v testbench_files = $(prefix_tb)/BC-clk.v $(prefix_tb)/BC-clk-shifted.v alt_sim = /home/trd/altera/13.0sp1/quartus/eda/sim_lib# the location of the Altera sim. models alt_family = cyclone alt_lib = $(alt_family)_components net_para = ./Quartus-Files/simulation/modelsim/$(design).vo# netlist after place & route sdf_alt = ./Quartus-Files/simulation/modelsim/$(design)_v.sdo# standard delay file (SDF) ## OUTPUT_FILE=$(design)_$(SVN_REV).rbf ifeq ($(strip $(SVN_STATUS)),) SVN_CLEAN="clean" OUTPUT_FILE=$(design)_$(SVN_REV)_clean.rbf endif ## $(alt_lib): vlib $@ vlog -work $@ "$(alt_sim)/$(alt_family)_atoms.v" vcom -work $@ "$(alt_sim)/$(alt_family)_components.vhd" vmap $(alt_family) $@ # Compile the Source with Quartus anasyn: SRC/make_buildstamp.sh python SRC/make_addresses.py python SRC/LTU_T_modules/MersenneTwister/MT_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT400_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT800_initialization.py quartus_map --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) partmerge: quartus_cdb --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) --merge=on fit: quartus_fit --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_asm --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_sta $(design_folder)/$(design) -c $(revision) quartus_eda --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_drc --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_pow --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) timing: SRC/make_buildstamp.sh python SRC/make_addresses.py python SRC/LTU_T_modules/MersenneTwister/MT_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT400_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT800_initialization.py quartus_map --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_cdb --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) --merge=on quartus_fit --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_asm --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_sta $(design_folder)/$(design) -c $(revision) rest: quartus_eda --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_drc --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_pow --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_cpf -c $(design_folder)/output_files/$(revision).sof $(design_folder)/output_files/$(OUTPUT_FILE) convert: quartus_cpf -c $(design_folder)/output_files/$(revision).sof $(design_folder)/output_files/$(OUTPUT_FILE) upload: #cp -p --backup=numbered $(design_folder)/output_files/$(design).rbf $(design_folder)/output_files/oldVersions/. scp $(design_folder)/output_files/$(OUTPUT_FILE) daq02:~/ltu/vme/CFG/ltu/. upload_vme: scp $(design_folder)/output_files/$(OUTPUT_FILE) vme:/home/alice/trd/v/vme/CFG/ltu/. all: SRC/make_buildstamp.sh python SRC/make_addresses.py python SRC/LTU_T_modules/MersenneTwister/MT_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT400_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT800_initialization.py quartus_map --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_cdb --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) --merge=on quartus_fit --parallel=2 --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_asm --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_sta $(design_folder)/$(design) -c $(revision) quartus_eda --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_drc --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_pow --read_settings_files=on --write_settings_files=off $(design_folder)/$(design) -c $(revision) quartus_cpf -c $(design_folder)/output_files/$(revision).sof $(design_folder)/output_files/$(OUTPUT_FILE) DSE: quartus_sh --dse -project $(design_folder)/$(design).qpf -revision $(revision) -seeds 1-6 flash: ssh daq02 ./ltu/scripts/loadLTUfpga $(OUTPUT_FILE) 0x813000 # Compile the source for functional simulation functional: $(src_files) vlib $@ vlog -work $@ $(src_files) # Functional Simulation simfun: $(testbench) $(testbench_files) functional vlib testbench vmap testbench functional vlog -work testbench $(testbench_files) $(testbench) vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps simCTPEmu: $(prefix_tb)/CTP_Emulator-Testbench.v $(prefix_tb)/BC-clk.v $(prefix_tb)/fast-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/CTP_Emulator-Testbench.v $(prefix_tb)/BC-clk.v $(prefix_tb)/fast-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/CTP_Emulator.do' simMT: $(prefix_tb)/MersenneTwister-Testbench.v $(prefix_tb)/BC-clk.v functional python SRC/LTU_T_modules/MersenneTwister/MT_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT400_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT800_initialization.py vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/MersenneTwister-Testbench.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/MersenneTwister.do' simMTBM: $(prefix_tb)/MersenneTwister-Testbench.v $(prefix_tb)/BC-clk.v functional python SRC/LTU_T_modules/MersenneTwister/MT_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT400_initialization.py python SRC/LTU_T_modules/MersenneTwister/MT_TT800_initialization.py vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/MersenneTwister-Testbench.v $(prefix_tb)/BC-clk.v vsim -c -wlf $(prefix_tb)/MersenneTwister.wlf -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/MersenneTwisterBM.do' simPC: $(prefix_tb)/protocol_converter-Testbench.v $(prefix_tb)/BC-clk-shifted.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/protocol_converter-Testbench.v $(prefix_tb)/BC-clk-shifted.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/protocol_converter.do' simLED: $(prefix_tb)/LED_controler-Testbench.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/LED_controler-Testbench.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/LED_controler.do' simLEDBM: $(prefix_tb)/LED_controler-Testbench.v $(prefix_tb)/BC-clk.v functional vlib LED_controler-testbench vmap LED_controler-testbench functional vlog -work LED_controler-testbench $(prefix_tb)/LED_controler-Testbench.v $(prefix_tb)/BC-clk.v vsim -c -wlf $(prefix_tb)/LED_controler.wlf -L altera_mf -L cyclone_ver -L lpm_ver -L LED_controler-testbench LED_controler-testbench.TestBench -t 1ps -do '$(prefix_tb)/LED_controlerBM.do' simPT: $(prefix_tb)/PTcommands-Testbench.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/PTcommands-Testbench.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/PTcommands.do' simSSM: $(prefix_tb)/SSMcontroler-Testbench.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/SSMcontroler-Testbench.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L testbench testbench.TestBench -t 1ps -do '$(prefix_tb)/SSMcontroler.do' # Clean all library directories clean: rm -rf functional/ testbench/ LTU-T.vcd transcript vsim.wlf cyclone_components/ layouta/ work/ ls -l --color=auto layouta: $(alt_lib) $(net_para) vlib $@; vlog -work $@ $(net_para) # Simulate the p & r netlist without timing backannotation simlay: $(testbench) $(testbench_files) layouta functional vmap libdut testbench vmap libdut layouta vmap libdut functional rm -rf work; vlib libdut vlog -work libdut $(testbench_files) $(testbench) $(alt_family)_components vsim 'libdut.TestBench' -t 1ps -do '$(prefix_tb)/InputOutput.do'