2025-03-01 07:42:05 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
# Function to run Verilator lint
|
|
|
|
|
run_lint() {
|
|
|
|
|
echo -e "\e[32mRun Verilator Lint:\e[0m"
|
|
|
|
|
verilator --lint-only rtl/ddr3_controller.v rtl/ecc/ecc_dec.sv rtl/ecc/ecc_enc.sv -Irtl/ -Wall
|
|
|
|
|
echo "DONE!"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# If the script is called with "lint", run only linting and exit
|
|
|
|
|
if [[ "$1" == "lint" ]]; then
|
|
|
|
|
run_lint
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
2024-06-29 13:23:23 +02:00
|
|
|
# Clean files
|
|
|
|
|
rm -rf formal/ddr3*prf*
|
|
|
|
|
rm -rf formal/ddr3_singleconfig
|
|
|
|
|
|
2025-03-01 07:42:05 +01:00
|
|
|
# Run Verilator lint
|
|
|
|
|
run_lint
|
2023-07-24 11:33:56 +02:00
|
|
|
|
|
|
|
|
# run yosys compile
|
|
|
|
|
echo ""
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "\e[32mRun Yosys Compile:\e[0m"
|
|
|
|
|
yosys -q -p "
|
2024-06-24 11:19:04 +02:00
|
|
|
read_verilog -sv ./rtl/ddr3_controller.v rtl/ecc/ecc_dec.sv rtl/ecc/ecc_enc.sv;
|
2023-07-24 11:33:56 +02:00
|
|
|
synth -top ddr3_controller"
|
|
|
|
|
|
|
|
|
|
# run iverilog compile
|
|
|
|
|
echo ""
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "\e[32mRun IVerilog Compile:\e[0m"
|
|
|
|
|
iverilog rtl/ddr3_controller.v -o out
|
|
|
|
|
vvp out
|
|
|
|
|
rm out
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
# run symbiyosys
|
2024-07-28 11:28:05 +02:00
|
|
|
echo ""
|
|
|
|
|
echo -e "\e[32mRun Symbiyosys Formal Verification: ECC\e[0m"
|
|
|
|
|
echo "---------------------------------------"
|
|
|
|
|
sby -f formal/ecc.sby
|
|
|
|
|
|
2023-07-24 11:33:56 +02:00
|
|
|
echo ""
|
2024-06-09 05:31:58 +02:00
|
|
|
echo -e "\e[32mRun Symbiyosys Formal Verification: Single Configuration\e[0m"
|
2023-07-24 11:33:56 +02:00
|
|
|
echo "---------------------------------------"
|
2024-06-09 05:31:58 +02:00
|
|
|
sby -f formal/ddr3_singleconfig.sby
|
|
|
|
|
|
|
|
|
|
echo ""
|
2024-07-28 11:28:05 +02:00
|
|
|
echo -e "\e[32mRun Symbiyosys Formal Verification: Multiple Configurations (DEFAULT)\e[0m"
|
|
|
|
|
echo "---------------------------------------"
|
|
|
|
|
sby -f formal/ddr3_multiconfig_default.sby
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "\e[32mRun Symbiyosys Formal Verification: Multiple Configurations (ECC)\e[0m"
|
2024-06-09 05:31:58 +02:00
|
|
|
echo "---------------------------------------"
|
2024-07-28 11:28:05 +02:00
|
|
|
sby -f formal/ddr3_multiconfig_ecc.sby
|
2023-11-18 06:36:29 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# ANSI color codes
|
|
|
|
|
RED='\033[0;31m'
|
|
|
|
|
GREEN='\033[0;32m'
|
|
|
|
|
NC='\033[0m' # No Color
|
|
|
|
|
|
2023-11-26 06:35:59 +01:00
|
|
|
echo ""
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Summary:"
|
2025-03-01 07:42:05 +01:00
|
|
|
|
|
|
|
|
# Excluded folders
|
|
|
|
|
excluded_folders=("formal/ddr3_multiconfig_default/" "formal/ddr3_multiconfig_ecc/")
|
|
|
|
|
|
2023-11-18 06:36:29 +01:00
|
|
|
# Iterate over folders starting with 'ddr3*'
|
2024-06-09 06:01:30 +02:00
|
|
|
for folder in formal/ddr3*/ ; do
|
2025-03-01 07:42:05 +01:00
|
|
|
# Skip excluded folders
|
|
|
|
|
[[ " ${excluded_folders[*]} " =~ " ${folder} " ]] && continue
|
|
|
|
|
|
|
|
|
|
# Check for 'PASS' file
|
2023-11-18 06:36:29 +01:00
|
|
|
if [[ -e "${folder}PASS" ]]; then
|
|
|
|
|
echo -e "${folder}: ${GREEN}PASS${NC}"
|
|
|
|
|
else
|
|
|
|
|
echo -e "${folder}: ${RED}FAIL${NC}"
|
|
|
|
|
fi
|
|
|
|
|
done
|
2023-07-24 11:33:56 +02:00
|
|
|
|
2024-07-28 11:28:05 +02:00
|
|
|
# Iterate over folders inside 'ecc/'
|
|
|
|
|
for folder in formal/ecc/ ; do
|
2025-03-01 07:42:05 +01:00
|
|
|
[[ " ${excluded_folders[*]} " =~ " ${folder} " ]] && continue
|
|
|
|
|
|
2024-07-28 11:28:05 +02:00
|
|
|
if [[ -e "${folder}PASS" ]]; then
|
|
|
|
|
echo -e "${folder}: ${GREEN}PASS${NC}"
|
|
|
|
|
else
|
|
|
|
|
echo -e "${folder}: ${RED}FAIL${NC}"
|
|
|
|
|
fi
|
|
|
|
|
done
|