cvw/sim/lint-wally

52 lines
1.9 KiB
Plaintext
Raw Normal View History

2021-05-03 21:32:05 +00:00
#!/bin/bash
# check for warnings in Verilog code
2024-01-29 22:51:21 +00:00
# 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)/..
2024-02-01 04:03:14 +00:00
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) # fdqh_rv64gc
derivconfigs=`ls $WALLY/config/deriv`
for entry in $derivconfigs
do
2024-02-01 04:03:14 +00:00
if [[ $entry != *"syn_sram"* ]]; then # ignore syn_sram* configs that contain undefined module
configs[${#configs[@]}]=$entry
fi
done
else
2024-02-01 04:24:16 +00:00
configs=(rv32e rv64gc rv32gc rv32imc rv32i rv64i div_2_1i_rv64gc ) # add fdqh_rv64gc when working
fi
for config in ${configs[@]}; do
2024-02-01 04:03:14 +00:00
# echo "$config linting..."
if !($verilator --no-timing --lint-only --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 --relative-includes ); then
2024-02-01 04:03:14 +00:00
if [ "$1" == "-nightly" ]; then
echo -e "${RED}$config failed lint${NC}"
2024-02-01 04:24:16 +00:00
fails=$((fails+1))
2024-02-01 04:03:14 +00:00
else
echo -e "${RED}$config fails with lint errors or warnings"
exit 1
fi
else
echo -e "${GREEN}$config passed lint${NC}"
2021-04-29 18:48:41 +00:00
fi
done
2024-02-01 04:24:16 +00:00
if [ $fails > 0 ]; then
echo -e "${RED}Linting failed for $fails of ${#configs[@]} configurations"
2024-02-01 04:03:14 +00:00
exit 1
fi
2024-02-01 04:24:16 +00:00
echo -e "${GREEN}All ${#configs[@]} lints run with no errors or warnings"
# --lint-only just runs lint rather than trying to compile and simulate
2023-10-18 12:38:36 +00:00
# -I points to the include directory where files such as `include config.vh are found
2021-10-25 17:05:41 +00:00
# For more exhaustive (and sometimes spurious) warnings, add --Wall to the Verilator command
# Unfortunately, this produces a bunch of UNUSED and UNDRIVEN signal warnings in blocks that are configured to not exist.