diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-10-16 16:02:52 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-10-16 16:02:52 -0600 |
| commit | a5468f968b46707e08eacf79847f1e12a4213ff7 (patch) | |
| tree | b67da1116bf1a87b9cd113f0f9c25c3a9b9672e9 | |
| parent | 851e6ff85a8d2dabdfc0234abd0b284aed8e5031 (diff) | |
Add C simulation testbench
| -rw-r--r-- | Makefile | 6 | ||||
| -rw-r--r-- | tb/sim/fibonacci.c | 13 | ||||
| -rw-r--r-- | tb/sim/fibonacci.py | 15 |
3 files changed, 31 insertions, 3 deletions
@@ -30,8 +30,8 @@ $(VCD_DIR)/%: sim: $(patsubst $(SIM_DIR)/%.py,sim/%,$(filter-out $(SIM_DIR)/sim.py,$(wildcard $(SIM_DIR)/*.py))) -sim/%: $(SIM_DIR)/sim.py $(SIM_DIR)/%.py $(OBJ_DIR)/$(TOP)/V$(TOP) $(SIM_OBJ_DIR)/%.bin - $^ +sim/%: $(SIM_DIR)/sim.py $(SIM_DIR)/%.py exe/$(TOP) $(SIM_OBJ_DIR)/%.bin + $< $(SIM_DIR)/$*.py $(OBJ_DIR)/$(TOP)/V$(TOP) $(SIM_OBJ_DIR)/$*.bin $(SIM_OBJ_DIR)/%.bin: $(SIM_OBJ_DIR)/% $(CROSS_OBJCOPY) -O binary --only-section=._img $< $@ @@ -52,7 +52,7 @@ exe: exe/$(TOP) exe/%: $(OBJ_DIR)/%/V%.mk $(MAKE) -C $(OBJ_DIR)/$* -f V$*.mk -.PRECIOUS: $(SIM_OBJ_DIR)/% +.PRECIOUS: $(SIM_OBJ_DIR)/% $(SIM_OBJ_DIR)/%.o $(SIM_OBJ_DIR)/%.bin .SECONDEXPANSION: $(OBJ_DIR)/%.mk: \ diff --git a/tb/sim/fibonacci.c b/tb/sim/fibonacci.c new file mode 100644 index 0000000..f02398a --- /dev/null +++ b/tb/sim/fibonacci.c @@ -0,0 +1,13 @@ +void reset() +{ + int a = 1, b = 1, *p = (int*)0x00010000; + + for(int i = 0; i < 20; ++i) + { + int c = a + b; + + *p++ = a; + a = b; + b = c; + } +} diff --git a/tb/sim/fibonacci.py b/tb/sim/fibonacci.py new file mode 100644 index 0000000..48a17d8 --- /dev/null +++ b/tb/sim/fibonacci.py @@ -0,0 +1,15 @@ +BASE = 0x0001_0000 +COUNT = 20 + +mem_dumps = [range(BASE, BASE + 4 * COUNT)] + +def final(): + words = [] + a, b = 1, 1 + + for _ in range(COUNT): + words.append(a) + c = a + b + a, b = b, c + + assert_mem(BASE, words) |
