Skip to content

Commit

Permalink
Merge pull request #2248 from antmicro/ivysochyn/power-simulation-ci
Browse files Browse the repository at this point in the history
Add power simulation support and Verilator to the CI pipeline
  • Loading branch information
maliberty authored Aug 17, 2024
2 parents 292a586 + 073f45e commit abdb787
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 14 deletions.
32 changes: 30 additions & 2 deletions etc/DependencyInstaller.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ fi

# package versions
klayoutVersion=0.28.8
verilatorVersion=5.026

_versionCompare() {
local a b IFS=. ; set -f
Expand All @@ -34,6 +35,23 @@ _installCommon() {
else
pip3 install --no-cache-dir --user -U $pkgs
fi

baseDir=$(mktemp -d /tmp/DependencyInstaller-orfs-XXXXXX)

# Install Verilator
verilatorPrefix=`realpath ${PREFIX:-"/usr/local"}`
if [[ ! -x ${verilatorPrefix}/bin/verilator ]]; then
pushd $baseDir
git clone --depth=1 -b "v$verilatorVersion" https://github.com/verilator/verilator.git
pushd verilator
autoconf
./configure --prefix "${verilatorPrefix}"
make -j`nproc`
make install
popd
rm -r verilator
popd
fi
}

_installCentosCleanUp() {
Expand Down Expand Up @@ -84,19 +102,28 @@ _installUbuntuPackages() {
export DEBIAN_FRONTEND="noninteractive"
apt-get -y update
apt-get -y install --no-install-recommends \
bison \
curl \
flex \
help2man \
libfl-dev \
libfl2 \
libgoogle-perftools-dev \
libqt5multimediawidgets5 \
libqt5opengl5 \
libqt5svg5-dev \
libqt5xmlpatterns5-dev \
libqt5opengl5 \
libz-dev \
perl \
python3-pip \
python3-venv \
qtmultimedia5-dev \
qttools5-dev \
ruby \
ruby-dev \
time
time \
zlib1g \
zlib1g-dev

# install KLayout
if _versionCompare $1 -ge 23.04; then
Expand Down Expand Up @@ -242,6 +269,7 @@ while [ "$#" -gt 0 ]; do
;;
-prefix=*)
OR_INSTALLER_ARGS="${OR_INSTALLER_ARGS} $1"
PREFIX=${1#*=}
;;
*)
echo "unknown option: ${1}" >&2
Expand Down
35 changes: 23 additions & 12 deletions flow/test/test_helper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -eoux pipefail

cd "$(dirname $(readlink -f $0))/../"
cd "$(dirname "$(readlink -f "$0")")/../"

# Setting args (and setting default values for testing)
DESIGN_NAME=${1:-gcd}
Expand All @@ -13,20 +13,20 @@ if [ $# -eq 4 ]; then
fi
DESIGN_CONFIG=./designs/$PLATFORM/$DESIGN_NAME/$CONFIG_MK
LOG_FILE=./logs/$PLATFORM/$DESIGN_NAME.log
mkdir -p ./logs/$PLATFORM
mkdir -p "./logs/$PLATFORM"

__make="make DESIGN_CONFIG=$DESIGN_CONFIG"
if [ ! -z "${FLOW_VARIANT+x}" ]; then
if [ -n "${FLOW_VARIANT+x}" ]; then
__make+=" FLOW_VARIANT=$FLOW_VARIANT"
fi

mkdir -p $(dirname $LOG_FILE)
$__make clean_all clean_metadata 2>&1 | tee $LOG_FILE
mkdir -p "$(dirname "$LOG_FILE")"
$__make clean_all clean_metadata 2>&1 | tee "$LOG_FILE"

# turn off abort on error so we can always capture the result
set +e

$__make finish metadata 2>&1 | tee -a $LOG_FILE
$__make finish metadata 2>&1 | tee -a "$LOG_FILE"

# Save the return code to return as the overall status after we package
# the results
Expand All @@ -36,21 +36,21 @@ if [ -z "${PRIVATE_DIR+x}" ]; then
PRIVATE_DIR="../../private_tool_scripts"
fi

if [ -f "$PRIVATE_DIR/openRoad/private.mk" ] && [ ! -z ${SAVE_TO_DB+x} ]; then
if [ -f "$PRIVATE_DIR/openRoad/private.mk" ] && [ -n "${SAVE_TO_DB+x}" ]; then
$__make save_to_metrics_db
ret=$(( ret + $? ))
fi

if [ -f "$PRIVATE_DIR/util/utils.mk" ] && [ ! -z ${RUN_CALIBRE+x} ]; then
if [ -f "$PRIVATE_DIR/util/utils.mk" ] && [ -n "${RUN_CALIBRE+x}" ]; then
$__make calibre_drc
ret=$(( ret + $? ))
$__make convert_calibre
ret=$(( ret + $? ))
if [ ! -z ${SAVE_TO_DB+x} ]; then
if [ -n "${SAVE_TO_DB+x}" ]; then
$__make save_to_drc_db
ret=$(( ret + $? ))
fi
if [ ! -z ${CHECK_DRC_DB+x} ]; then
if [ -n "${CHECK_DRC_DB+x}" ]; then
$__make check_drc_db
ret=$(( ret + $? ))
fi
Expand All @@ -59,8 +59,19 @@ fi
# Only enabled abort on error at the end to allow script to reach make issue
set -e

if [ ! -z ${MAKE_ISSUE+x} ]; then
$__make final_report_issue 2>&1 | tee -a $LOG_FILE
if [ -n "${MAKE_ISSUE+x}" ]; then
$__make final_report_issue 2>&1 | tee -a "$LOG_FILE"
fi

# Find make targets
TARGETS=$($__make -np | grep -e '^[^ ]*:')
if [ $ret -eq 0 ] && grep -q 'simulate:' <(echo $TARGETS); then
$__make simulate 2>&1 | tee -a "$LOG_FILE"
ret=$(( ret + $? ))
fi
if [ $ret -eq 0 ] && grep -q 'power:' <(echo $TARGETS); then
$__make power 2>&1 | tee -a "$LOG_FILE"
ret=$(( ret + $? ))
fi

exit $ret

0 comments on commit abdb787

Please sign in to comment.