| #!/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) |
| 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.inc.sh |
| source $SCRIPT_DIR/run/run-gds.inc.sh |
| $SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_pr || exit 1 |
| $SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_sc_ || exit 1 |
| source $SCRIPT_DIR/run/run-verilog.inc.sh |
| source $SCRIPT_DIR/run/run-liberty.inc.sh |
| |
| # Remove the .pins files |
| find $OUTPUT_DIRECTORY -name *.pins -delete |
| # Remove the .gds2svg.sh files |
| find $OUTPUT_DIRECTORY -name *.gds2svg.sh -delete |
| |
| 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 |
| git commit -m"Built based on $DESCRIBE (with src)" |
| git push origin master:"master-$DESCRIBE-src" |
| echo |
| find -name *.src -exec git rm \{\} \+ |
| git commit --amend -m"Built based on $DESCRIBE (without src)" |
| git push origin $GIT_BRANCH:"master-$DESCRIBE" |
| sleep 1 |
| git push origin $GIT_BRANCH:"master-$DESCRIBE" |
| ) |
| msg "Finished git operations." |
| |
| msg "FINISHED: Build completed successfully @ $(date) using $AUDIT_VERSION (magic: $MAGIC_VERSION) (started @ $DATE)." |