blob: e56bf4a23b158740194f737073f5ea011d168af0 [file] [log] [blame]
#!/bin/bash
# to run rtl_diff (Conformal LEC) on all modules, type
# rtl_diff_all
#-------------------------------------------------------------------------
# list all blocks
#-------------------------------------------------------------------------
declare -a blocks=(
"gpio"
"rv_core_ibex"
"rv_dm"
"rv_plic"
"spi_device"
"rv_timer"
"uart"
"hmac"
"flash_ctrl"
"usbdev"
"usb_fs_nb_pe"
"tlul_adapter_sram"
"tlul_socket_1n"
"tlul_socket_m1"
"sram2tlul"
"top_earlgrey"
)
#-------------------------------------------------------------------------
# print header
#-------------------------------------------------------------------------
printf "LEC RESULTS (RTL vs. RTL) \n\n"
format="%18s %10s \n"
printf "${format}" "Block" "Result"
echo "------------------------------"
#-------------------------------------------------------------------------
# run rtl_diff and summarize results
#-------------------------------------------------------------------------
\rm -Rf lec_*.log
for block in "${blocks[@]}" ; do
# set full path to module $block
if [ $block == "top_earlgrey" ]; then
block_full="../${block}/rtl/${block}.sv"
elif [ $block == "usb_fs_nb_pe" ]; then
block_full="../ip/usbfs_nb_pe/rtl/${block}.sv"
elif [[ $block =~ "tlul" ]]; then
block_full="../ip/tlul/rtl/${block}.sv"
elif [[ $block == "rv_plic" ]]; then
block_full="../top_earlgrey/ip_autogen/${block}/rtl/${block}.sv"
else
block_full="../ip/${block}/rtl/${block}.sv"
fi
# run rtl_diff for module $block_full vs. itself
rtl_diff $block_full $block_full > /dev/null 2>&1
cp rtl_diff.log lec_${block}.log
# summarize results
result=`grep "Compare Results" rtl_diff.log`
if [ $? -ne 0 ]; then
printf "${format}" $block "CRASH"
else
result=`echo $result | awk '{ print $4 }'`
printf "${format}" $block $result
fi
done
#-------------------------------------------------------------------------
# print errors
#-------------------------------------------------------------------------
printf "\n\nLIST OF ERRORS:"
for block in "${blocks[@]}" ; do
egrep -A 2 "(Error:|ERROR )" lec_${block}.log > /dev/null 2>&1
if [ $? -eq 0 ]; then
printf "\n\n${block}\n"
egrep -A 2 "(Error:|ERROR )" lec_${block}.log
fi
done