aboutsummaryrefslogtreecommitdiff
path: root/rv64cpu/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'rv64cpu/scripts')
-rwxr-xr-xrv64cpu/scripts/gen_hex.sh25
-rwxr-xr-xrv64cpu/scripts/wave_view.sh25
2 files changed, 50 insertions, 0 deletions
diff --git a/rv64cpu/scripts/gen_hex.sh b/rv64cpu/scripts/gen_hex.sh
new file mode 100755
index 0000000..8ba4c94
--- /dev/null
+++ b/rv64cpu/scripts/gen_hex.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# ─── gen_hex.sh ──────────────────────────────────────────────────────────────────
+# Convert an ELF file to Verilog hex format for $readmemh
+#
+# Usage: ./scripts/gen_hex.sh <input.elf> [output.hex]
+# ─────────────────────────────────────────────────────────────────────────────────
+set -euo pipefail
+
+CROSS_PREFIX="${CROSS_PREFIX:-riscv64-unknown-elf-}"
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $0 <input.elf> [output.hex]"
+ exit 1
+fi
+
+INPUT="$1"
+OUTPUT="${2:-${INPUT%.elf}.hex}"
+
+${CROSS_PREFIX}objcopy -O verilog "$INPUT" "$OUTPUT"
+echo "[gen_hex] $INPUT → $OUTPUT"
+
+# Also generate .bin and disassembly for inspection
+${CROSS_PREFIX}objcopy -O binary "$INPUT" "${INPUT%.elf}.bin"
+${CROSS_PREFIX}objdump -d -M no-aliases "$INPUT" > "${INPUT%.elf}.dump"
+echo "[gen_hex] Also generated .bin and .dump"
diff --git a/rv64cpu/scripts/wave_view.sh b/rv64cpu/scripts/wave_view.sh
new file mode 100755
index 0000000..5a3a6e4
--- /dev/null
+++ b/rv64cpu/scripts/wave_view.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# ─── wave_view.sh ────────────────────────────────────────────────────────────────
+# Open a VCD/FST waveform file in GTKWave
+#
+# Usage: ./scripts/wave_view.sh [waveform_file]
+# ./scripts/wave_view.sh # opens latest .vcd in waves/
+# ─────────────────────────────────────────────────────────────────────────────────
+set -euo pipefail
+
+WAVES_DIR="$(dirname "$0")/../waves"
+VIEWER="${WAVE_VIEWER:-gtkwave}"
+
+if [ $# -ge 1 ]; then
+ WAVE_FILE="$1"
+else
+ # Open the most recently modified waveform file
+ WAVE_FILE=$(ls -t "$WAVES_DIR"/*.vcd "$WAVES_DIR"/*.fst 2>/dev/null | head -1)
+ if [ -z "$WAVE_FILE" ]; then
+ echo "No waveform files found in $WAVES_DIR"
+ exit 1
+ fi
+fi
+
+echo "[wave_view] Opening: $WAVE_FILE"
+$VIEWER "$WAVE_FILE" &