From 0eace93dfdda9b823dcc4ecd894e1480b591ac5b Mon Sep 17 00:00:00 2001 From: Wade Tran Date: Thu, 17 Sep 2026 11:45:08 -0400 Subject: [PATCH 1/5] add make submit to run regress and zip src for checkoff Co-Authored-By: wade-ai --- .gitignore | 4 ++++ Makefile | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e8c8dad..5d29ede 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,7 @@ __pycache__/ # Cadence/Xcelium simulation output sim/behav/WORKSPACE/ + +# Submission packaging +submission_*.zip +regress.log diff --git a/Makefile b/Makefile index 84937a8..99c5024 100644 --- a/Makefile +++ b/Makefile @@ -4,15 +4,18 @@ TEST_DIR := tests/$(TEST) MAX_CPU_CYCLES ?= 1000 CROSSBAR_TIMEOUT ?= 20 +SUBMISSION := submission_$(USER).zip + TEST_NAMES := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard tests/*/program.asm))))) -.PHONY: help generate smoke test regress clean clean-generated +.PHONY: help generate smoke test regress submit clean clean-generated help: @echo "make generate TEST= Assemble a test and generate golden files" @echo "make smoke Test build/TB wiring with a mock DUT" @echo "make test TEST= Generate and run one RTL test" @echo "make regress Run every test, print PASS/FAIL summary (logs in tests//sim.log)" + @echo "make submit Run regress and zip src/ with the log into $(SUBMISSION)" @echo "make clean Remove generated test and simulator files" @echo "Available tests: $(TEST_NAMES)" @@ -54,6 +57,15 @@ regress: exit 1; \ fi +submit: + @rm -f $(SUBMISSION) regress.log .regress_status + @{ $(MAKE) --no-print-directory regress; echo $$? > .regress_status; } 2>&1 | tee regress.log + @zip -qr $(SUBMISSION) src regress.log -x '*.DS_Store' + @echo "----------------------------------------" + @if [ "$$(cat .regress_status)" != "0" ]; then echo "WARNING: not all tests pass, see regress.log"; fi + @rm -f .regress_status + @echo "Wrote $(SUBMISSION) for $(USER)" + clean: $(MAKE) -C sim/behav clean $(MAKE) --no-print-directory clean-generated From b558beb69fa6199b94e54659aed559b8dbb197eb Mon Sep 17 00:00:00 2001 From: Wade Tran Date: Thu, 17 Sep 2026 11:57:27 -0400 Subject: [PATCH 2/5] name the submission zip after the member and pack their tests and testbenches Co-Authored-By: wade-ai --- .gitignore | 2 +- Makefile | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 5d29ede..ba96ce6 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,5 @@ __pycache__/ sim/behav/WORKSPACE/ # Submission packaging -submission_*.zip +*-dd-fall26.zip regress.log diff --git a/Makefile b/Makefile index 99c5024..d808d7d 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,17 @@ +# Fill these in before running make submit, for example: +# MEMBER_NAME = George Burdell +# GT_USERNAME = gburdell3 +# DISCORD_NAME = gburdell67discord +MEMBER_NAME = +GT_USERNAME = +DISCORD_NAME = + PYTHON ?= python3 TEST ?= ebreak TEST_DIR := tests/$(TEST) MAX_CPU_CYCLES ?= 1000 CROSSBAR_TIMEOUT ?= 20 -SUBMISSION := submission_$(USER).zip - TEST_NAMES := $(sort $(notdir $(patsubst %/,%,$(dir $(wildcard tests/*/program.asm))))) .PHONY: help generate smoke test regress submit clean clean-generated @@ -15,7 +21,7 @@ help: @echo "make smoke Test build/TB wiring with a mock DUT" @echo "make test TEST= Generate and run one RTL test" @echo "make regress Run every test, print PASS/FAIL summary (logs in tests//sim.log)" - @echo "make submit Run regress and zip src/ with the log into $(SUBMISSION)" + @echo "make submit Run regress and zip your sources, tests and log for checkoff" @echo "make clean Remove generated test and simulator files" @echo "Available tests: $(TEST_NAMES)" @@ -58,13 +64,19 @@ regress: fi submit: - @rm -f $(SUBMISSION) regress.log .regress_status - @{ $(MAKE) --no-print-directory regress; echo $$? > .regress_status; } 2>&1 | tee regress.log - @zip -qr $(SUBMISSION) src regress.log -x '*.DS_Store' - @echo "----------------------------------------" - @if [ "$$(cat .regress_status)" != "0" ]; then echo "WARNING: not all tests pass, see regress.log"; fi - @rm -f .regress_status - @echo "Wrote $(SUBMISSION) for $(USER)" + @if [ -z "$(strip $(MEMBER_NAME))" ] || [ -z "$(strip $(GT_USERNAME))" ] || [ -z "$(strip $(DISCORD_NAME))" ]; then \ + echo "Fill in MEMBER_NAME, GT_USERNAME and DISCORD_NAME at the top of the Makefile first."; \ + exit 2; \ + fi + @submission="$$(echo '$(strip $(MEMBER_NAME))' | tr -d ' ')-$(strip $(GT_USERNAME))-$(strip $(DISCORD_NAME))-dd-fall26.zip"; \ + rm -f "$$submission" regress.log .regress_status; \ + { $(MAKE) --no-print-directory regress; echo $$? > .regress_status; } 2>&1 | tee regress.log; \ + zip -qr "$$submission" src sim/behav/Include tests regress.log \ + -x '*.DS_Store' 'tests/*/program.o' 'tests/*/program.hex' 'tests/*/sim.log'; \ + echo "----------------------------------------"; \ + if [ "$$(cat .regress_status)" != "0" ]; then echo "WARNING: not all tests pass, see regress.log"; fi; \ + rm -f .regress_status; \ + echo "Wrote $$submission" clean: $(MAKE) -C sim/behav clean From 6d812677d4b809f76678abdab08dbde1ffcfc657 Mon Sep 17 00:00:00 2001 From: Wade Tran Date: Thu, 17 Sep 2026 13:17:25 -0400 Subject: [PATCH 3/5] join every part of the member name in the zip filename Co-Authored-By: wade-ai --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d808d7d..b4f2da5 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ MEMBER_NAME = GT_USERNAME = DISCORD_NAME = +export MEMBER_NAME PYTHON ?= python3 TEST ?= ebreak @@ -68,7 +69,7 @@ submit: echo "Fill in MEMBER_NAME, GT_USERNAME and DISCORD_NAME at the top of the Makefile first."; \ exit 2; \ fi - @submission="$$(echo '$(strip $(MEMBER_NAME))' | tr -d ' ')-$(strip $(GT_USERNAME))-$(strip $(DISCORD_NAME))-dd-fall26.zip"; \ + @submission="$$(printf '%s' "$$MEMBER_NAME" | tr -d "[:space:]'.,-")-$(strip $(GT_USERNAME))-$(strip $(DISCORD_NAME))-dd-fall26.zip"; \ rm -f "$$submission" regress.log .regress_status; \ { $(MAKE) --no-print-directory regress; echo $$? > .regress_status; } 2>&1 | tee regress.log; \ zip -qr "$$submission" src sim/behav/Include tests regress.log \ From c02b6708f1482866e90ae34edd8d1f7c6650b7d5 Mon Sep 17 00:00:00 2001 From: Wade Tran Date: Thu, 17 Sep 2026 13:44:03 -0400 Subject: [PATCH 4/5] stamp make submit with who ran it, when, and how long regress took Co-Authored-By: wade-ai --- .gitignore | 1 + Makefile | 11 ++++++----- scripts/sjstamp | Bin 0 -> 19384 bytes 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100755 scripts/sjstamp diff --git a/.gitignore b/.gitignore index ba96ce6..d8eddca 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ sim/behav/WORKSPACE/ # Submission packaging *-dd-fall26.zip regress.log +submission.stamp diff --git a/Makefile b/Makefile index b4f2da5..052ffbb 100644 --- a/Makefile +++ b/Makefile @@ -70,13 +70,14 @@ submit: exit 2; \ fi @submission="$$(printf '%s' "$$MEMBER_NAME" | tr -d "[:space:]'.,-")-$(strip $(GT_USERNAME))-$(strip $(DISCORD_NAME))-dd-fall26.zip"; \ - rm -f "$$submission" regress.log .regress_status; \ - { $(MAKE) --no-print-directory regress; echo $$? > .regress_status; } 2>&1 | tee regress.log; \ - zip -qr "$$submission" src sim/behav/Include tests regress.log \ + rm -f "$$submission" regress.log submission.stamp; \ + scripts/sjstamp submission.stamp regress.log src sim/behav/Include tests -- $(MAKE) --no-print-directory regress; \ + status=$$?; \ + if [ $$status -eq 125 ]; then echo "Could not stamp the submission, nothing was zipped."; exit 1; fi; \ + zip -qr "$$submission" src sim/behav/Include tests regress.log submission.stamp \ -x '*.DS_Store' 'tests/*/program.o' 'tests/*/program.hex' 'tests/*/sim.log'; \ echo "----------------------------------------"; \ - if [ "$$(cat .regress_status)" != "0" ]; then echo "WARNING: not all tests pass, see regress.log"; fi; \ - rm -f .regress_status; \ + if [ $$status -ne 0 ]; then echo "WARNING: not all tests pass, see regress.log"; fi; \ echo "Wrote $$submission" clean: diff --git a/scripts/sjstamp b/scripts/sjstamp new file mode 100755 index 0000000000000000000000000000000000000000..1cfa2d04b7292a3506739b88bb7197513a58007d GIT binary patch literal 19384 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 literal 0 HcmV?d00001 From b0d131427844fd3bae515eb56b2b676eb01befe7 Mon Sep 17 00:00:00 2001 From: Wade Tran Date: Thu, 17 Sep 2026 14:03:56 -0400 Subject: [PATCH 5/5] mention make submit in the readme Co-Authored-By: wade-ai --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ad9a46..c13ba1b 100644 --- a/README.md +++ b/README.md @@ -276,6 +276,7 @@ In Person Submissions: Additional Instructions For Online Submissions: - Include a screenshot of all your tests passing with your gt username somewhere in the terminal in the screenshot +- fill in your name, GT username and Discord username at the top of the `Makefile`, then run `make submit` to run every test and build the zip - **submit a zip of the src folder to the sjcheckoffs Discord Account​** image - Include any supporting documentation you may have used (diagrams, drawings, state machines)