Source / Read the circuit

run_synth.sh

lessons/adc_digital/scripts/run_synth.sh

#!/usr/bin/env bash
set -euo pipefail
lesson_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
genus_bin="${GENUS_BIN:-/opt/eda/cadence/DDI251/GENUS251/bin/genus}"
[[ -x "$genus_bin" ]] || { echo 'Genus unavailable' >&2; exit 2; }
if [[ "${1:-}" == --verify ]]; then
    shift
    for top in sar_controller flash_encoder pipeline_align dwa_encoder adc_fixed_correct adc_async_fifo ti_adc_backend; do
        report_dir="$lesson_dir/results/synth/$top"
        grep -q "^ADC_SYNTHESIS_COMPLETE top=$top" "$report_dir/console.log"
        grep -q 'Normal exit' "$report_dir/console.log"
        python3 "$lesson_dir/models/check_synth.py" "$report_dir" "$top"
    done
    echo 'ADC_SYNTHESIS_VERIFIED_OUTPUTS tops=7 mode=existing-reports'
    exit 0
fi
if (( $# )); then tops=("$@"); else
    tops=(sar_controller flash_encoder pipeline_align dwa_encoder adc_fixed_correct adc_async_fifo ti_adc_backend)
fi
for top in "${tops[@]}"; do
    case "$top" in sar_controller|flash_encoder|pipeline_align|dwa_encoder|adc_fixed_correct|adc_async_fifo|ti_adc_backend) ;;
        *) echo "Unsupported synthesis top: $top" >&2; exit 2;; esac
    export ADC_TOP="$top" ADC_RESULTS="$lesson_dir/results/synth/$top"
    mkdir -p "$ADC_RESULTS"
    echo "Synthesis starting: $top"
    if ! (cd "$ADC_RESULTS" && "$genus_bin" -no_gui -batch -abort_on_error -disable_user_startup \
        -log "$ADC_RESULTS/genus" -files "$lesson_dir/synth/run_genus.tcl" \
        > "$ADC_RESULTS/console.log" 2>&1); then
        tail -60 "$ADC_RESULTS/console.log" >&2; exit 1
    fi
    grep -q "^ADC_SYNTHESIS_COMPLETE top=$top" "$ADC_RESULTS/console.log"
    grep -q 'Normal exit' "$ADC_RESULTS/console.log"
    python3 "$lesson_dir/models/check_synth.py" "$ADC_RESULTS" "$top"
done
echo "ADC_SYNTHESIS_VERIFIED_OUTPUTS tops=${#tops[@]}"