Source / Read the circuit

run_stream.sh

lessons/adc_digital/scripts/run_stream.sh

#!/usr/bin/env bash
set -euo pipefail
lesson_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
project_dir="$(cd "$lesson_dir/../.." && pwd)"
local_tools="$project_dir/.tools/iverilog/root/usr"
if [[ -x "$local_tools/bin/iverilog" ]]; then
    compiler=("$local_tools/bin/iverilog" -B "$local_tools/lib64/ivl")
    runner="$local_tools/bin/vvp"
elif command -v iverilog >/dev/null && command -v vvp >/dev/null; then
    compiler=(iverilog); runner="$(command -v vvp)"
else echo 'No Icarus available' >&2; exit 2; fi
output="$lesson_dir/results/stream"
mkdir -p "$output"
bash "$lesson_dir/scripts/run_models.sh"
python3 "$lesson_dir/models/stream_reference.py" --generate "$output" --models "$lesson_dir/results/models/experiments.json"
"${compiler[@]}" -g2012 -Wall -s tb_stream -o "$output/stream.vvp" \
    "$lesson_dir"/rtl/*.sv "$lesson_dir/tb/tb_stream.sv" > "$output/compile.log" 2>&1
(cd "$output" && "$runner" stream.vvp) 2>&1 | tee "$output/sim.log"
grep -q '^ADC_STREAM_SIMULATION_COMPLETE samples=65540' "$output/sim.log"
python3 "$lesson_dir/models/stream_reference.py" --verify "$output" 2>&1 | tee "$output/verification.log"
grep -q '^ADC_STREAM_VERIFICATION_COMPLETE' "$output/verification.log"