yowasp-yosys 0.37.0.0.post648__py3-none-any.whl → 0.38.0.0.post669__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yowasp_yosys/__init__.py CHANGED
@@ -8,7 +8,7 @@ except (ImportError, AttributeError):
8
8
 
9
9
 
10
10
  def run_yosys(argv):
11
- return yowasp_runtime.run_wasm(__package__, "yosys.wasm", resources=["share"],
11
+ return yowasp_runtime.run_wasm(__package__, "yosys.wasm", resources=["share"],
12
12
  argv=["yowasp-yosys", *argv])
13
13
 
14
14
 
@@ -28,10 +28,6 @@ def _run_yosys_smtbmc_argv():
28
28
  def _run_yosys_witness_argv():
29
29
  prefix = importlib_resources.files(__package__)
30
30
  sys.path[0:0] = [str(prefix / "share" / "python3")]
31
- ywio_py = prefix / "ywio.py"
32
- with open(ywio_py) as f:
33
- globals = {}
34
- exec(compile(f.read(), ywio_py, "exec"), globals, globals)
35
31
  witness_py = prefix / "witness.py"
36
32
  with open(witness_py) as f:
37
33
  globals = {"__name__": "__main__"}
@@ -1,13 +1,11 @@
1
1
  ram block $__GOWIN_SP_ {
2
2
  abits 14;
3
3
  widths 1 2 4 9 18 36 per_port;
4
- byte 9;
5
4
  cost 128;
6
5
  init no_undef;
7
6
  port srsw "A" {
8
7
  clock posedge;
9
8
  clken;
10
- wrbe_separate;
11
9
  option "RESET_MODE" "SYNC" {
12
10
  rdsrst zero ungated;
13
11
  }
@@ -30,13 +28,11 @@ ram block $__GOWIN_SP_ {
30
28
  ram block $__GOWIN_DP_ {
31
29
  abits 14;
32
30
  widths 1 2 4 9 18 per_port;
33
- byte 9;
34
31
  cost 128;
35
32
  init no_undef;
36
33
  port srsw "A" "B" {
37
34
  clock posedge;
38
35
  clken;
39
- wrbe_separate;
40
36
  option "RESET_MODE" "SYNC" {
41
37
  rdsrst zero ungated;
42
38
  }
@@ -59,7 +55,6 @@ ram block $__GOWIN_DP_ {
59
55
  ram block $__GOWIN_SDP_ {
60
56
  abits 14;
61
57
  widths 1 2 4 9 18 36 per_port;
62
- byte 9;
63
58
  cost 128;
64
59
  init no_undef;
65
60
  port sr "R" {
@@ -76,6 +71,5 @@ ram block $__GOWIN_SDP_ {
76
71
  port sw "W" {
77
72
  clock posedge;
78
73
  clken;
79
- wrbe_separate;
80
74
  }
81
75
  }
@@ -14,8 +14,7 @@
14
14
  `define x8_width(width) (width / 9 * 8 + width % 9)
15
15
  `define x8_rd_data(data) {1'bx, data[31:24], 1'bx, data[23:16], 1'bx, data[15:8], 1'bx, data[7:0]}
16
16
  `define x8_wr_data(data) {data[34:27], data[25:18], data[16:9], data[7:0]}
17
- `define wre(width, wr_en, wr_be) (width < 18 ? wr_en | wr_be[0] : wr_en)
18
- `define addrbe(width, addr, wr_be) (width < 18 ? addr : {addr[13:4], wr_be})
17
+ `define addrbe_always(width, addr) (width < 18 ? addr : width == 18 ? {addr[13:4], 4'b0011} : {addr[13:5], 5'b01111})
19
18
 
20
19
 
21
20
  `define INIT(func) \
@@ -90,7 +89,6 @@ parameter INIT = 0;
90
89
  parameter OPTION_RESET_MODE = "SYNC";
91
90
 
92
91
  parameter PORT_A_WIDTH = 36;
93
- parameter PORT_A_WR_BE_WIDTH = 4;
94
92
  parameter PORT_A_OPTION_WRITE_MODE = 0;
95
93
 
96
94
  input PORT_A_CLK;
@@ -99,15 +97,13 @@ input PORT_A_WR_EN;
99
97
  input PORT_A_RD_SRST;
100
98
  input PORT_A_RD_ARST;
101
99
  input [13:0] PORT_A_ADDR;
102
- input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE;
103
100
  input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA;
104
101
  output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA;
105
102
 
106
103
  `DEF_FUNCS
107
104
 
108
105
  wire RST = OPTION_RESET_MODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST;
109
- wire WRE = `wre(PORT_A_WIDTH, PORT_A_WR_EN, PORT_A_WR_BE);
110
- wire [13:0] AD = `addrbe(PORT_A_WIDTH, PORT_A_ADDR, PORT_A_WR_BE);
106
+ wire [13:0] AD = `addrbe_always(PORT_A_WIDTH, PORT_A_ADDR);
111
107
 
112
108
  generate
113
109
 
@@ -129,9 +125,9 @@ if (PORT_A_WIDTH < 9) begin
129
125
  .BLKSEL(3'b000),
130
126
  .CLK(PORT_A_CLK),
131
127
  .CE(PORT_A_CLK_EN),
132
- .WRE(WRE),
128
+ .WRE(PORT_A_WR_EN),
133
129
  .RESET(RST),
134
- .OCE(1'b0),
130
+ .OCE(1'b1),
135
131
  .AD(AD),
136
132
  .DI(DI),
137
133
  .DO(DO),
@@ -155,9 +151,9 @@ end else begin
155
151
  .BLKSEL(3'b000),
156
152
  .CLK(PORT_A_CLK),
157
153
  .CE(PORT_A_CLK_EN),
158
- .WRE(WRE),
154
+ .WRE(PORT_A_WR_EN),
159
155
  .RESET(RST),
160
- .OCE(1'b0),
156
+ .OCE(1'b1),
161
157
  .AD(AD),
162
158
  .DI(DI),
163
159
  .DO(DO),
@@ -176,11 +172,9 @@ parameter INIT = 0;
176
172
  parameter OPTION_RESET_MODE = "SYNC";
177
173
 
178
174
  parameter PORT_A_WIDTH = 18;
179
- parameter PORT_A_WR_BE_WIDTH = 2;
180
175
  parameter PORT_A_OPTION_WRITE_MODE = 0;
181
176
 
182
177
  parameter PORT_B_WIDTH = 18;
183
- parameter PORT_B_WR_BE_WIDTH = 2;
184
178
  parameter PORT_B_OPTION_WRITE_MODE = 0;
185
179
 
186
180
  input PORT_A_CLK;
@@ -189,7 +183,6 @@ input PORT_A_WR_EN;
189
183
  input PORT_A_RD_SRST;
190
184
  input PORT_A_RD_ARST;
191
185
  input [13:0] PORT_A_ADDR;
192
- input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE;
193
186
  input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA;
194
187
  output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA;
195
188
 
@@ -199,7 +192,6 @@ input PORT_B_WR_EN;
199
192
  input PORT_B_RD_SRST;
200
193
  input PORT_B_RD_ARST;
201
194
  input [13:0] PORT_B_ADDR;
202
- input [PORT_A_WR_BE_WIDTH-1:0] PORT_B_WR_BE;
203
195
  input [PORT_A_WIDTH-1:0] PORT_B_WR_DATA;
204
196
  output [PORT_A_WIDTH-1:0] PORT_B_RD_DATA;
205
197
 
@@ -207,10 +199,8 @@ output [PORT_A_WIDTH-1:0] PORT_B_RD_DATA;
207
199
 
208
200
  wire RSTA = OPTION_RESET_MODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST;
209
201
  wire RSTB = OPTION_RESET_MODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST;
210
- wire WREA = `wre(PORT_A_WIDTH, PORT_A_WR_EN, PORT_A_WR_BE);
211
- wire WREB = `wre(PORT_B_WIDTH, PORT_B_WR_EN, PORT_B_WR_BE);
212
- wire [13:0] ADA = `addrbe(PORT_A_WIDTH, PORT_A_ADDR, PORT_A_WR_BE);
213
- wire [13:0] ADB = `addrbe(PORT_B_WIDTH, PORT_B_ADDR, PORT_B_WR_BE);
202
+ wire [13:0] ADA = `addrbe_always(PORT_A_WIDTH, PORT_A_ADDR);
203
+ wire [13:0] ADB = `addrbe_always(PORT_B_WIDTH, PORT_B_ADDR);
214
204
 
215
205
  generate
216
206
 
@@ -224,7 +214,7 @@ if (PORT_A_WIDTH < 9 || PORT_B_WIDTH < 9) begin
224
214
  assign PORT_A_RD_DATA = `x8_rd_data(DOA);
225
215
  assign PORT_B_RD_DATA = `x8_rd_data(DOB);
226
216
 
227
- DP #(
217
+ DPB #(
228
218
  `INIT(init_slice_x8)
229
219
  .READ_MODE0(1'b0),
230
220
  .READ_MODE1(1'b0),
@@ -232,25 +222,27 @@ if (PORT_A_WIDTH < 9 || PORT_B_WIDTH < 9) begin
232
222
  .WRITE_MODE1(PORT_B_OPTION_WRITE_MODE),
233
223
  .BIT_WIDTH_0(`x8_width(PORT_A_WIDTH)),
234
224
  .BIT_WIDTH_1(`x8_width(PORT_B_WIDTH)),
235
- .BLK_SEL(3'b000),
225
+ .BLK_SEL_0(3'b000),
226
+ .BLK_SEL_1(3'b000),
236
227
  .RESET_MODE(OPTION_RESET_MODE),
237
228
  ) _TECHMAP_REPLACE_ (
238
- .BLKSEL(3'b000),
229
+ .BLKSELA(3'b000),
230
+ .BLKSELB(3'b000),
239
231
 
240
232
  .CLKA(PORT_A_CLK),
241
233
  .CEA(PORT_A_CLK_EN),
242
- .WREA(WREA),
234
+ .WREA(PORT_A_WR_EN),
243
235
  .RESETA(RSTA),
244
- .OCEA(1'b0),
236
+ .OCEA(1'b1),
245
237
  .ADA(ADA),
246
238
  .DIA(DIA),
247
239
  .DOA(DOA),
248
240
 
249
241
  .CLKB(PORT_B_CLK),
250
242
  .CEB(PORT_B_CLK_EN),
251
- .WREB(WREB),
243
+ .WREB(PORT_B_WR_EN),
252
244
  .RESETB(RSTB),
253
- .OCEB(1'b0),
245
+ .OCEB(1'b1),
254
246
  .ADB(ADB),
255
247
  .DIB(DIB),
256
248
  .DOB(DOB),
@@ -266,7 +258,7 @@ end else begin
266
258
  assign PORT_A_RD_DATA = DOA;
267
259
  assign PORT_B_RD_DATA = DOB;
268
260
 
269
- DPX9 #(
261
+ DPX9B #(
270
262
  `INIT(init_slice_x9)
271
263
  .READ_MODE0(1'b0),
272
264
  .READ_MODE1(1'b0),
@@ -274,25 +266,27 @@ end else begin
274
266
  .WRITE_MODE1(PORT_B_OPTION_WRITE_MODE),
275
267
  .BIT_WIDTH_0(PORT_A_WIDTH),
276
268
  .BIT_WIDTH_1(PORT_B_WIDTH),
277
- .BLK_SEL(3'b000),
269
+ .BLK_SEL_0(3'b000),
270
+ .BLK_SEL_1(3'b000),
278
271
  .RESET_MODE(OPTION_RESET_MODE),
279
272
  ) _TECHMAP_REPLACE_ (
280
- .BLKSEL(3'b000),
273
+ .BLKSELA(3'b000),
274
+ .BLKSELB(3'b000),
281
275
 
282
276
  .CLKA(PORT_A_CLK),
283
277
  .CEA(PORT_A_CLK_EN),
284
- .WREA(WREA),
278
+ .WREA(PORT_A_WR_EN),
285
279
  .RESETA(RSTA),
286
- .OCEA(1'b0),
280
+ .OCEA(1'b1),
287
281
  .ADA(ADA),
288
282
  .DIA(DIA),
289
283
  .DOA(DOA),
290
284
 
291
285
  .CLKB(PORT_B_CLK),
292
286
  .CEB(PORT_B_CLK_EN),
293
- .WREB(WREB),
287
+ .WREB(PORT_B_WR_EN),
294
288
  .RESETB(RSTB),
295
- .OCEB(1'b0),
289
+ .OCEB(1'b1),
296
290
  .ADB(ADB),
297
291
  .DIB(DIB),
298
292
  .DOB(DOB),
@@ -311,9 +305,7 @@ parameter INIT = 0;
311
305
  parameter OPTION_RESET_MODE = "SYNC";
312
306
 
313
307
  parameter PORT_R_WIDTH = 18;
314
-
315
308
  parameter PORT_W_WIDTH = 18;
316
- parameter PORT_W_WR_BE_WIDTH = 2;
317
309
 
318
310
  input PORT_R_CLK;
319
311
  input PORT_R_CLK_EN;
@@ -326,14 +318,13 @@ input PORT_W_CLK;
326
318
  input PORT_W_CLK_EN;
327
319
  input PORT_W_WR_EN;
328
320
  input [13:0] PORT_W_ADDR;
329
- input [PORT_W_WR_BE_WIDTH-1:0] PORT_W_WR_BE;
330
321
  input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA;
331
322
 
332
323
  `DEF_FUNCS
333
324
 
334
325
  wire RST = OPTION_RESET_MODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST;
335
- wire WRE = `wre(PORT_W_WIDTH, PORT_W_WR_EN, PORT_W_WR_BE);
336
- wire [13:0] ADW = `addrbe(PORT_W_WIDTH, PORT_W_ADDR, PORT_W_WR_BE);
326
+ wire [13:0] ADW = `addrbe_always(PORT_W_WIDTH, PORT_W_ADDR);
327
+ wire WRE = PORT_W_CLK_EN & PORT_W_WR_EN;
337
328
 
338
329
  generate
339
330
 
@@ -344,28 +335,28 @@ if (PORT_W_WIDTH < 9 || PORT_R_WIDTH < 9) begin
344
335
 
345
336
  assign PORT_R_RD_DATA = `x8_rd_data(DO);
346
337
 
347
- SDP #(
338
+ SDPB #(
348
339
  `INIT(init_slice_x8)
349
340
  .READ_MODE(1'b0),
350
341
  .BIT_WIDTH_0(`x8_width(PORT_W_WIDTH)),
351
342
  .BIT_WIDTH_1(`x8_width(PORT_R_WIDTH)),
352
- .BLK_SEL(3'b000),
343
+ .BLK_SEL_0(3'b000),
344
+ .BLK_SEL_1(3'b000),
353
345
  .RESET_MODE(OPTION_RESET_MODE),
354
346
  ) _TECHMAP_REPLACE_ (
355
- .BLKSEL(3'b000),
347
+ .BLKSELA(3'b000),
348
+ .BLKSELB(3'b000),
356
349
 
357
350
  .CLKA(PORT_W_CLK),
358
- .CEA(PORT_W_CLK_EN),
359
- .WREA(WRE),
351
+ .CEA(WRE),
360
352
  .RESETA(1'b0),
361
353
  .ADA(ADW),
362
354
  .DI(DI),
363
355
 
364
356
  .CLKB(PORT_R_CLK),
365
357
  .CEB(PORT_R_CLK_EN),
366
- .WREB(1'b0),
367
358
  .RESETB(RST),
368
- .OCE(1'b0),
359
+ .OCE(1'b1),
369
360
  .ADB(PORT_R_ADDR),
370
361
  .DO(DO),
371
362
  );
@@ -377,28 +368,28 @@ end else begin
377
368
 
378
369
  assign PORT_R_RD_DATA = DO;
379
370
 
380
- SDPX9 #(
371
+ SDPX9B #(
381
372
  `INIT(init_slice_x9)
382
373
  .READ_MODE(1'b0),
383
374
  .BIT_WIDTH_0(PORT_W_WIDTH),
384
375
  .BIT_WIDTH_1(PORT_R_WIDTH),
385
- .BLK_SEL(3'b000),
376
+ .BLK_SEL_0(3'b000),
377
+ .BLK_SEL_1(3'b000),
386
378
  .RESET_MODE(OPTION_RESET_MODE),
387
379
  ) _TECHMAP_REPLACE_ (
388
- .BLKSEL(3'b000),
380
+ .BLKSELA(3'b000),
381
+ .BLKSELB(3'b000),
389
382
 
390
383
  .CLKA(PORT_W_CLK),
391
- .CEA(PORT_W_CLK_EN),
392
- .WREA(WRE),
384
+ .CEA(WRE),
393
385
  .RESETA(1'b0),
394
386
  .ADA(ADW),
395
387
  .DI(DI),
396
388
 
397
389
  .CLKB(PORT_R_CLK),
398
390
  .CEB(PORT_R_CLK_EN),
399
- .WREB(1'b0),
400
391
  .RESETB(RST),
401
- .OCE(1'b0),
392
+ .OCE(1'b1),
402
393
  .ADB(PORT_R_ADDR),
403
394
  .DO(DO),
404
395
  );