* Add +permissive/+permissive-off for VCS args This adds guards around Verilog/VCS options for VCS calls with HTIF's new `+permissive`/`+permissive-off` options. This enables HTIF to permissively parse all options inside one of these guards while not erroring on unknonw commands. This is necessary for VCS, unlike with the emulator, as HTIF is giving all commands as opposed to only host and target arguments (like with Verilator/emulator.cc). * Bump riscv-tools for fesvr VCS fix * Bump riscv-rools/riscv-fesvr (VCS stderr fix) Fixes #1266 Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #--------------------------------------------------------------------
 | |
| # Sources
 | |
| #--------------------------------------------------------------------
 | |
| 
 | |
| # Verilog sources
 | |
| 
 | |
| bb_vsrcs = \
 | |
| 	$(base_dir)/vsrc/plusarg_reader.v \
 | |
| 	$(base_dir)/vsrc/ClockDivider2.v \
 | |
| 	$(base_dir)/vsrc/ClockDivider3.v \
 | |
| 	$(base_dir)/vsrc/AsyncResetReg.v \
 | |
| 
 | |
| sim_vsrcs = \
 | |
| 	$(generated_dir)/$(long_name).v \
 | |
| 	$(generated_dir)/$(long_name).behav_srams.v \
 | |
| 	$(base_dir)/vsrc/$(TB).v \
 | |
| 	$(base_dir)/vsrc/SimDTM.v \
 | |
|         $(base_dir)/vsrc/SimJTAG.v \
 | |
| 	$(bb_vsrcs)
 | |
| 
 | |
| # C sources
 | |
| 
 | |
| sim_csrcs = \
 | |
| 	$(base_dir)/csrc/SimDTM.cc \
 | |
|         $(base_dir)/csrc/SimJTAG.cc \
 | |
|         $(base_dir)/csrc/remote_bitbang.cc
 | |
| 
 | |
| #--------------------------------------------------------------------
 | |
| # Build Verilog
 | |
| #--------------------------------------------------------------------
 | |
| 
 | |
| verilog: $(sim_vsrcs)
 | |
| 
 | |
| .PHONY: verilog
 | |
| 
 | |
| #--------------------------------------------------------------------
 | |
| # Build rules
 | |
| #--------------------------------------------------------------------
 | |
| 
 | |
| VCS = vcs -full64
 | |
| 
 | |
| VCS_OPTS = -notice -line +lint=all,noVCDE,noONGS,noUI -error=PCWM-L -timescale=1ns/10ps -quiet \
 | |
| 	+rad +v2k +vcs+lic+wait \
 | |
| 	+vc+list -CC "-I$(VCS_HOME)/include" \
 | |
| 	-CC "-I$(RISCV)/include" \
 | |
| 	-CC "-std=c++11" \
 | |
| 	-CC "-Wl,-rpath,$(RISCV)/lib" \
 | |
| 	$(RISCV)/lib/libfesvr.so \
 | |
| 	-sverilog \
 | |
| 	+incdir+$(generated_dir) \
 | |
| 	+define+CLOCK_PERIOD=1.0 $(sim_vsrcs) $(sim_csrcs) \
 | |
| 	+define+PRINTF_COND=$(TB).printf_cond \
 | |
| 	+define+STOP_COND=!$(TB).reset \
 | |
| 	+define+RANDOMIZE_MEM_INIT \
 | |
| 	+define+RANDOMIZE_REG_INIT \
 | |
| 	+define+RANDOMIZE_GARBAGE_ASSIGN \
 | |
| 	+define+RANDOMIZE_INVALID_ASSIGN \
 | |
| 	+libext+.v \
 | |
| 
 | |
| #--------------------------------------------------------------------
 | |
| # Build the simulator
 | |
| #--------------------------------------------------------------------
 | |
| 
 | |
| simv = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)
 | |
| $(simv) : $(sim_vsrcs) $(sim_csrcs)
 | |
| 	cd $(sim_dir) && \
 | |
| 	rm -rf csrc && \
 | |
| 	$(VCS) $(VCS_OPTS) -o $(simv) \
 | |
| 	-debug_pp \
 | |
| 
 | |
| simv_debug = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)-debug
 | |
| $(simv_debug) : $(sim_vsrcs) $(sim_csrcs)
 | |
| 	cd $(sim_dir) && \
 | |
| 	rm -rf csrc && \
 | |
| 	$(VCS) $(VCS_OPTS) -o $(simv_debug) \
 | |
| 	+define+DEBUG -debug_pp \
 | |
| 
 | |
| #--------------------------------------------------------------------
 | |
| # Run
 | |
| #--------------------------------------------------------------------
 | |
| 
 | |
| seed = $(shell date +%s)
 | |
| exec_simv = $(simv) +permissive -q +ntb_random_seed_automatic +permissive-off
 | |
| exec_simv_debug = $(simv_debug) +permissive -q +ntb_random_seed_automatic +permissive-off
 |