Skip to content

Commit 43eda33

Browse files
committed
Merge branch 'develop'
2 parents e61f28e + 69c8080 commit 43eda33

File tree

474 files changed

+54021
-30862
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

474 files changed

+54021
-30862
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ sudo: false
44

55
python:
66
- 3.7
7+
- 3.8
8+
- 3.9
79

810
addons:
911
apt:

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ Installation
8181
Requirements
8282
--------------------
8383

84-
- Python3: 3.6 or later
84+
- Python3: 3.7 or later
8585
- Icarus Verilog: 10.1 or later
8686

8787
```
8888
sudo apt install iverilog
8989
```
9090

9191
- Jinja2: 2.10 or later
92-
- Pyverilog: 1.2.1 or later
92+
- Pyverilog: 1.3.0 or later
9393
- NumPy: 1.17 or later
9494

9595
```

examples/fifo_rtl/fifo_rtl.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def mkMain(n=128, datawidth=32, numports=2):
3434

3535
fsm.goto_next()
3636

37-
step = 127
37+
step = n - 2
3838

3939
ack, ready = myfifo.enq_rtl(count, cond=fsm)
4040

@@ -55,7 +55,7 @@ def mkMain(n=128, datawidth=32, numports=2):
5555

5656
fsm.goto_next()
5757

58-
data, valid = myfifo.deq_rtl(cond=fsm)
58+
data, valid, ready = myfifo.deq_rtl(cond=fsm)
5959

6060
fsm.If(valid)(
6161
sum(sum + data),
@@ -70,6 +70,12 @@ def mkMain(n=128, datawidth=32, numports=2):
7070

7171
fsm.If(count == step).goto_next()
7272

73+
fsm(
74+
Systask('display', "expected_sum=%d", (step - 1) * step // 2)
75+
)
76+
77+
fsm.goto_next()
78+
7379
fsm.make_always()
7480

7581
return m

examples/fifo_rtl/test_fifo_rtl.py

Lines changed: 28 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@
5252
input RST
5353
);
5454
55-
reg myfifo_enq;
56-
reg [32-1:0] myfifo_wdata;
55+
wire myfifo_enq;
56+
wire [32-1:0] myfifo_wdata;
5757
wire myfifo_full;
5858
wire myfifo_almost_full;
59-
reg myfifo_deq;
59+
wire myfifo_deq;
6060
wire [32-1:0] myfifo_rdata;
6161
wire myfifo_empty;
6262
wire myfifo_almost_empty;
@@ -81,18 +81,24 @@
8181
reg [32-1:0] sum;
8282
reg [32-1:0] fsm;
8383
localparam fsm_init = 0;
84-
reg _myfifo_cond_0_1;
85-
reg _tmp_0;
86-
reg _myfifo_cond_1_1;
87-
reg _myfifo_cond_2_1;
88-
reg _myfifo_cond_3_1;
89-
reg _myfifo_cond_3_2;
84+
assign myfifo_wdata = (fsm == 1)? count : 'hx;
85+
assign myfifo_enq = (fsm == 1)? (fsm == 1) && !myfifo_almost_full : 0;
86+
localparam _tmp_0 = 1;
87+
wire [_tmp_0-1:0] _tmp_1;
88+
assign _tmp_1 = !myfifo_almost_full;
89+
reg [_tmp_0-1:0] __tmp_1_1;
90+
assign myfifo_deq = ((fsm == 3) && !myfifo_empty)? 1 : 0;
91+
localparam _tmp_2 = 1;
92+
wire [_tmp_2-1:0] _tmp_3;
93+
assign _tmp_3 = (fsm == 3) && !myfifo_empty;
94+
reg [_tmp_2-1:0] __tmp_3_1;
9095
reg [32-1:0] _d1_fsm;
9196
reg _fsm_cond_3_0_1;
9297
localparam fsm_1 = 1;
9398
localparam fsm_2 = 2;
9499
localparam fsm_3 = 3;
95100
localparam fsm_4 = 4;
101+
localparam fsm_5 = 5;
96102
97103
always @(posedge CLK) begin
98104
if(RST) begin
@@ -119,10 +125,10 @@
119125
if(!myfifo_almost_full) begin
120126
count <= count + 1;
121127
end
122-
if(!myfifo_full && myfifo_enq) begin
128+
if(__tmp_1_1) begin
123129
$display("count=%d space=%d has_space=%d", count_myfifo, (127 - count_myfifo), (count_myfifo + 1 < 127));
124130
end
125-
if(!myfifo_almost_full && (count == 126)) begin
131+
if(!myfifo_almost_full && (count == 125)) begin
126132
fsm <= fsm_2;
127133
end
128134
end
@@ -131,16 +137,20 @@
131137
fsm <= fsm_3;
132138
end
133139
fsm_3: begin
134-
if(_tmp_0) begin
140+
if(__tmp_3_1) begin
135141
sum <= sum + myfifo_rdata;
136142
count <= count + 1;
137143
$write("count=%d space=%d has_space=%d ", count_myfifo, (127 - count_myfifo), (count_myfifo + 1 < 127));
138144
end
139-
_fsm_cond_3_0_1 <= _tmp_0;
140-
if(count == 127) begin
145+
_fsm_cond_3_0_1 <= __tmp_3_1;
146+
if(count == 126) begin
141147
fsm <= fsm_4;
142148
end
143149
end
150+
fsm_4: begin
151+
$display("expected_sum=%d", 7875);
152+
fsm <= fsm_5;
153+
end
144154
endcase
145155
end
146156
end
@@ -149,49 +159,18 @@
149159
always @(posedge CLK) begin
150160
if(RST) begin
151161
count_myfifo <= 0;
152-
myfifo_wdata <= 0;
153-
myfifo_enq <= 0;
154-
_myfifo_cond_0_1 <= 0;
155-
myfifo_deq <= 0;
156-
_myfifo_cond_1_1 <= 0;
157-
_tmp_0 <= 0;
158-
_myfifo_cond_2_1 <= 0;
159-
_myfifo_cond_3_1 <= 0;
160-
_myfifo_cond_3_2 <= 0;
162+
__tmp_1_1 <= 0;
163+
__tmp_3_1 <= 0;
161164
end else begin
162-
if(_myfifo_cond_3_2) begin
163-
_tmp_0 <= 0;
164-
end
165-
if(_myfifo_cond_0_1) begin
166-
myfifo_enq <= 0;
167-
end
168-
if(_myfifo_cond_1_1) begin
169-
_tmp_0 <= !myfifo_empty && myfifo_deq;
170-
end
171-
if(_myfifo_cond_2_1) begin
172-
myfifo_deq <= 0;
173-
end
174-
_myfifo_cond_3_2 <= _myfifo_cond_3_1;
175165
if(myfifo_enq && !myfifo_full && (myfifo_deq && !myfifo_empty)) begin
176166
count_myfifo <= count_myfifo;
177167
end else if(myfifo_enq && !myfifo_full) begin
178168
count_myfifo <= count_myfifo + 1;
179169
end else if(myfifo_deq && !myfifo_empty) begin
180170
count_myfifo <= count_myfifo - 1;
181171
end
182-
if((fsm == 1) && !myfifo_full) begin
183-
myfifo_wdata <= count;
184-
end
185-
if((fsm == 1) && !myfifo_full) begin
186-
myfifo_enq <= 1;
187-
end
188-
_myfifo_cond_0_1 <= 1;
189-
if(fsm == 3) begin
190-
myfifo_deq <= 1;
191-
end
192-
_myfifo_cond_1_1 <= fsm == 3;
193-
_myfifo_cond_2_1 <= 1;
194-
_myfifo_cond_3_1 <= 1;
172+
__tmp_1_1 <= _tmp_1;
173+
__tmp_3_1 <= _tmp_3;
195174
end
196175
end
197176

examples/ram_rtl/ram_rtl.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ def mkMain(n=128, datawidth=32, numports=2):
8181
Systask('display', "sum=%d", sum)
8282
)
8383

84+
fsm.goto_next()
85+
86+
fsm(
87+
Systask('display', "expected_sum=%d", (step - 1) * step // 2)
88+
)
89+
90+
fsm.goto_next()
91+
8492
fsm.make_always()
8593

8694
return m

examples/ram_rtl/test_ram_rtl.py

Lines changed: 40 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,11 @@
5252
input RST
5353
);
5454
55-
reg [14-1:0] myram_0_addr;
55+
wire [14-1:0] myram_0_addr;
5656
wire [32-1:0] myram_0_rdata;
57-
reg [32-1:0] myram_0_wdata;
58-
reg myram_0_wenable;
57+
wire [32-1:0] myram_0_wdata;
58+
wire myram_0_wenable;
59+
wire myram_0_enable;
5960
6061
myram
6162
inst_myram
@@ -64,25 +65,33 @@
6465
.myram_0_addr(myram_0_addr),
6566
.myram_0_rdata(myram_0_rdata),
6667
.myram_0_wdata(myram_0_wdata),
67-
.myram_0_wenable(myram_0_wenable)
68+
.myram_0_wenable(myram_0_wenable),
69+
.myram_0_enable(myram_0_enable)
6870
);
6971
7072
reg [32-1:0] count;
7173
reg [32-1:0] sum;
7274
reg [32-1:0] addr;
7375
reg [32-1:0] fsm;
7476
localparam fsm_init = 0;
75-
reg _myram_cond_0_1;
76-
reg _tmp_0;
77-
reg _myram_cond_1_1;
78-
reg _myram_cond_2_1;
79-
reg _myram_cond_2_2;
77+
assign myram_0_wdata = (fsm == 1)? count : 'hx;
78+
assign myram_0_wenable = (fsm == 1)? 1'd1 : 0;
79+
assign myram_0_addr = (fsm == 2)? addr :
80+
(fsm == 1)? addr : 'hx;
81+
assign myram_0_enable = (fsm == 2)? 1'd1 :
82+
(fsm == 1)? 1'd1 : 0;
83+
localparam _tmp_0 = 1;
84+
wire [_tmp_0-1:0] _tmp_1;
85+
assign _tmp_1 = fsm == 2;
86+
reg [_tmp_0-1:0] __tmp_1_1;
8087
reg [32-1:0] _d1_fsm;
8188
reg _fsm_cond_2_0_1;
8289
reg _fsm_cond_3_1_1;
8390
localparam fsm_1 = 1;
8491
localparam fsm_2 = 2;
8592
localparam fsm_3 = 3;
93+
localparam fsm_4 = 4;
94+
localparam fsm_5 = 5;
8695
8796
always @(posedge CLK) begin
8897
if(RST) begin
@@ -128,10 +137,10 @@
128137
fsm_2: begin
129138
addr <= addr + 1;
130139
count <= count + 1;
131-
if(_tmp_0) begin
140+
if(__tmp_1_1) begin
132141
sum <= sum + myram_0_rdata;
133142
end
134-
_fsm_cond_2_0_1 <= _tmp_0;
143+
_fsm_cond_2_0_1 <= __tmp_1_1;
135144
if(count == 15) begin
136145
addr <= 0;
137146
count <= 0;
@@ -141,10 +150,15 @@
141150
end
142151
end
143152
fsm_3: begin
144-
if(_tmp_0) begin
153+
if(__tmp_1_1) begin
145154
sum <= sum + myram_0_rdata;
146155
end
147-
_fsm_cond_3_1_1 <= _tmp_0;
156+
_fsm_cond_3_1_1 <= __tmp_1_1;
157+
fsm <= fsm_4;
158+
end
159+
fsm_4: begin
160+
$display("expected_sum=%d", 120);
161+
fsm <= fsm_5;
148162
end
149163
endcase
150164
end
@@ -153,36 +167,9 @@
153167
154168
always @(posedge CLK) begin
155169
if(RST) begin
156-
myram_0_addr <= 0;
157-
myram_0_wdata <= 0;
158-
myram_0_wenable <= 0;
159-
_myram_cond_0_1 <= 0;
160-
_myram_cond_1_1 <= 0;
161-
_tmp_0 <= 0;
162-
_myram_cond_2_1 <= 0;
163-
_myram_cond_2_2 <= 0;
170+
__tmp_1_1 <= 0;
164171
end else begin
165-
if(_myram_cond_2_2) begin
166-
_tmp_0 <= 0;
167-
end
168-
if(_myram_cond_0_1) begin
169-
myram_0_wenable <= 0;
170-
end
171-
if(_myram_cond_1_1) begin
172-
_tmp_0 <= 1;
173-
end
174-
_myram_cond_2_2 <= _myram_cond_2_1;
175-
if(fsm == 1) begin
176-
myram_0_addr <= addr;
177-
myram_0_wdata <= count;
178-
myram_0_wenable <= 1;
179-
end
180-
_myram_cond_0_1 <= fsm == 1;
181-
if(fsm == 2) begin
182-
myram_0_addr <= addr;
183-
end
184-
_myram_cond_1_1 <= fsm == 2;
185-
_myram_cond_2_1 <= fsm == 2;
172+
__tmp_1_1 <= _tmp_1;
186173
end
187174
end
188175
@@ -197,20 +184,25 @@
197184
input [14-1:0] myram_0_addr,
198185
output [32-1:0] myram_0_rdata,
199186
input [32-1:0] myram_0_wdata,
200-
input myram_0_wenable
187+
input myram_0_wenable,
188+
input myram_0_enable
201189
);
202190
203-
reg [14-1:0] myram_0_daddr;
191+
reg [32-1:0] myram_0_rdata_out;
192+
assign myram_0_rdata = myram_0_rdata_out;
204193
reg [32-1:0] mem [0:16384-1];
205194
206195
always @(posedge CLK) begin
207-
if(myram_0_wenable) begin
208-
mem[myram_0_addr] <= myram_0_wdata;
196+
if(myram_0_enable) begin
197+
if(myram_0_wenable) begin
198+
mem[myram_0_addr] <= myram_0_wdata;
199+
myram_0_rdata_out <= myram_0_wdata;
200+
end else begin
201+
myram_0_rdata_out <= mem[myram_0_addr];
202+
end
209203
end
210-
myram_0_daddr <= myram_0_addr;
211204
end
212205
213-
assign myram_0_rdata = mem[myram_0_daddr];
214206
215207
endmodule
216208
"""

0 commit comments

Comments
 (0)