blob: 27adf36f92cd287cac33aea54c170930d00c3433 [file] [log] [blame]
#!/bin/bash
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
# to run cdc-lint on all modules, type
# cdc_lint_all
#-------------------------------------------------------------------------
# list all blocks
#-------------------------------------------------------------------------
declare -a blocks=(
"prim_fifo_async"
"prim_pulse_sync"
"gpio"
"rv_core_ibex"
"rv_dm"
"rv_plic"
"spi_device"
"rv_timer"
"uart"
"hmac"
"flash_ctrl"
"usbuart"
"usbdev"
"usb_fs_nb_pe"
"tlul_adapter_sram"
"tlul_socket_1n"
"tlul_socket_m1"
"sram2tlul"
"xbar_main"
"top_earlgrey"
)
#-------------------------------------------------------------------------
# print header
#-------------------------------------------------------------------------
printf "CDC LINT REPORT:\n\n"
format="%20s %10s %10s %10s \n"
printf "${format}" "Block" "Clocks" "Crossings" "Warnings"
echo "------------------------------------------------------"
#-------------------------------------------------------------------------
# run cdc-lint (meridian) and summarize results
#-------------------------------------------------------------------------
\rm -Rf build meridian_project cdc*.log cdc*.rpt
for block in "${blocks[@]}" ; do
cdc_lint $block > /dev/null 2>&1
cp cdc.rpt cdc_${block}.rpt
cp cdc.log cdc_${block}.log
# summarize results
crash=`grep "^ ERR" cdc.log`
if [ $? -eq 0 ]; then
printf "${format}" $block "CRASH"
else
clocks=`grep "Total Async" cdc.log | cut -d":" -f2`
cross=`grep "Total crossings detected" cdc.log | cut -d" " -f4 | cut -d"," -f1`
warns=`grep "Total warnings found" cdc.log | cut -d":" -f2`
printf "${format}" $block $clocks $cross $warns
fi
done
#-------------------------------------------------------------------------
# generate detailed reports
#-------------------------------------------------------------------------
printf "\n\nLIST OF WARNINGS FOR EACH BLOCK:"
for block in "${blocks[@]}" ; do
printf "\n\n${block}\n"
grep "^W_" cdc_${block}.rpt | cut -d";" -f1
done