blob: 861817135e82c31035c7eaf5f92d1a7b2160828f [file] [log] [blame]
#!/usr/bin/env bash
export REDIR_FILE="/dev/stderr"
export PYTHONHASHSEED=0
SCRIPT_SRC="$(realpath ${BASH_SOURCE[0]})"
SCRIPT_DIR="$(dirname "${SCRIPT_SRC}")"
source $SCRIPT_DIR/common.sh
if [ -z "$INPUT_DIRECTORY" ]; then
if [ ! -z "$1" ]; then
INPUT_DIRECTORY=$1
else
msg "No \$INPUT_DIRECTORY set or argument given."
exit 1
fi
fi
export INPUT_DIRECTORY
msg "Input directory: $INPUT_DIRECTORY"
if [ -z "$OUTPUT_DIRECTORY" ]; then
if [ ! -z "$2" ]; then
OUTPUT_DIRECTORY=$2
else
msg "No \$OUTPUT_DIRECTORY set or argument given."
exit 1
fi
fi
export OUTPUT_DIRECTORY
msg "Output directory: $OUTPUT_DIRECTORY"
TEMP_DIR=$(realpath ../tempdir-openram)
if [ -d "$TEMP_DIR" ]; then
msg "Temp directory exists!"
exit 1
fi
export TEMP_DIR
msg "Temp directory: $TEMP_DIR"
set -x
mkdir -p $TEMP_DIR
# Remove the existing stuff
rm -rf $OUTPUT_DIRECTORY/libraries
mkdir $OUTPUT_DIRECTORY/libraries
# Output the status.
DATE=$(date --iso-8601=seconds)
SAFE_DATE=$(echo $DATE | sed -e's/[T+]/_/g' -e's/://g' -e's/[^0-9A-Za-z_]/-/g')
msg "Run start on $DATE"
echo "----------------------------"
echo > $OUTPUT_DIRECTORY/build-tool-version
AUDIT_VERSION=$(git describe)
msg "Audit repo version: $AUDIT_VERSION"
echo "audit: $AUDIT_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version
MAGIC_VERSION=$(magic --version)
msg "Magic version: $MAGIC_VERSION"
echo "magic: $MAGIC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version
SRC_VERSION=$(cd $INPUT_DIRECTORY; git describe)
msg "SRC version: $SRC_VERSION"
echo "src: $SRC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version
echo "---------------------"
cat $OUTPUT_DIRECTORY/build-tool-version
echo "---------------------"
export DESCRIBE=audit-${AUDIT_VERSION}_magic-${MAGIC_VERSION}_$SAFE_DATE
msg "Run output version $DESCRIBE"
# Copy accross the template files
msg "Copying template files."
$SCRIPT_DIR/template-files.py $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR ; RETCODE=$?
if [ "$RETCODE" -ne 0 ]; then
msg "Error: Failed to copy template files!?"
exit 1
else
msg "Successfully copied template files."
fi
# Convert the spice models
#msg "Converting spice models."
#$SCRIPT_DIR/run-spice.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR/spice; RETCODE=$?
#if [ "$RETCODE" -ne 0 ]; then
# msg "Error: Failed to convert spice files!?"
# exit 1
#else
# msg "Successfully converted spice files."
#fi
#source $SCRIPT_DIR/run/run-cdl-lef-gds.inc.sh
source $SCRIPT_DIR/run/run-gds.inc.sh
$SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_bd_sram || exit 1
#source $SCRIPT_DIR/run/run-verilog.inc.sh
#source $SCRIPT_DIR/run/run-liberty.inc.sh
$SCRIPT_DIR/sram_spice.py $INPUT_DIRECTORY/s8sram/V0.0.0/cells $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/cells/
cp -a $INPUT_DIRECTORY/tools $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/
# Remove the .pins files
find $OUTPUT_DIRECTORY/ -name \*.pins -empty -delete -print
find $OUTPUT_DIRECTORY/ -name \*.sh -delete -print
cp -a $INPUT_DIRECTORY/tools $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/
cp -a $INPUT_DIRECTORY/sky130 $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/tools/openram/
cp -a $INPUT_DIRECTORY/macros/configs $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/tools/openram/
mkdir $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/macros
cat > $OUTPUT_DIRECTORY/libraries/sky130_fd_bd_sram/v0.0.0/macros/README.rst <<EOF
This directory will contain the precompiled SRAM macros ready to go.
EOF
git describe
git diff HEAD
msg "Doing git operations."
(
cd $OUTPUT_DIRECTORY
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
git add -A
git diff HEAD --stat
find -name *.src -exec git rm -f \{\} \+
git commit -m"Built based on $DESCRIBE"
git push origin $GIT_BRANCH:"ram-$DESCRIBE"
sleep 1
git push origin $GIT_BRANCH:"ram-$DESCRIBE"
)
msg "Finished git operations."
msg "FINISHED: Build completed successfully @ $(date) using $AUDIT_VERSION (magic: $MAGIC_VERSION) (started @ $DATE)."