@@ -36,6 +36,10 @@ module SimpleWriteOnExec(
36
36
logic [7 : 0 ] edges [10 : 0 ];
37
37
logic [5 : 0 ] stack [5 : 0 ];
38
38
39
+ logic [5 : 0 ] next_cgra [15 : 0 ];
40
+ logic [7 : 0 ] next_edges [10 : 0 ];
41
+ logic [5 : 0 ] next_stack [5 : 0 ];
42
+
39
43
// Internals
40
44
logic [7 : 0 ] current, next_current;
41
45
logic [3 : 0 ] state, next_state;
@@ -58,11 +62,14 @@ module SimpleWriteOnExec(
58
62
index_input <= next_index_input;
59
63
index_stack <= next_index_stack;
60
64
current <= next_current;
65
+ cgra <= next_cgra;
66
+ edges <= next_edges;
67
+ stack <= stack;
61
68
end
62
69
63
70
end
64
71
65
- always_comb begin
72
+ always @ ( * ) begin
66
73
67
74
case (state)
68
75
@@ -75,7 +82,7 @@ module SimpleWriteOnExec(
75
82
76
83
state_nextedge:
77
84
begin
78
- if (cgra [index_input]== 0 )
85
+ if (next_cgra [index_input]== 0 )
79
86
begin
80
87
next_state <= state_end;
81
88
end
@@ -107,7 +114,7 @@ module SimpleWriteOnExec(
107
114
108
115
state_xdec_test:
109
116
begin
110
- if (cgra [current[7 : 4 ]][right] || (cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
117
+ if (next_cgra [current[7 : 4 ]][right] || (next_cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
111
118
begin
112
119
next_state <= state_y_test;
113
120
end
@@ -119,10 +126,10 @@ module SimpleWriteOnExec(
119
126
120
127
state_xdec_set:
121
128
begin
122
- cgra [current[7 : 4 ]][right] <= 1 ;
129
+ next_cgra [current[7 : 4 ]][right] <= 1 ;
123
130
124
131
if (! fe) begin
125
- cgra [current[7 : 4 ]][5 : 4 ]++ ;
132
+ next_cgra [current[7 : 4 ]][5 : 4 ]++ ;
126
133
end
127
134
128
135
next_current[7 : 4 ] <= current[7 : 4 ] + 1 ;
@@ -138,7 +145,7 @@ module SimpleWriteOnExec(
138
145
139
146
state_xinc_test:
140
147
begin
141
- if (cgra [current[7 : 4 ]][left] || (cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
148
+ if (next_cgra [current[7 : 4 ]][left] || (next_cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
142
149
begin
143
150
next_state <= state_y_test;
144
151
end
@@ -150,10 +157,10 @@ module SimpleWriteOnExec(
150
157
151
158
state_xinc_set:
152
159
begin
153
- cgra [current[7 : 4 ]][left] <= 1 ;
160
+ next_cgra [current[7 : 4 ]][left] <= 1 ;
154
161
155
162
if (! fe) begin
156
- cgra [current[7 : 4 ]][5 : 4 ]++ ;
163
+ next_cgra [current[7 : 4 ]][5 : 4 ]++ ;
157
164
end
158
165
159
166
next_current[7 : 4 ] <= current[7 : 4 ] - 1 ;
@@ -185,7 +192,7 @@ module SimpleWriteOnExec(
185
192
186
193
state_ydec_test:
187
194
begin
188
- if (cgra [current[7 : 4 ]][bot] || (cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
195
+ if (next_cgra [current[7 : 4 ]][bot] || (next_cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
189
196
begin
190
197
next_state <= state_xy_test;
191
198
end
@@ -197,10 +204,10 @@ module SimpleWriteOnExec(
197
204
198
205
state_ydec_set:
199
206
begin
200
- cgra [current[7 : 4 ]][bot] <= 1 ;
207
+ next_cgra [current[7 : 4 ]][bot] <= 1 ;
201
208
202
209
if (! fe) begin
203
- cgra [current[7 : 4 ]][5 : 4 ]++ ;
210
+ next_cgra [current[7 : 4 ]][5 : 4 ]++ ;
204
211
end
205
212
206
213
next_current[7 : 4 ] <= current[7 : 4 ] + gridline_size;
@@ -216,7 +223,7 @@ module SimpleWriteOnExec(
216
223
217
224
state_yinc_test:
218
225
begin
219
- if (cgra [current[7 : 4 ]][bot] || (cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
226
+ if (next_cgra [current[7 : 4 ]][bot] || (next_cgra [current[7 : 4 ]][5 : 4 ] == max_bypass && ! fe))
220
227
begin
221
228
next_state <= state_xy_test;
222
229
end
@@ -228,18 +235,18 @@ module SimpleWriteOnExec(
228
235
229
236
state_yinc_set:
230
237
begin
231
- cgra [current[7 : 4 ]][bot] <= 1 ;
238
+ next_cgra [current[7 : 4 ]][bot] <= 1 ;
232
239
233
240
if (! fe) begin
234
- cgra [current[7 : 4 ]][5 : 4 ]++ ;
241
+ next_cgra [current[7 : 4 ]][5 : 4 ]++ ;
235
242
end
236
243
237
244
next_current[7 : 4 ] <= current[7 : 4 ] - gridline_size;
238
245
next_modified <= 1 ;
239
246
next_fe <= 0 ;
240
247
241
248
stack[index_stack][1 : 0 ] <= bot;
242
- stack[index_stack][7 : 2 ] <= current[7 : 4 ];
249
+ stack[index_stack][5 : 0 ] <= current[7 : 4 ];
243
250
next_index_stack <= index_stack + 1 ;
244
251
245
252
next_state = state_xy_test;
@@ -271,7 +278,7 @@ module SimpleWriteOnExec(
271
278
272
279
state_blacklist:
273
280
begin
274
- cgra [stack[index_stack][5 : 2 ]][stack[index_stack][1 : 0 ]] <= 0 ;
281
+ next_cgra [stack[index_stack][5 : 2 ]][stack[index_stack][1 : 0 ]] <= 0 ;
275
282
276
283
if (index_stack == 0 )
277
284
begin
@@ -280,7 +287,7 @@ module SimpleWriteOnExec(
280
287
else
281
288
begin
282
289
next_index_stack <= index_stack - 1 ;
283
- cgra [stack[index_stack][5 : 2 ]][5 : 4 ]-- ;
290
+ next_cgra [stack[index_stack][5 : 2 ]][5 : 4 ]-- ;
284
291
next_state <= state_blacklist;
285
292
end
286
293
end
0 commit comments