# The top level design name design=LTU_T revision=DSE design_folder=Quartus-Files # source files prefix = ./SRC prefix_ltut_m = $(prefix)/LTU_T_modules counter = counter_syn.v pll = PLL_syn.v timer = $(prefix_ltut_m)/timer/timer_counter_syn.v $(prefix_ltut_m)/timer/timer.v seqGen = $(prefix_ltut_m)/seqGen/counter_seqGen_syn.v $(prefix_ltut_m)/seqGen/seqGen.v $(prefix_ltut_m)/seqGen/MersenneTwister.v $(prefix_ltut_m)/seqGen/MersenneTwister_TT800.v $(prefix_ltut_m)/seqGen/MersenneTwister_TT400.v protocol_converter = $(prefix_ltut_m)/protocol_converter/protocol_converter_counter_syn.v $(prefix_ltut_m)/protocol_converter/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 rateMonitor = $(prefix_ltut_m)/rateMonitor.v $(prefix_ltut_m)/counter_32bit_up_syn.v src_files = $(rateMonitor) $(prefix_ltut_m)/SSMcontroler.v $(prefix_ltut_m)/PTcommands.v $(timer) $(prefix_ltut_m)/switch.v $(LED_controler) $(seqGen) $(communicator) $(prefix_ltut_m)/$(counter) $(prefix_ltut_m)/$(pll) $(protocol_converter) $(prefix_ltut_m)/synchronizerIn.v $(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)/FEE-GTU-emu.v $(prefix_tb)/CTP-LTU-emu.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) $(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: python SRC/make_addresses.py python SRC/LTU_T_modules/seqGen/MT_initialization.py python SRC/LTU_T_modules/seqGen/MT_TT400_initialization.py python SRC/LTU_T_modules/seqGen/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: python SRC/make_addresses.py python SRC/LTU_T_modules/seqGen/MT_initialization.py python SRC/LTU_T_modules/seqGen/MT_TT400_initialization.py python SRC/LTU_T_modules/seqGen/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/$(design).rbf convert: quartus_cpf -c $(design_folder)/output_files/$(revision).sof $(design_folder)/output_files/$(design).rbf upload: scp $(design_folder)/output_files/$(design).rbf daq02:~/ltu/vme/CFG/ltu/. all: python SRC/make_addresses.py python SRC/LTU_T_modules/seqGen/MT_initialization.py python SRC/LTU_T_modules/seqGen/MT_TT400_initialization.py python SRC/LTU_T_modules/seqGen/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/$(design).rbf DSE: quartus_sh --dse -project $(design_folder)/$(design).qpf -revision $(revision) -seeds 1-6 flash: ssh daq02 ./ltu/scripts/loadLTUfpga $(design).rbf 0x813000 # Compile the source for functional simulation functional: $(src_files) vlib $@ vlog -work $@ $(src_files) # Functional Simulation simfunInp: $(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 -do '$(prefix_tb)/InputOutput.do' simfunSeq: $(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 -do '$(prefix_tb)/seqGen.do' 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 simSeqGen: $(prefix_tb)/seqGen-Testbench.v $(prefix_tb)/BC-clk.v $(prefix_tb)/fast-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/seqGen-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)/seqGen.do' simMT: $(prefix_tb)/MersenneTwister-Testbench.v $(prefix_tb)/BC-clk.v functional python SRC/LTU_T_modules/seqGen/MT_initialization.py python SRC/LTU_T_modules/seqGen/MT_TT400_initialization.py python SRC/LTU_T_modules/seqGen/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/seqGen/MT_initialization.py python SRC/LTU_T_modules/seqGen/MT_TT400_initialization.py python SRC/LTU_T_modules/seqGen/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' simSeqGenBM: $(prefix_tb)/seqGen-Testbench.v $(prefix_tb)/BC-clk.v $(prefix_tb)/fast-clk.v functional vlib SeqGen-testbench vmap SeqGen-testbench functional vlog -work SeqGen-testbench $(prefix_tb)/seqGen-Testbench.v $(prefix_tb)/BC-clk.v $(prefix_tb)/fast-clk.v vsim -c -wlf $(prefix_tb)/seqGen.wlf -L altera_mf -L cyclone_ver -L lpm_ver -L SeqGen-testbench SeqGen-testbench.TestBench -t 1ps -do '$(prefix_tb)/seqGenBM.do' simTimer: $(prefix_tb)/timer-Testbench.v $(prefix_tb)/fast-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/timer-Testbench.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)/timer.do' simPC: $(prefix_tb)/protocol_converter-Testbench.v $(prefix_tb)/fast-clk.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/protocol_converter-Testbench.v $(prefix_tb)/fast-clk.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)/fast-clk.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/LED_controler-Testbench.v $(prefix_tb)/fast-clk.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)/fast-clk.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)/fast-clk.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' simSyn: $(prefix_tb)/synchronizerIn-Testbench.v $(prefix_tb)/fast-clk.v $(prefix_tb)/BC-clk.v functional vlib synchronizerIn-testbench vmap synchronizerIn-testbench functional vlog -work synchronizerIn-testbench $(prefix_tb)/synchronizerIn-Testbench.v $(prefix_tb)/fast-clk.v $(prefix_tb)/BC-clk.v vsim -L altera_mf -L cyclone_ver -L lpm_ver -L synchronizerIn-testbench synchronizerIn-testbench.TestBench -t 1ps -do '$(prefix_tb)/synchronizerIn.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' simRM: $(prefix_tb)/rateMonitor-Testbench.v $(prefix_tb)/BC-clk.v functional vlib testbench vmap testbench functional vlog -work testbench $(prefix_tb)/rateMonitor-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)/rateMonitor.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'