22
22
$(SYNTH ) -q -E $@ .d -p " synth_ice40 -top $( * F) " -b json -o $@ -f verilog $< -l log/$(*F ) .synth
23
23
24
24
define run-jsontov =
25
- ( echo '`include "common.vh"'; grep timescale $* .v; \
26
- $(SYNTH ) -q -p "write_verilog -defparam -noattr" -f json $< ) | \
27
- sed 's/endmodule/`DUMP(1)\n\0/g' > $@
25
+ ( grep timescale $* .v; $(SYNTH ) -q -p "write_verilog -defparam -noattr" -f json $< ) > $@
28
26
endef
29
27
30
28
% .synth.v : % .synth.json % .v
@@ -35,28 +33,29 @@ endef
35
33
36
34
# Don't warn about including the timescale from common.vh
37
35
IFLAGS := -g2012 -gspecify -Wall -Wno-timescale
36
+ EXTRA_V := rtl/iverilog_dump.v
38
37
39
38
define run-icarus =
40
- $(ICARUS ) $(IFLAGS ) -I$(<D ) -M$@ .pre -s $(TOP ) -o $@ $< $(EXTRA_V ) && \
39
+ $(ICARUS ) $(IFLAGS ) -I$(<D ) -y $( <D ) - M$@ .pre -DTOP= $( TOP ) - s $(TOP ) -s dump -o $@ $< $(EXTRA_V ) && \
41
40
( echo -n "$@ : " && tr '\n' ' ' ) < $@ .pre > $@ .d; RET=$$? ; rm -f $@ .pre; exit $$RET
42
41
endef
43
42
44
43
% .vvp : TOP = $(*F )
45
- % .vvp : % .v
44
+ % .vvp : % .v rtl/iverilog_dump.v
46
45
$(run-icarus )
47
46
48
47
% .synth.vvp : TOP = $(*F )
49
- % .synth.vvp % .place.vvp : EXTRA_V : = $(shell $(SYNTH ) -config --datdir) /ice40/cells_sim.v
48
+ % .synth.vvp % .place.vvp : EXTRA_V + = $(shell $(SYNTH ) -config --datdir) /ice40/cells_sim.v
50
49
# Don't warn about unused SB_IO ports
51
50
% .synth.vvp : IFLAGS += -Wno-portbind
52
- % .synth.vvp : % .synth.v
51
+ % .synth.vvp : % .synth.v rtl/iverilog_dump.v
53
52
$(run-icarus )
54
53
55
54
% .place.vvp : TOP = top
56
55
# Don't warn about unused SB_IO ports
57
56
% .place.vvp : IFLAGS += -Wno-portbind
58
57
% .place.vvp : IFLAGS += -DTIMING -Ttyp
59
- % .place.vvp : % .place.v
58
+ % .place.vvp : % .place.v rtl/iverilog_dump.v
60
59
$(run-icarus )
61
60
62
61
% .asc % .sdf % .place.json & : % .synth.json | log
@@ -79,13 +78,15 @@ define run-vvp =
79
78
MODULE=tb.$* $(VVP ) $(VVPFLAGS ) $< $(PLUSARGS )
80
79
endef
81
80
81
+ % .fst : PLUSARGS += +levels=0
82
82
% .fst : rtl/% .vvp tb/% .py FORCE
83
83
$(run-vvp )
84
84
85
+ % .synth.fst : PLUSARGS += +levels=1
85
86
% .synth.fst : rtl/% .synth.vvp tb/% .py FORCE
86
87
$(run-vvp )
87
88
88
- % .place.fst : PLUSARGS += +sdf=rtl/$* .sdf
89
+ % .place.fst : PLUSARGS += +levels=1 + sdf=rtl/$* .sdf
89
90
% .place.fst : rtl/% .place.vvp rtl/% .sdf tb/% .py FORCE
90
91
$(run-vvp )
91
92
0 commit comments