mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # check for warnings in Verilog code
 | |
| # The verilator lint tool is faster and better than Questa so it is best to run this first.
 | |
| 
 | |
| export PATH=$PATH:/usr/local/bin/
 | |
| verilator=`which verilator`
 | |
| 
 | |
| basepath=$(dirname $0)/..
 | |
| RED='\033[0;31m'
 | |
| GREEN='\033[0;32m'
 | |
| NC='\033[0m' # No Color
 | |
| fails=0
 | |
| 
 | |
| if [ "$1" == "--nightly" ]; then
 | |
|     configs=(rv32e rv64gc rv32gc rv32imc rv32i rv64i) 
 | |
|     derivconfigs=`ls $WALLY/config/deriv`
 | |
|     for entry in $derivconfigs
 | |
|     do
 | |
|         if [[ $entry != *"syn_sram"* ]]; then  # ignore syn_sram* configs that contain undefined module
 | |
|             configs[${#configs[@]}]=$entry
 | |
|         fi
 | |
|     done
 | |
| else
 | |
|     configs=(rv32e rv64gc rv32gc rv32imc rv32i rv64i fdqh_rv64gc)
 | |
| fi
 | |
| 
 | |
| for config in ${configs[@]}; do
 | |
| #    echo "$config linting..."
 | |
|     if !($verilator --lint-only --quiet --top-module wallywrapper \
 | |
|          "-I$basepath/config/shared" "-I$basepath/config/$config" "-I$basepath/config/deriv/$config" \
 | |
|          $basepath/src/cvw.sv $basepath/testbench/wallywrapper.sv $basepath/src/*/*.sv $basepath/src/*/*/*.sv \
 | |
|          -Wall -Wno-UNUSEDSIGNAL -Wno-UNUSEDPARAM -Wno-VARHIDDEN -Wno-GENUNNAMED -Wno-PINCONNECTEMPTY); then
 | |
|         if [ "$1" == "-nightly" ]; then
 | |
|             echo -e "${RED}$config failed lint${NC}"
 | |
|             fails=$((fails+1))
 | |
|         else
 | |
|             echo -e "${RED}$config fails with lint errors or warnings"
 | |
|             exit 1
 | |
|         fi
 | |
|     else
 | |
|         echo -e "${GREEN}$config passed lint${NC}"
 | |
|     fi
 | |
| done
 | |
| if [ $fails -gt 0 ]; then
 | |
|     echo -e "${RED}Linting failed for $fails of ${#configs[@]} configurations"
 | |
|     exit 1
 | |
| fi
 | |
| echo -e "${GREEN}All ${#configs[@]} lints run with no errors or warnings"
 | |
| 
 | |
| # --lint-only just runs lint rather than trying to compile and simulate
 | |
| # -I points to the include directory where files such as `include config.vh  are found
 | |
| 
 | |
| # For more exhaustive (and sometimes spurious) warnings, add --Wall to the Verilator command
 | |
| # verilator --lint-only -Wall --quiet --top-module wallywrapper -Iconfig/shared -Iconfig/rv64gc src/cvw.sv testbench/wallywrapper.sv src/*/*.sv src/*/*/*.sv -Wno-UNUSEDPARAM -Wno-VARHIDDEN -Wno-GENUNNAMED -Wno-PINCONNECTEMPTY
 | |
| # Unfortunately, this produces a bunch of UNUSED and UNDRIVEN signal warnings in blocks that are configured to not exist.
 |