yowasp-yosys 0.41.0.0.post722__py3-none-any.whl → 0.43.0.0.post751__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/sby.py +4 -1
- yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi.cc +1 -1
- yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h +1 -1
- yowasp_yosys/share/include/frontends/ast/ast.h +1 -6
- yowasp_yosys/share/include/kernel/yosys_common.h +1 -5
- yowasp_yosys/share/intel_alm/common/alm_sim.v +1 -413
- yowasp_yosys/share/intel_alm/common/dff_sim.v +0 -32
- yowasp_yosys/share/intel_alm/common/mem_sim.v +5 -51
- yowasp_yosys/share/python3/sby_cmdline.py +3 -1
- yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v +1 -1
- yowasp_yosys/smtbmc.py +5 -0
- yowasp_yosys/yosys.wasm +0 -0
- {yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/METADATA +1 -1
- {yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/RECORD +17 -20
- yowasp_yosys/share/intel_alm/common/bram_m20k.txt +0 -33
- yowasp_yosys/share/intel_alm/common/bram_m20k_map.v +0 -31
- yowasp_yosys/share/intel_alm/common/quartus_rename.v +0 -311
- {yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/WHEEL +0 -0
- {yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/entry_points.txt +0 -0
- {yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/top_level.txt +0 -0
yowasp_yosys/sby.py
CHANGED
|
@@ -25,9 +25,12 @@ from sby_jobserver import SbyJobClient, process_jobserver_environment
|
|
|
25
25
|
from sby_status import SbyStatusDb
|
|
26
26
|
import time, platform, click
|
|
27
27
|
|
|
28
|
+
release_version = 'unknown SBY version'
|
|
29
|
+
##yosys-release-version##
|
|
30
|
+
|
|
28
31
|
process_jobserver_environment() # needs to be called early
|
|
29
32
|
|
|
30
|
-
parser = parser_func()
|
|
33
|
+
parser = parser_func(release_version)
|
|
31
34
|
|
|
32
35
|
args = parser.parse_args()
|
|
33
36
|
|
|
@@ -47,7 +47,7 @@ cxxrtl_handle cxxrtl_create_at(cxxrtl_toplevel design, const char *top_path_) {
|
|
|
47
47
|
|
|
48
48
|
cxxrtl_handle handle = new _cxxrtl_handle;
|
|
49
49
|
handle->module = std::move(design->module);
|
|
50
|
-
handle->module->debug_info(handle->objects, top_path);
|
|
50
|
+
handle->module->debug_info(&handle->objects, nullptr, top_path);
|
|
51
51
|
delete design;
|
|
52
52
|
return handle;
|
|
53
53
|
}
|
|
@@ -1582,7 +1582,7 @@ struct module {
|
|
|
1582
1582
|
|
|
1583
1583
|
// Compatibility method.
|
|
1584
1584
|
#if __has_attribute(deprecated)
|
|
1585
|
-
__attribute__((deprecated("Use `debug_info(
|
|
1585
|
+
__attribute__((deprecated("Use `debug_info(&items, /*scopes=*/nullptr, path);` instead.")))
|
|
1586
1586
|
#endif
|
|
1587
1587
|
void debug_info(debug_items &items, std::string path) {
|
|
1588
1588
|
debug_info(&items, /*scopes=*/nullptr, path);
|
|
@@ -17,12 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* ---
|
|
19
19
|
*
|
|
20
|
-
* This is the
|
|
21
|
-
*
|
|
22
|
-
* The AST frontend library is not a frontend on it's own but provides a
|
|
23
|
-
* generic abstract syntax tree (AST) abstraction for HDL code and can be
|
|
24
|
-
* used by HDL frontends. See "ast.h" for an overview of the API and the
|
|
25
|
-
* Verilog frontend for an usage example.
|
|
20
|
+
* This is support code for the Verilog frontend at frontends/verilog
|
|
26
21
|
*
|
|
27
22
|
*/
|
|
28
23
|
|
|
@@ -142,12 +142,8 @@ extern Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *p
|
|
|
142
142
|
|
|
143
143
|
#if __cplusplus >= 201703L
|
|
144
144
|
# define YS_FALLTHROUGH [[fallthrough]];
|
|
145
|
-
#elif defined(__clang__)
|
|
146
|
-
# define YS_FALLTHROUGH [[clang::fallthrough]];
|
|
147
|
-
#elif defined(__GNUC__)
|
|
148
|
-
# define YS_FALLTHROUGH [[gnu::fallthrough]];
|
|
149
145
|
#else
|
|
150
|
-
#
|
|
146
|
+
# error "C++17 or later compatible compiler is required"
|
|
151
147
|
#endif
|
|
152
148
|
|
|
153
149
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// The core logic primitive of the Cyclone V
|
|
1
|
+
// The core logic primitive of the Cyclone V is the Adaptive Logic Module
|
|
2
2
|
// (ALM). Each ALM is made up of an 8-input, 2-output look-up table, covered
|
|
3
3
|
// in this file, connected to combinational outputs, a carry chain, and four
|
|
4
4
|
// D flip-flops (which are covered as MISTRAL_FF in dff_sim.v).
|
|
@@ -77,14 +77,6 @@
|
|
|
77
77
|
// SUMOUT 368 1342 1323 887 927 - 785 -
|
|
78
78
|
// CARRYOUT 71 1082 1062 866 813 - 1198 -
|
|
79
79
|
|
|
80
|
-
// Arria V LUT output timings (picoseconds):
|
|
81
|
-
//
|
|
82
|
-
// CARRY A B C D E F G
|
|
83
|
-
// COMBOUT - 387 375 316 317 - 76 319 (LUT6)
|
|
84
|
-
// COMBOUT - 387 375 316 317 218 76 319 (LUT7)
|
|
85
|
-
// SUMOUT 249 744 732 562 576 - 511 -
|
|
86
|
-
// CARRYOUT 19 629 623 530 514 - 696 -
|
|
87
|
-
|
|
88
80
|
(* abc9_lut=2, lib_whitebox *)
|
|
89
81
|
module MISTRAL_ALUT6(input A, B, C, D, E, F, output Q);
|
|
90
82
|
|
|
@@ -100,26 +92,6 @@ specify
|
|
|
100
92
|
(F => Q) = 97;
|
|
101
93
|
endspecify
|
|
102
94
|
`endif
|
|
103
|
-
`ifdef arriav
|
|
104
|
-
specify
|
|
105
|
-
(A => Q) = 387;
|
|
106
|
-
(B => Q) = 375;
|
|
107
|
-
(C => Q) = 316;
|
|
108
|
-
(D => Q) = 317;
|
|
109
|
-
(E => Q) = 319;
|
|
110
|
-
(F => Q) = 76;
|
|
111
|
-
endspecify
|
|
112
|
-
`endif
|
|
113
|
-
`ifdef cyclone10gx
|
|
114
|
-
specify
|
|
115
|
-
(A => Q) = 275;
|
|
116
|
-
(B => Q) = 272;
|
|
117
|
-
(C => Q) = 175;
|
|
118
|
-
(D => Q) = 165;
|
|
119
|
-
(E => Q) = 162;
|
|
120
|
-
(F => Q) = 53;
|
|
121
|
-
endspecify
|
|
122
|
-
`endif
|
|
123
95
|
|
|
124
96
|
assign Q = LUT >> {F, E, D, C, B, A};
|
|
125
97
|
|
|
@@ -140,24 +112,6 @@ specify
|
|
|
140
112
|
(E => Q) = 97;
|
|
141
113
|
endspecify
|
|
142
114
|
`endif
|
|
143
|
-
`ifdef arriav
|
|
144
|
-
specify
|
|
145
|
-
(A => Q) = 375;
|
|
146
|
-
(B => Q) = 316;
|
|
147
|
-
(C => Q) = 317;
|
|
148
|
-
(D => Q) = 319;
|
|
149
|
-
(E => Q) = 76;
|
|
150
|
-
endspecify
|
|
151
|
-
`endif
|
|
152
|
-
`ifdef cyclone10gx
|
|
153
|
-
specify
|
|
154
|
-
(A => Q) = 272;
|
|
155
|
-
(B => Q) = 175;
|
|
156
|
-
(C => Q) = 165;
|
|
157
|
-
(D => Q) = 162;
|
|
158
|
-
(E => Q) = 53;
|
|
159
|
-
endspecify
|
|
160
|
-
`endif
|
|
161
115
|
|
|
162
116
|
assign Q = LUT >> {E, D, C, B, A};
|
|
163
117
|
|
|
@@ -177,22 +131,6 @@ specify
|
|
|
177
131
|
(D => Q) = 97;
|
|
178
132
|
endspecify
|
|
179
133
|
`endif
|
|
180
|
-
`ifdef arriav
|
|
181
|
-
specify
|
|
182
|
-
(A => Q) = 316;
|
|
183
|
-
(B => Q) = 317;
|
|
184
|
-
(C => Q) = 319;
|
|
185
|
-
(D => Q) = 76;
|
|
186
|
-
endspecify
|
|
187
|
-
`endif
|
|
188
|
-
`ifdef cyclone10gx
|
|
189
|
-
specify
|
|
190
|
-
(A => Q) = 175;
|
|
191
|
-
(B => Q) = 165;
|
|
192
|
-
(C => Q) = 162;
|
|
193
|
-
(D => Q) = 53;
|
|
194
|
-
endspecify
|
|
195
|
-
`endif
|
|
196
134
|
|
|
197
135
|
assign Q = LUT >> {D, C, B, A};
|
|
198
136
|
|
|
@@ -211,20 +149,6 @@ specify
|
|
|
211
149
|
(C => Q) = 97;
|
|
212
150
|
endspecify
|
|
213
151
|
`endif
|
|
214
|
-
`ifdef arriav
|
|
215
|
-
specify
|
|
216
|
-
(A => Q) = 316;
|
|
217
|
-
(B => Q) = 317;
|
|
218
|
-
(C => Q) = 76;
|
|
219
|
-
endspecify
|
|
220
|
-
`endif
|
|
221
|
-
`ifdef cyclone10gx
|
|
222
|
-
specify
|
|
223
|
-
(A => Q) = 165;
|
|
224
|
-
(B => Q) = 162;
|
|
225
|
-
(C => Q) = 53;
|
|
226
|
-
endspecify
|
|
227
|
-
`endif
|
|
228
152
|
|
|
229
153
|
assign Q = LUT >> {C, B, A};
|
|
230
154
|
|
|
@@ -242,18 +166,6 @@ specify
|
|
|
242
166
|
(B => Q) = 97;
|
|
243
167
|
endspecify
|
|
244
168
|
`endif
|
|
245
|
-
`ifdef arriav
|
|
246
|
-
specify
|
|
247
|
-
(A => Q) = 316;
|
|
248
|
-
(B => Q) = 76;
|
|
249
|
-
endspecify
|
|
250
|
-
`endif
|
|
251
|
-
`ifdef cyclone10gx
|
|
252
|
-
specify
|
|
253
|
-
(A => Q) = 162;
|
|
254
|
-
(B => Q) = 53;
|
|
255
|
-
endspecify
|
|
256
|
-
`endif
|
|
257
169
|
|
|
258
170
|
assign Q = LUT >> {B, A};
|
|
259
171
|
|
|
@@ -268,16 +180,6 @@ specify
|
|
|
268
180
|
(A => Q) = 97;
|
|
269
181
|
endspecify
|
|
270
182
|
`endif
|
|
271
|
-
`ifdef arriav
|
|
272
|
-
specify
|
|
273
|
-
(A => Q) = 76;
|
|
274
|
-
endspecify
|
|
275
|
-
`endif
|
|
276
|
-
`ifdef cyclone10gx
|
|
277
|
-
specify
|
|
278
|
-
(A => Q) = 53;
|
|
279
|
-
endspecify
|
|
280
|
-
`endif
|
|
281
183
|
|
|
282
184
|
assign Q = ~A;
|
|
283
185
|
|
|
@@ -306,40 +208,6 @@ specify
|
|
|
306
208
|
(CI => CO) = 36; // Divided by 2 to account for there being two ALUT_ARITHs in an ALM)
|
|
307
209
|
endspecify
|
|
308
210
|
`endif
|
|
309
|
-
`ifdef arriav
|
|
310
|
-
specify
|
|
311
|
-
(A => SO) = 744;
|
|
312
|
-
(B => SO) = 732;
|
|
313
|
-
(C => SO) = 562;
|
|
314
|
-
(D0 => SO) = 576;
|
|
315
|
-
(D1 => SO) = 511;
|
|
316
|
-
(CI => SO) = 249;
|
|
317
|
-
|
|
318
|
-
(A => CO) = 629;
|
|
319
|
-
(B => CO) = 623;
|
|
320
|
-
(C => CO) = 530;
|
|
321
|
-
(D0 => CO) = 514;
|
|
322
|
-
(D1 => CO) = 696;
|
|
323
|
-
(CI => CO) = 10; // Divided by 2 to account for there being two ALUT_ARITHs in an ALM)
|
|
324
|
-
endspecify
|
|
325
|
-
`endif
|
|
326
|
-
`ifdef cyclone10gx
|
|
327
|
-
specify
|
|
328
|
-
(A => SO) = 644;
|
|
329
|
-
(B => SO) = 477;
|
|
330
|
-
(C => SO) = 416;
|
|
331
|
-
(D0 => SO) = 380;
|
|
332
|
-
(D1 => SO) = 431;
|
|
333
|
-
(CI => SO) = 276;
|
|
334
|
-
|
|
335
|
-
(A => CO) = 525;
|
|
336
|
-
(B => CO) = 433;
|
|
337
|
-
(C => CO) = 712;
|
|
338
|
-
(D0 => CO) = 653;
|
|
339
|
-
(D1 => CO) = 593;
|
|
340
|
-
(CI => CO) = 16;
|
|
341
|
-
endspecify
|
|
342
|
-
`endif
|
|
343
211
|
|
|
344
212
|
wire q0, q1;
|
|
345
213
|
|
|
@@ -349,283 +217,3 @@ assign q1 = LUT1 >> {D1, C, B, A};
|
|
|
349
217
|
assign {CO, SO} = q0 + !q1 + CI;
|
|
350
218
|
|
|
351
219
|
endmodule
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
/*
|
|
355
|
-
// A, B, C0, C1, E0, E1, F0, F1: data inputs
|
|
356
|
-
// CARRYIN: carry input
|
|
357
|
-
// SHAREIN: shared-arithmetic input
|
|
358
|
-
// CLK0, CLK1, CLK2: clock inputs
|
|
359
|
-
//
|
|
360
|
-
// COMB0, COMB1: combinational outputs
|
|
361
|
-
// FF0, FF1, FF2, FF3: DFF outputs
|
|
362
|
-
// SUM0, SUM1: adder outputs
|
|
363
|
-
// CARRYOUT: carry output
|
|
364
|
-
// SHAREOUT: shared-arithmetic output
|
|
365
|
-
module MISTRAL_ALM(
|
|
366
|
-
input A, B, C0, C1, E0, E1, F0, F1, CARRYIN, SHAREIN, // LUT path
|
|
367
|
-
input CLK0, CLK1, CLK2, AC0, AC1, // FF path
|
|
368
|
-
output COMB0, COMB1, SUM0, SUM1, CARRYOUT, SHAREOUT,
|
|
369
|
-
output FF0, FF1, FF2, FF3
|
|
370
|
-
);
|
|
371
|
-
|
|
372
|
-
parameter LUT0 = 16'b0000;
|
|
373
|
-
parameter LUT1 = 16'b0000;
|
|
374
|
-
parameter LUT2 = 16'b0000;
|
|
375
|
-
parameter LUT3 = 16'b0000;
|
|
376
|
-
|
|
377
|
-
parameter INIT0 = 1'b0;
|
|
378
|
-
parameter INIT1 = 1'b0;
|
|
379
|
-
parameter INIT2 = 1'b0;
|
|
380
|
-
parameter INIT3 = 1'b0;
|
|
381
|
-
|
|
382
|
-
parameter C0_MUX = "C0";
|
|
383
|
-
parameter C1_MUX = "C1";
|
|
384
|
-
|
|
385
|
-
parameter F0_MUX = "VCC";
|
|
386
|
-
parameter F1_MUX = "GND";
|
|
387
|
-
|
|
388
|
-
parameter FEEDBACK0 = "FF0";
|
|
389
|
-
parameter FEEDBACK1 = "FF2";
|
|
390
|
-
|
|
391
|
-
parameter ADD_MUX = "LUT";
|
|
392
|
-
|
|
393
|
-
parameter DFF01_DATA_MUX = "COMB";
|
|
394
|
-
parameter DFF23_DATA_MUX = "COMB";
|
|
395
|
-
|
|
396
|
-
parameter DFF0_CLK = "CLK0";
|
|
397
|
-
parameter DFF1_CLK = "CLK0";
|
|
398
|
-
parameter DFF2_CLK = "CLK0";
|
|
399
|
-
parameter DFF3_CLK = "CLK0";
|
|
400
|
-
|
|
401
|
-
parameter DFF0_AC = "AC0";
|
|
402
|
-
parameter DFF1_AC = "AC0";
|
|
403
|
-
parameter DFF2_AC = "AC0";
|
|
404
|
-
parameter DFF3_AC = "AC0";
|
|
405
|
-
|
|
406
|
-
// Feedback muxes from the flip-flop outputs.
|
|
407
|
-
wire ff_feedback_mux0, ff_feedback_mux1;
|
|
408
|
-
|
|
409
|
-
// C-input muxes which can be set to also use the F-input.
|
|
410
|
-
wire c0_input_mux, c1_input_mux;
|
|
411
|
-
|
|
412
|
-
// F-input muxes which can be set to a constant to allow LUT5 use.
|
|
413
|
-
wire f0_input_mux, f1_input_mux;
|
|
414
|
-
|
|
415
|
-
// Adder input muxes to select between shared-arithmetic mode and arithmetic mode.
|
|
416
|
-
wire add0_input_mux, add1_input_mux;
|
|
417
|
-
|
|
418
|
-
// Combinational-output muxes for LUT #1 and LUT #3
|
|
419
|
-
wire lut1_comb_mux, lut3_comb_mux;
|
|
420
|
-
|
|
421
|
-
// Sum-output muxes for LUT #1 and LUT #3
|
|
422
|
-
wire lut1_sum_mux, lut3_sum_mux;
|
|
423
|
-
|
|
424
|
-
// DFF data-input muxes
|
|
425
|
-
wire dff01_data_mux, dff23_data_mux;
|
|
426
|
-
|
|
427
|
-
// DFF clock selectors
|
|
428
|
-
wire dff0_clk, dff1_clk, dff2_clk, dff3_clk;
|
|
429
|
-
|
|
430
|
-
// DFF asynchronous-clear selectors
|
|
431
|
-
wire dff0_ac, dff1_ac, dff2_ac, dff3_ac;
|
|
432
|
-
|
|
433
|
-
// LUT, DFF and adder output wires for routing.
|
|
434
|
-
wire lut0_out, lut1a_out, lut1b_out, lut2_out, lut3a_out, lut3b_out;
|
|
435
|
-
wire dff0_out, dff1_out, dff2_out, dff3_out;
|
|
436
|
-
wire add0_sum, add1_sum, add0_carry, add1_carry;
|
|
437
|
-
|
|
438
|
-
generate
|
|
439
|
-
if (FEEDBACK0 === "FF0")
|
|
440
|
-
assign ff_feedback_mux0 = dff0_out;
|
|
441
|
-
else if (FEEDBACK0 === "FF1")
|
|
442
|
-
assign ff_feedback_mux0 = dff1_out;
|
|
443
|
-
else
|
|
444
|
-
$error("Invalid FEEDBACK0 setting!");
|
|
445
|
-
|
|
446
|
-
if (FEEDBACK1 == "FF2")
|
|
447
|
-
assign ff_feedback_mux1 = dff2_out;
|
|
448
|
-
else if (FEEDBACK1 == "FF3")
|
|
449
|
-
assign ff_feedback_mux1 = dff3_out;
|
|
450
|
-
else
|
|
451
|
-
$error("Invalid FEEDBACK1 setting!");
|
|
452
|
-
|
|
453
|
-
if (C0_MUX === "C0")
|
|
454
|
-
assign c0_input_mux = C0;
|
|
455
|
-
else if (C0_MUX === "F1")
|
|
456
|
-
assign c0_input_mux = F1;
|
|
457
|
-
else if (C0_MUX === "FEEDBACK1")
|
|
458
|
-
assign c0_input_mux = ff_feedback_mux1;
|
|
459
|
-
else
|
|
460
|
-
$error("Invalid C0_MUX setting!");
|
|
461
|
-
|
|
462
|
-
if (C1_MUX === "C1")
|
|
463
|
-
assign c1_input_mux = C1;
|
|
464
|
-
else if (C1_MUX === "F0")
|
|
465
|
-
assign c1_input_mux = F0;
|
|
466
|
-
else if (C1_MUX === "FEEDBACK0")
|
|
467
|
-
assign c1_input_mux = ff_feedback_mux0;
|
|
468
|
-
else
|
|
469
|
-
$error("Invalid C1_MUX setting!");
|
|
470
|
-
|
|
471
|
-
// F0 == VCC is LUT5
|
|
472
|
-
// F0 == F0 is LUT6
|
|
473
|
-
// F0 == FEEDBACK is unknown
|
|
474
|
-
if (F0_MUX === "VCC")
|
|
475
|
-
assign f0_input_mux = 1'b1;
|
|
476
|
-
else if (F0_MUX === "F0")
|
|
477
|
-
assign f0_input_mux = F0;
|
|
478
|
-
else if (F0_MUX === "FEEDBACK0")
|
|
479
|
-
assign f0_input_mux = ff_feedback_mux0;
|
|
480
|
-
else
|
|
481
|
-
$error("Invalid F0_MUX setting!");
|
|
482
|
-
|
|
483
|
-
// F1 == GND is LUT5
|
|
484
|
-
// F1 == F1 is LUT6
|
|
485
|
-
// F1 == FEEDBACK is unknown
|
|
486
|
-
if (F1_MUX === "GND")
|
|
487
|
-
assign f1_input_mux = 1'b0;
|
|
488
|
-
else if (F1_MUX === "F1")
|
|
489
|
-
assign f1_input_mux = F1;
|
|
490
|
-
else if (F1_MUX === "FEEDBACK1")
|
|
491
|
-
assign f1_input_mux = ff_feedback_mux1;
|
|
492
|
-
else
|
|
493
|
-
$error("Invalid F1_MUX setting!");
|
|
494
|
-
|
|
495
|
-
if (ADD_MUX === "LUT") begin
|
|
496
|
-
assign add0_input_mux = ~lut1_sum_mux;
|
|
497
|
-
assign add1_input_mux = ~lut3_sum_mux;
|
|
498
|
-
end else if (ADD_MUX === "SHARE") begin
|
|
499
|
-
assign add0_input_mux = SHAREIN;
|
|
500
|
-
assign add1_input_mux = lut1_comb_mux;
|
|
501
|
-
end else
|
|
502
|
-
$error("Invalid ADD_MUX setting!");
|
|
503
|
-
|
|
504
|
-
if (DFF01_DATA_MUX === "COMB")
|
|
505
|
-
assign dff01_data_mux = COMB0;
|
|
506
|
-
else if (DFF01_DATA_MUX === "SUM")
|
|
507
|
-
assign dff01_data_mux = SUM0;
|
|
508
|
-
else
|
|
509
|
-
$error("Invalid DFF01_DATA_MUX setting!");
|
|
510
|
-
|
|
511
|
-
if (DFF23_DATA_MUX === "COMB")
|
|
512
|
-
assign dff23_data_mux = COMB0;
|
|
513
|
-
else if (DFF23_DATA_MUX === "SUM")
|
|
514
|
-
assign dff23_data_mux = SUM0;
|
|
515
|
-
else
|
|
516
|
-
$error("Invalid DFF23_DATA_MUX setting!");
|
|
517
|
-
|
|
518
|
-
if (DFF0_CLK === "CLK0")
|
|
519
|
-
assign dff0_clk = CLK0;
|
|
520
|
-
else if (DFF0_CLK === "CLK1")
|
|
521
|
-
assign dff0_clk = CLK1;
|
|
522
|
-
else if (DFF0_CLK === "CLK2")
|
|
523
|
-
assign dff0_clk = CLK2;
|
|
524
|
-
else
|
|
525
|
-
$error("Invalid DFF0_CLK setting!");
|
|
526
|
-
|
|
527
|
-
if (DFF1_CLK === "CLK0")
|
|
528
|
-
assign dff1_clk = CLK0;
|
|
529
|
-
else if (DFF1_CLK === "CLK1")
|
|
530
|
-
assign dff1_clk = CLK1;
|
|
531
|
-
else if (DFF1_CLK === "CLK2")
|
|
532
|
-
assign dff1_clk = CLK2;
|
|
533
|
-
else
|
|
534
|
-
$error("Invalid DFF1_CLK setting!");
|
|
535
|
-
|
|
536
|
-
if (DFF2_CLK === "CLK0")
|
|
537
|
-
assign dff2_clk = CLK0;
|
|
538
|
-
else if (DFF2_CLK === "CLK1")
|
|
539
|
-
assign dff2_clk = CLK1;
|
|
540
|
-
else if (DFF2_CLK === "CLK2")
|
|
541
|
-
assign dff2_clk = CLK2;
|
|
542
|
-
else
|
|
543
|
-
$error("Invalid DFF2_CLK setting!");
|
|
544
|
-
|
|
545
|
-
if (DFF3_CLK === "CLK0")
|
|
546
|
-
assign dff3_clk = CLK0;
|
|
547
|
-
else if (DFF3_CLK === "CLK1")
|
|
548
|
-
assign dff3_clk = CLK1;
|
|
549
|
-
else if (DFF3_CLK === "CLK2")
|
|
550
|
-
assign dff3_clk = CLK2;
|
|
551
|
-
else
|
|
552
|
-
$error("Invalid DFF3_CLK setting!");
|
|
553
|
-
|
|
554
|
-
if (DFF0_AC === "AC0")
|
|
555
|
-
assign dff0_ac = AC0;
|
|
556
|
-
else if (DFF0_AC === "AC1")
|
|
557
|
-
assign dff0_ac = AC1;
|
|
558
|
-
else
|
|
559
|
-
$error("Invalid DFF0_AC setting!");
|
|
560
|
-
|
|
561
|
-
if (DFF1_AC === "AC0")
|
|
562
|
-
assign dff1_ac = AC0;
|
|
563
|
-
else if (DFF1_AC === "AC1")
|
|
564
|
-
assign dff1_ac = AC1;
|
|
565
|
-
else
|
|
566
|
-
$error("Invalid DFF1_AC setting!");
|
|
567
|
-
|
|
568
|
-
if (DFF2_AC === "AC0")
|
|
569
|
-
assign dff2_ac = AC0;
|
|
570
|
-
else if (DFF2_AC === "AC1")
|
|
571
|
-
assign dff2_ac = AC1;
|
|
572
|
-
else
|
|
573
|
-
$error("Invalid DFF2_AC setting!");
|
|
574
|
-
|
|
575
|
-
if (DFF3_AC === "AC0")
|
|
576
|
-
assign dff3_ac = AC0;
|
|
577
|
-
else if (DFF3_AC === "AC1")
|
|
578
|
-
assign dff3_ac = AC1;
|
|
579
|
-
else
|
|
580
|
-
$error("Invalid DFF3_AC setting!");
|
|
581
|
-
|
|
582
|
-
endgenerate
|
|
583
|
-
|
|
584
|
-
// F0 on the Quartus diagram
|
|
585
|
-
MISTRAL_ALUT4 #(.LUT(LUT0)) lut0 (.A(A), .B(B), .C(C0), .D(c1_input_mux), .Q(lut0_out));
|
|
586
|
-
|
|
587
|
-
// F2 on the Quartus diagram
|
|
588
|
-
MISTRAL_ALUT4 #(.LUT(LUT1)) lut1_comb (.A(A), .B(B), .C(C0), .D(c1_input_mux), .Q(lut1_comb_mux));
|
|
589
|
-
MISTRAL_ALUT4 #(.LUT(LUT1)) lut1_sum (.A(A), .B(B), .C(C0), .D(E0), .Q(lut1_sum_mux));
|
|
590
|
-
|
|
591
|
-
// F1 on the Quartus diagram
|
|
592
|
-
MISTRAL_ALUT4 #(.LUT(LUT2)) lut2 (.A(A), .B(B), .C(C1), .D(c0_input_mux), .Q(lut2_out));
|
|
593
|
-
|
|
594
|
-
// F3 on the Quartus diagram
|
|
595
|
-
MISTRAL_ALUT4 #(.LUT(LUT3)) lut3_comb (.A(A), .B(B), .C(C1), .D(c0_input_mux), .Q(lut3_comb_mux));
|
|
596
|
-
MISTRAL_ALUT4 #(.LUT(LUT3)) lut3_sum (.A(A), .B(B), .C(C1), .D(E1), .Q(lut3_sum_mux));
|
|
597
|
-
|
|
598
|
-
MISTRAL_FF #(.INIT(INIT0)) dff0 (.D(dff01_data_mux), .CLK(dff0_clk), .ACn(dff0_ac), .Q(dff0_out));
|
|
599
|
-
MISTRAL_FF #(.INIT(INIT1)) dff1 (.D(dff01_data_mux), .CLK(dff1_clk), .ACn(dff1_ac), .Q(dff1_out));
|
|
600
|
-
MISTRAL_FF #(.INIT(INIT2)) dff2 (.D(dff23_data_mux), .CLK(dff2_clk), .ACn(dff2_ac), .Q(dff2_out));
|
|
601
|
-
MISTRAL_FF #(.INIT(INIT3)) dff3 (.D(dff23_data_mux), .CLK(dff3_clk), .ACn(dff3_ac), .Q(dff3_out));
|
|
602
|
-
|
|
603
|
-
// Adders
|
|
604
|
-
assign {add0_carry, add0_sum} = CARRYIN + lut0_out + lut1_sum_mux;
|
|
605
|
-
assign {add1_carry, add1_sum} = add0_carry + lut2_out + lut3_sum_mux;
|
|
606
|
-
|
|
607
|
-
// COMBOUT outputs on the Quartus diagram
|
|
608
|
-
assign COMB0 = E0 ? (f0_input_mux ? lut3_comb_mux : lut1_comb_mux)
|
|
609
|
-
: (f0_input_mux ? lut2_out : lut0_out);
|
|
610
|
-
|
|
611
|
-
assign COMB1 = E1 ? (f1_input_mux ? lut3_comb_mux : lut1_comb_mux)
|
|
612
|
-
: (f1_input_mux ? lut2_out : lut0_out);
|
|
613
|
-
|
|
614
|
-
// SUMOUT output on the Quartus diagram
|
|
615
|
-
assign SUM0 = add0_sum;
|
|
616
|
-
assign SUM1 = add1_sum;
|
|
617
|
-
|
|
618
|
-
// COUT output on the Quartus diagram
|
|
619
|
-
assign CARRYOUT = add1_carry;
|
|
620
|
-
|
|
621
|
-
// SHAREOUT output on the Quartus diagram
|
|
622
|
-
assign SHAREOUT = lut3_comb_mux;
|
|
623
|
-
|
|
624
|
-
// REGOUT outputs on the Quartus diagram
|
|
625
|
-
assign FF0 = dff0_out;
|
|
626
|
-
assign FF1 = dff1_out;
|
|
627
|
-
assign FF2 = dff2_out;
|
|
628
|
-
assign FF3 = dff3_out;
|
|
629
|
-
|
|
630
|
-
endmodule
|
|
631
|
-
*/
|
|
@@ -77,38 +77,6 @@ specify
|
|
|
77
77
|
if (ACLR === 1'b0) (ACLR => Q) = 282;
|
|
78
78
|
endspecify
|
|
79
79
|
`endif
|
|
80
|
-
`ifdef arriav
|
|
81
|
-
specify
|
|
82
|
-
if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = 470;
|
|
83
|
-
if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = 633;
|
|
84
|
-
if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = 439;
|
|
85
|
-
|
|
86
|
-
$setup(DATAIN, posedge CLK, /* -170 */ 0);
|
|
87
|
-
$setup(ENA, posedge CLK, /* -170 */ 0);
|
|
88
|
-
$setup(SCLR, posedge CLK, /* -170 */ 0);
|
|
89
|
-
$setup(SLOAD, posedge CLK, /* -170 */ 0);
|
|
90
|
-
$setup(SDATA, posedge CLK, /* -170 */ 0);
|
|
91
|
-
|
|
92
|
-
if (ACLR === 1'b0) (ACLR => Q) = 215;
|
|
93
|
-
endspecify
|
|
94
|
-
`endif
|
|
95
|
-
`ifdef cyclone10gx
|
|
96
|
-
specify
|
|
97
|
-
// TODO (long-term): investigate these numbers.
|
|
98
|
-
// It seems relying on the Quartus Timing Analyzer was not the best idea; it's too fiddly.
|
|
99
|
-
if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = 219;
|
|
100
|
-
if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = 219;
|
|
101
|
-
if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = 219;
|
|
102
|
-
|
|
103
|
-
$setup(DATAIN, posedge CLK, 268);
|
|
104
|
-
$setup(ENA, posedge CLK, 268);
|
|
105
|
-
$setup(SCLR, posedge CLK, 268);
|
|
106
|
-
$setup(SLOAD, posedge CLK, 268);
|
|
107
|
-
$setup(SDATA, posedge CLK, 268);
|
|
108
|
-
|
|
109
|
-
if (ACLR === 1'b0) (ACLR => Q) = 0;
|
|
110
|
-
endspecify
|
|
111
|
-
`endif
|
|
112
80
|
|
|
113
81
|
initial begin
|
|
114
82
|
// Altera flops initialise to zero.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// The MLAB
|
|
2
2
|
// --------
|
|
3
3
|
// In addition to Logic Array Blocks (LABs) that contain ten Adaptive Logic
|
|
4
|
-
// Modules (ALMs, see alm_sim.v), the Cyclone V
|
|
4
|
+
// Modules (ALMs, see alm_sim.v), the Cyclone V also contains
|
|
5
5
|
// Memory/Logic Array Blocks (MLABs) that can act as either ten ALMs, or utilise
|
|
6
6
|
// the memory the ALM uses to store the look-up table data for general usage,
|
|
7
7
|
// producing a 32 address by 20-bit block of memory. MLABs are spread out
|
|
@@ -14,11 +14,8 @@
|
|
|
14
14
|
// or shift registers (by using the output of the Nth bit as input for the N+1th
|
|
15
15
|
// bit).
|
|
16
16
|
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
// to put these cells in the same MLAB during cell placement. Because of this
|
|
20
|
-
// a MISTRAL_MLAB cell represents one of these 32 address by 1-bit cells, and
|
|
21
|
-
// 20 of them represent a physical MLAB.
|
|
17
|
+
// For historical reasons a MISTRAL_MLAB cell represents a 32 address by 1-bit cell,
|
|
18
|
+
// and 20 of them represent a physical MLAB.
|
|
22
19
|
//
|
|
23
20
|
// How the MLAB works
|
|
24
21
|
// ------------------
|
|
@@ -28,10 +25,7 @@
|
|
|
28
25
|
// by the Yosys `memory_bram` pass, and it doesn't make sense to me to use
|
|
29
26
|
// `techmap` just for the sake of renaming the cell ports.
|
|
30
27
|
//
|
|
31
|
-
// The MLAB can be initialised to any value
|
|
32
|
-
// allows memory initialisation from a file. Since Yosys doesn't preserve input
|
|
33
|
-
// file information, or write the contents of an `initial` block to a file,
|
|
34
|
-
// Yosys can't currently initialise the MLAB in a way Quartus will accept.
|
|
28
|
+
// The MLAB can be initialised to any value.
|
|
35
29
|
//
|
|
36
30
|
// The MLAB takes in data from A1DATA at the rising edge of CLK1, and if A1EN
|
|
37
31
|
// is high, writes it to the address in A1ADDR. A1EN can therefore be used to
|
|
@@ -39,9 +33,7 @@
|
|
|
39
33
|
//
|
|
40
34
|
// Simultaneously, the MLAB reads data from B1ADDR, and outputs it to B1DATA,
|
|
41
35
|
// asynchronous to CLK1 and ignoring A1EN. If a synchronous read is needed
|
|
42
|
-
// then the output can be fed to embedded flops.
|
|
43
|
-
// Quartus will pack external flops into the MLAB, but this is an assumption
|
|
44
|
-
// that needs testing.
|
|
36
|
+
// then the output can be fed to embedded flops.
|
|
45
37
|
|
|
46
38
|
// The vendor sim model outputs 'x for a very short period (a few
|
|
47
39
|
// combinational delta cycles) after each write. This has been omitted from
|
|
@@ -69,33 +61,6 @@ specify
|
|
|
69
61
|
(B1ADDR[4] => B1DATA) = 96;
|
|
70
62
|
endspecify
|
|
71
63
|
`endif
|
|
72
|
-
`ifdef arriav
|
|
73
|
-
specify
|
|
74
|
-
$setup(A1ADDR, posedge CLK1, 62);
|
|
75
|
-
$setup(A1DATA, posedge CLK1, 62);
|
|
76
|
-
$setup(A1EN, posedge CLK1, 62);
|
|
77
|
-
|
|
78
|
-
(B1ADDR[0] => B1DATA) = 370;
|
|
79
|
-
(B1ADDR[1] => B1DATA) = 292;
|
|
80
|
-
(B1ADDR[2] => B1DATA) = 218;
|
|
81
|
-
(B1ADDR[3] => B1DATA) = 74;
|
|
82
|
-
(B1ADDR[4] => B1DATA) = 177;
|
|
83
|
-
endspecify
|
|
84
|
-
`endif
|
|
85
|
-
`ifdef cyclone10gx
|
|
86
|
-
// TODO: Cyclone 10 GX timings; the below timings are for Cyclone V
|
|
87
|
-
specify
|
|
88
|
-
$setup(A1ADDR, posedge CLK1, 86);
|
|
89
|
-
$setup(A1DATA, posedge CLK1, 86);
|
|
90
|
-
$setup(A1EN, posedge CLK1, 86);
|
|
91
|
-
|
|
92
|
-
(B1ADDR[0] => B1DATA) = 487;
|
|
93
|
-
(B1ADDR[1] => B1DATA) = 475;
|
|
94
|
-
(B1ADDR[2] => B1DATA) = 382;
|
|
95
|
-
(B1ADDR[3] => B1DATA) = 284;
|
|
96
|
-
(B1ADDR[4] => B1DATA) = 96;
|
|
97
|
-
endspecify
|
|
98
|
-
`endif
|
|
99
64
|
|
|
100
65
|
always @(posedge CLK1)
|
|
101
66
|
if (A1EN) mem[A1ADDR] <= A1DATA;
|
|
@@ -134,17 +99,6 @@ specify
|
|
|
134
99
|
if (B1EN) (posedge CLK1 => (B1DATA : A1DATA)) = 1004;
|
|
135
100
|
endspecify
|
|
136
101
|
`endif
|
|
137
|
-
`ifdef arriav
|
|
138
|
-
specify
|
|
139
|
-
$setup(A1ADDR, posedge CLK1, 97);
|
|
140
|
-
$setup(A1DATA, posedge CLK1, 74);
|
|
141
|
-
$setup(A1EN, posedge CLK1, 109);
|
|
142
|
-
$setup(B1ADDR, posedge CLK1, 97);
|
|
143
|
-
$setup(B1EN, posedge CLK1, 126);
|
|
144
|
-
|
|
145
|
-
if (B1EN) (posedge CLK1 => (B1DATA : A1DATA)) = 787;
|
|
146
|
-
endspecify
|
|
147
|
-
`endif
|
|
148
102
|
|
|
149
103
|
always @(posedge CLK1) begin
|
|
150
104
|
if (!A1EN)
|
|
@@ -6,7 +6,7 @@ class DictAction(argparse.Action):
|
|
|
6
6
|
name = option_string.lstrip(parser.prefix_chars).replace("-", "_")
|
|
7
7
|
getattr(namespace, self.dest)[name] = values
|
|
8
8
|
|
|
9
|
-
def parser_func():
|
|
9
|
+
def parser_func(release_version='unknown SBY version'):
|
|
10
10
|
parser = argparse.ArgumentParser(prog="sby",
|
|
11
11
|
usage="%(prog)s [options] [<jobname>.sby [tasknames] | <dirname>]")
|
|
12
12
|
parser.set_defaults(exe_paths=dict())
|
|
@@ -81,4 +81,6 @@ def parser_func():
|
|
|
81
81
|
parser.add_argument("arg_tasknames", metavar="tasknames", nargs="*",
|
|
82
82
|
help="tasks to run (only valid when <jobname>.sby is used)")
|
|
83
83
|
|
|
84
|
+
parser.add_argument('--version', action='version', version=release_version)
|
|
85
|
+
|
|
84
86
|
return parser
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// **AUTOGENERATED FILE** **DO NOT EDIT**
|
|
2
|
-
// Generated by ../yosys-src/techlibs/quicklogic/qlf_k6n10f/generate_bram_types_sim.py at 2024-
|
|
2
|
+
// Generated by ../yosys-src/techlibs/quicklogic/qlf_k6n10f/generate_bram_types_sim.py at 2024-07-10 01:09:42.792938+00:00
|
|
3
3
|
`timescale 1ns /10ps
|
|
4
4
|
|
|
5
5
|
module TDP36K_BRAM_A_X1_B_X1_nonsplit (
|
yowasp_yosys/smtbmc.py
CHANGED
|
@@ -719,6 +719,8 @@ def smt_extract_mask(smt_expr, mask):
|
|
|
719
719
|
return combined_chunks, ''.join(mask_index_order[start:end] for start, end in chunks)[::-1]
|
|
720
720
|
|
|
721
721
|
def smt_concat(exprs):
|
|
722
|
+
if not isinstance(exprs, (tuple, list)):
|
|
723
|
+
exprs = tuple(exprs)
|
|
722
724
|
if not exprs:
|
|
723
725
|
return ""
|
|
724
726
|
if len(exprs) == 1:
|
|
@@ -818,6 +820,9 @@ def ywfile_constraints(inywfile, constr_assumes, map_steps=None, skip_x=False):
|
|
|
818
820
|
if not bits_re.match(bits):
|
|
819
821
|
raise ValueError("unsupported bit value in Yosys witness file")
|
|
820
822
|
|
|
823
|
+
if bits.count('?') == len(bits):
|
|
824
|
+
continue
|
|
825
|
+
|
|
821
826
|
smt_expr = ywfile_signal(sig, map_steps.get(t, t))
|
|
822
827
|
|
|
823
828
|
smt_expr, bits = smt_extract_mask(smt_expr, bits)
|
yowasp_yosys/yosys.wasm
CHANGED
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
yowasp_yosys/__init__.py,sha256=x--xPTzLWZNoX6H0B2E3a1HMZMk3di10gVnWVLJ92xc,1325
|
|
2
|
-
yowasp_yosys/sby.py,sha256=
|
|
3
|
-
yowasp_yosys/smtbmc.py,sha256=
|
|
2
|
+
yowasp_yosys/sby.py,sha256=at4UB7rmju4xhmFP6b31T7duU2Hx5aSOgGUiExKz7Xc,18496
|
|
3
|
+
yowasp_yosys/smtbmc.py,sha256=Tg2UXcVSr_mZlHO3ptWv5XTbPJ_Xd5a8fZMz0h2l7J0,73747
|
|
4
4
|
yowasp_yosys/witness.py,sha256=m3iV2Nydm0p4G79VRaaX3lGul-nGnuxeKnx20MCJgi0,17279
|
|
5
|
-
yowasp_yosys/yosys.wasm,sha256=
|
|
5
|
+
yowasp_yosys/yosys.wasm,sha256=Niet_kD3lcw_cvy_jf2j-F8Ig9aTLJ4kJ1DyfX1Ko_o,21965255
|
|
6
6
|
yowasp_yosys/share/abc9_map.v,sha256=uWDqMpBQTeeadH1BlHVwkCy2StKF892xbgBgMKLK5-w,923
|
|
7
7
|
yowasp_yosys/share/abc9_model.v,sha256=IfMyEGOEUBdZyiVule0wMhrVYVYQpmSIcxygbgtHItI,653
|
|
8
8
|
yowasp_yosys/share/abc9_unmap.v,sha256=w107Y3iJjMU6D_6_aYLf2NziXTnAhpa5_CFAwaYO1iU,638
|
|
@@ -102,16 +102,16 @@ yowasp_yosys/share/ice40/ff_map.v,sha256=0ikq-i1_UVT6xuFLMj2Zfilwu6wz8oibMdtPegZ
|
|
|
102
102
|
yowasp_yosys/share/ice40/latches_map.v,sha256=V5NwBaIML68eOlhDaUJUs8W-ggRePjPsDtUn3mnSpao,258
|
|
103
103
|
yowasp_yosys/share/ice40/spram.txt,sha256=dCRV0flfJunvnvKV0Q5Kq5NBrhh_PkZGXvUt675aiIk,153
|
|
104
104
|
yowasp_yosys/share/ice40/spram_map.v,sha256=O8fRkVuH1dgAXEAtYJgh8wTHnZEK75fPAMBI-PgYVqs,475
|
|
105
|
-
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h,sha256=
|
|
105
|
+
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h,sha256=ZUP8mbyUk6zj5XZ3wlOvHYE2pKPLCh-w3hOpd_G0jU0,72296
|
|
106
106
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_replay.h,sha256=3bFAy3nYtaH4MsLI9Kvf88K6BYOkML8plDMxmPtPdss,30008
|
|
107
107
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_time.h,sha256=6zIxuXG7bXy5UWe7WuA_KQHiwV7VWvcsNecwOPAL_bU,6174
|
|
108
108
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_vcd.h,sha256=F2N7FdVUFoOu089dZIBgIT2mmn22QAj0717d26oVPpc,8488
|
|
109
|
-
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi.cc,sha256=
|
|
109
|
+
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi.cc,sha256=4WH8B0B7Y7GY43BXZX0-6PGFPYcbOcavJseI0wM_VJQ,4559
|
|
110
110
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi.h,sha256=s77MXq7sjTeHcPDO9UALsqbnbqe59dfbnmNJCm4iWpc,16521
|
|
111
111
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi_vcd.cc,sha256=5A6IK46tg8BWgs_vzS183p9HMZfWP7FZfJzCjnB3vW8,2815
|
|
112
112
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/capi/cxxrtl_capi_vcd.h,sha256=P6KBEs-76IK4LwKBhXbju9nwkH3rmmqUm4uSuiaS88M,4286
|
|
113
113
|
yowasp_yosys/share/include/backends/rtlil/rtlil_backend.h,sha256=h-kkdWtAosSZDzvAW511jAHao-dDUm3fyTJhfMXsZDk,2407
|
|
114
|
-
yowasp_yosys/share/include/frontends/ast/ast.h,sha256=
|
|
114
|
+
yowasp_yosys/share/include/frontends/ast/ast.h,sha256=ptyeUW7447Cwpq-o8nRzm51VAJvruRSj-hR4-Fmb3FQ,16738
|
|
115
115
|
yowasp_yosys/share/include/frontends/ast/ast_binding.h,sha256=NdII3-d38NWB_87m9AOzqQLjkkYaYToz3xHTsHNelU0,1756
|
|
116
116
|
yowasp_yosys/share/include/frontends/blif/blifparse.h,sha256=GGceOEm-flPK0QdPIVDZ6ZGpkTphT14oTxJhAYIb2RY,1139
|
|
117
117
|
yowasp_yosys/share/include/kernel/binding.h,sha256=BKfMhNf_HflihwCXEqyZuB1zp9xzVi0NRKe-5MvIidM,1947
|
|
@@ -140,7 +140,7 @@ yowasp_yosys/share/include/kernel/sigtools.h,sha256=qC0CgK3OJwam_ljqtW-kauA3djyl
|
|
|
140
140
|
yowasp_yosys/share/include/kernel/timinginfo.h,sha256=9MI3ve19pJouYXKng1EBlrryAKy-OaH6Hc8VbLu0GYY,7100
|
|
141
141
|
yowasp_yosys/share/include/kernel/utils.h,sha256=r5GUGry9LEcyasrGnI6luII_8wgf-Iri0H8_FgwWzRY,6824
|
|
142
142
|
yowasp_yosys/share/include/kernel/yosys.h,sha256=TRn6yuZGWcBQkrB1nc7dvUhISz3dnS8eMKvVynyBko8,3421
|
|
143
|
-
yowasp_yosys/share/include/kernel/yosys_common.h,sha256=
|
|
143
|
+
yowasp_yosys/share/include/kernel/yosys_common.h,sha256=6Ta1PbJp7gUZ-G0pepjjBlnuKcJOeK8SgJmQ-Zkiytg,11220
|
|
144
144
|
yowasp_yosys/share/include/kernel/yw.h,sha256=jibYunDP1ZMYwCxo616nHgdGyPGis_8TO9fYmYdHfd4,5429
|
|
145
145
|
yowasp_yosys/share/include/libs/ezsat/ezminisat.h,sha256=bSrDL6VRinpXdULoR8P9lQaT1Dy4kAEZfTcKjRKOdjg,2098
|
|
146
146
|
yowasp_yosys/share/include/libs/ezsat/ezsat.h,sha256=eggeGwS9pFyxSYGT0RtOqX189pbXFAKDfPZzIYTmqIk,14523
|
|
@@ -164,21 +164,18 @@ yowasp_yosys/share/intel_alm/common/abc9_map.v,sha256=_pRCAl141RoQTKDxeoIU1NMz12
|
|
|
164
164
|
yowasp_yosys/share/intel_alm/common/abc9_model.v,sha256=lkefmB4DWh-YVhXbueTpbs5qVcqpJ-y_AuggAPHMzwg,342
|
|
165
165
|
yowasp_yosys/share/intel_alm/common/abc9_unmap.v,sha256=B8lu9UoGG9SzTgfggBRegKD9VhQbqqcwt9Vd1_vHNIE,352
|
|
166
166
|
yowasp_yosys/share/intel_alm/common/alm_map.v,sha256=w_bLNDWc9-aHeAodjYU74W2ikbSCuaRnFkJD6zEPnzM,1504
|
|
167
|
-
yowasp_yosys/share/intel_alm/common/alm_sim.v,sha256=
|
|
167
|
+
yowasp_yosys/share/intel_alm/common/alm_sim.v,sha256=yBL_JnYrMI-0z9UTBeIUZ-Apcfbhif9X-8dY1fWLC_Q,6106
|
|
168
168
|
yowasp_yosys/share/intel_alm/common/arith_alm_map.v,sha256=srPc3OeJrQm-U92QZuDuzefNw-vJvfWO0A5kmlveIdk,2096
|
|
169
169
|
yowasp_yosys/share/intel_alm/common/bram_m10k.txt,sha256=qphG5ja8xD8EZAhAYmhH52Y_y0VaZZqgVBYHdEiXxLg,578
|
|
170
170
|
yowasp_yosys/share/intel_alm/common/bram_m10k_map.v,sha256=txXH4k8P3LNj9oECXCTZ0Rqi2oRx6TzIVIlPrQkyotI,746
|
|
171
|
-
yowasp_yosys/share/intel_alm/common/bram_m20k.txt,sha256=1yO0sVVkXLlfBuijfUTaPq0Ky1taMjww5uUyNAcQqDM,780
|
|
172
|
-
yowasp_yosys/share/intel_alm/common/bram_m20k_map.v,sha256=TpD8XXHPi0fD7R1B7Rqo-R99vt38k9DAp4yh_hz6bI4,696
|
|
173
171
|
yowasp_yosys/share/intel_alm/common/dff_map.v,sha256=goG4G6DwaZvOOBCD6l0DxIhP91WFjeT-EhEe5apnhmE,579
|
|
174
|
-
yowasp_yosys/share/intel_alm/common/dff_sim.v,sha256=
|
|
172
|
+
yowasp_yosys/share/intel_alm/common/dff_sim.v,sha256=mTnNHB7fvd51_m1MKuAY_cO6WXYsrsPLoGwIU_Bk2qQ,3656
|
|
175
173
|
yowasp_yosys/share/intel_alm/common/dsp_map.v,sha256=v0qt2I74LNYX1JqqKIHegOCaRv2armuzXW9gOeAuVnE,891
|
|
176
174
|
yowasp_yosys/share/intel_alm/common/dsp_sim.v,sha256=Djm4eu69FFgqrmaNyKLSysNeRnCkf8PpsdHVM1PC_3c,2238
|
|
177
175
|
yowasp_yosys/share/intel_alm/common/lutram_mlab.txt,sha256=Dlw5w8Jo467DXHSHED2VmwUnBARwDARjdcGuXxBROT4,316
|
|
178
176
|
yowasp_yosys/share/intel_alm/common/megafunction_bb.v,sha256=1yVRPbaX_namYyW_QQQh7_VHYKbBiTF_D_gvfhtV-FU,23589
|
|
179
|
-
yowasp_yosys/share/intel_alm/common/mem_sim.v,sha256=
|
|
177
|
+
yowasp_yosys/share/intel_alm/common/mem_sim.v,sha256=71xsrYFCfHuU1qpTUdMuzy4l2pRimXfuhQIRLv4fiOE,3709
|
|
180
178
|
yowasp_yosys/share/intel_alm/common/misc_sim.v,sha256=d9Jjp8auAnFuujhrHxU5YYcmI_ytAvMqYTGbWdp1GYI,562
|
|
181
|
-
yowasp_yosys/share/intel_alm/common/quartus_rename.v,sha256=Hp4UJfU6zTZXy_5LL9arW-z1OUTLLx-qOVUPsxGrq7I,7552
|
|
182
179
|
yowasp_yosys/share/intel_alm/cyclonev/cells_sim.v,sha256=iAydbW_CThciv_fHD7s09lzQesAjyMoIcD2jqDPfuOY,5522
|
|
183
180
|
yowasp_yosys/share/lattice/arith_map_ccu2c.v,sha256=RvY-WCUdIQiHg-gXxgmu1ezfB1uTjQON4bMQxO6Ju-Y,2592
|
|
184
181
|
yowasp_yosys/share/lattice/arith_map_ccu2d.v,sha256=bbvVq4xpfgHam4BBThzJbFJF68mWKoJVm8wBDNwcQKo,2596
|
|
@@ -218,7 +215,7 @@ yowasp_yosys/share/nexus/lutrams.txt,sha256=1nZ4EV0rCLM1NHWidtbpKvDm2U18UJ6rpjA9
|
|
|
218
215
|
yowasp_yosys/share/nexus/lutrams_map.v,sha256=zTFiwK5YeohiO3kjV04S3h2dJdpSKpOILKpfhJGWNGM,428
|
|
219
216
|
yowasp_yosys/share/nexus/parse_init.vh,sha256=Weev9ITWk8JEoaovId36MYw_vXLmsZvpZ9U59jFC7n4,855
|
|
220
217
|
yowasp_yosys/share/python3/sby_autotune.py,sha256=OvrwQKPK-3s_xGpQRj6SP238h97ma1t3t905EeDw8mI,25322
|
|
221
|
-
yowasp_yosys/share/python3/sby_cmdline.py,sha256=
|
|
218
|
+
yowasp_yosys/share/python3/sby_cmdline.py,sha256=3LnuSE_Ymbmt_L7xI4qmi13t0gefTLDXj662d9agBus,5192
|
|
222
219
|
yowasp_yosys/share/python3/sby_core.py,sha256=gO6QmiGuYVUEIOZL6FpW8jOPqD2S6pIWTF-Svc5JQqE,60212
|
|
223
220
|
yowasp_yosys/share/python3/sby_design.py,sha256=5IbfwvGBkGeMuv7BcCd9eokYv989EHvw3eT3T22xPSw,9351
|
|
224
221
|
yowasp_yosys/share/python3/sby_engine_abc.py,sha256=CAn4bm2Re2RYwD6F6w4dXauVvoIQyVz3Qh56lI_kJQc,9428
|
|
@@ -245,7 +242,7 @@ yowasp_yosys/share/quicklogic/pp3/latches_map.v,sha256=UrGzRlwwITwA7mMlXhHlDFPiw
|
|
|
245
242
|
yowasp_yosys/share/quicklogic/pp3/lut_map.v,sha256=BmijMS4EqVQPP2BPo2zgKStKPPhRLTf5kbcAtGKZEVs,928
|
|
246
243
|
yowasp_yosys/share/quicklogic/qlf_k6n10f/TDP18K_FIFO.v,sha256=k1AVrwpOQ3vpxoWAbchRpmNbncYCYtVfDExz6VcmtBg,10404
|
|
247
244
|
yowasp_yosys/share/quicklogic/qlf_k6n10f/arith_map.v,sha256=Ea7aX3l71nFxP1Az5NHtca-ZPnQmUmUvlWI-tVl4Bkk,2560
|
|
248
|
-
yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v,sha256=
|
|
245
|
+
yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v,sha256=vHUFpM-aPX7tZfvOoWTM2Bc_ThrooIHtzqC7c_yyiCE,2551774
|
|
249
246
|
yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_map.v,sha256=Iqj4w3Vna6W80liLUtDhAQKwciQNZWX3aFr9FDBU5o4,103558
|
|
250
247
|
yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_sim.v,sha256=mJXEws9AvJLeUBr3eJzxTEvN7Y89zpkNsoR2tpjLu-w,339634
|
|
251
248
|
yowasp_yosys/share/quicklogic/qlf_k6n10f/cells_sim.v,sha256=70GVgjrXbld6c2yITFriyoJLqO8CAcHDyA8oUPfkItg,7347
|
|
@@ -294,8 +291,8 @@ yowasp_yosys/share/xilinx/xc5v_dsp_map.v,sha256=I4lg0RQ54fBBba_7NNvUgwS4tQ1yLIsU
|
|
|
294
291
|
yowasp_yosys/share/xilinx/xc6s_dsp_map.v,sha256=gTxHocB-Dn5G4BplWgri_tLhT6DIO2S0X-yu4iBKYyk,562
|
|
295
292
|
yowasp_yosys/share/xilinx/xc7_dsp_map.v,sha256=zrzreQi7mElrAMtrayxtiO_Bw00S6zsjSjSVcjmJPH0,884
|
|
296
293
|
yowasp_yosys/share/xilinx/xcu_dsp_map.v,sha256=gzCgl1emrHGcigVmU0nP0pW7dlhQ01SaWwXzHHcqt-o,882
|
|
297
|
-
yowasp_yosys-0.
|
|
298
|
-
yowasp_yosys-0.
|
|
299
|
-
yowasp_yosys-0.
|
|
300
|
-
yowasp_yosys-0.
|
|
301
|
-
yowasp_yosys-0.
|
|
294
|
+
yowasp_yosys-0.43.0.0.post751.dist-info/METADATA,sha256=n1Xu96KYN-uqjb57Y5VdeTv9oiXncqwEbHGN297Wx3g,2607
|
|
295
|
+
yowasp_yosys-0.43.0.0.post751.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
296
|
+
yowasp_yosys-0.43.0.0.post751.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
|
|
297
|
+
yowasp_yosys-0.43.0.0.post751.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
|
|
298
|
+
yowasp_yosys-0.43.0.0.post751.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
bram __MISTRAL_M20K_SDP
|
|
2
|
-
init 1 # TODO: Re-enable when I figure out how BRAM init works
|
|
3
|
-
abits 14 @D16384x1
|
|
4
|
-
dbits 1 @D16384x1
|
|
5
|
-
abits 13 @D8192x2
|
|
6
|
-
dbits 2 @D8192x2
|
|
7
|
-
abits 12 @D4096x4 @D4096x5
|
|
8
|
-
dbits 4 @D4096x4
|
|
9
|
-
dbits 5 @D4096x5
|
|
10
|
-
abits 11 @D2048x8 @D2048x10
|
|
11
|
-
dbits 8 @D2048x8
|
|
12
|
-
dbits 10 @D2048x10
|
|
13
|
-
abits 10 @D1024x16 @D1024x20
|
|
14
|
-
dbits 16 @D1024x16
|
|
15
|
-
dbits 20 @D1024x20
|
|
16
|
-
abits 9 @D512x32 @D512x40
|
|
17
|
-
dbits 32 @D512x32
|
|
18
|
-
dbits 40 @D512x40
|
|
19
|
-
groups 2
|
|
20
|
-
ports 1 1
|
|
21
|
-
wrmode 1 0
|
|
22
|
-
# read enable; write enable + byte enables (only for multiples of 8)
|
|
23
|
-
enable 1 1
|
|
24
|
-
transp 0 0
|
|
25
|
-
clocks 1 1
|
|
26
|
-
clkpol 1 1
|
|
27
|
-
endbram
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
match __MISTRAL_M20K_SDP
|
|
31
|
-
min efficiency 5
|
|
32
|
-
make_transp
|
|
33
|
-
endmatch
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module __MISTRAL_M20K_SDP(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN);
|
|
2
|
-
|
|
3
|
-
parameter CFG_ABITS = 10;
|
|
4
|
-
parameter CFG_DBITS = 20;
|
|
5
|
-
parameter CFG_ENABLE_A = 1;
|
|
6
|
-
parameter CFG_ENABLE_B = 1;
|
|
7
|
-
|
|
8
|
-
input CLK1;
|
|
9
|
-
input [CFG_ABITS-1:0] A1ADDR, B1ADDR;
|
|
10
|
-
input [CFG_DBITS-1:0] A1DATA;
|
|
11
|
-
output [CFG_DBITS-1:0] B1DATA;
|
|
12
|
-
input [CFG_ENABLE_A-1:0] A1EN, B1EN;
|
|
13
|
-
|
|
14
|
-
altsyncram #(
|
|
15
|
-
.operation_mode("dual_port"),
|
|
16
|
-
.ram_block_type("m20k"),
|
|
17
|
-
.widthad_a(CFG_ABITS),
|
|
18
|
-
.width_a(CFG_DBITS),
|
|
19
|
-
.widthad_b(CFG_ABITS),
|
|
20
|
-
.width_b(CFG_DBITS),
|
|
21
|
-
) _TECHMAP_REPLACE_ (
|
|
22
|
-
.address_a(A1ADDR),
|
|
23
|
-
.data_a(A1DATA),
|
|
24
|
-
.wren_a(A1EN),
|
|
25
|
-
.address_b(B1ADDR),
|
|
26
|
-
.q_b(B1DATA),
|
|
27
|
-
.clock0(CLK1),
|
|
28
|
-
.clock1(CLK1)
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
endmodule
|
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
`ifdef cyclonev
|
|
2
|
-
`define LCELL cyclonev_lcell_comb
|
|
3
|
-
`define MAC cyclonev_mac
|
|
4
|
-
`define MLAB cyclonev_mlab_cell
|
|
5
|
-
`define RAM_BLOCK cyclonev_ram_block
|
|
6
|
-
`define IBUF cyclonev_io_ibuf
|
|
7
|
-
`define OBUF cyclonev_io_obuf
|
|
8
|
-
`define CLKENA cyclonev_clkena
|
|
9
|
-
`endif
|
|
10
|
-
`ifdef arriav
|
|
11
|
-
`define LCELL arriav_lcell_comb
|
|
12
|
-
`define MAC arriav_mac
|
|
13
|
-
`define MLAB arriav_mlab_cell
|
|
14
|
-
`define RAM_BLOCK arriav_ram_block
|
|
15
|
-
`define IBUF arriav_io_ibuf
|
|
16
|
-
`define OBUF arriav_io_obuf
|
|
17
|
-
`define CLKENA arriav_clkena
|
|
18
|
-
`endif
|
|
19
|
-
`ifdef cyclone10gx
|
|
20
|
-
`define LCELL cyclone10gx_lcell_comb
|
|
21
|
-
`define MAC cyclone10gx_mac
|
|
22
|
-
`define MLAB cyclone10gx_mlab_cell
|
|
23
|
-
`define RAM_BLOCK cyclone10gx_ram_block
|
|
24
|
-
`define IBUF cyclone10gx_io_ibuf
|
|
25
|
-
`define OBUF cyclone10gx_io_obuf
|
|
26
|
-
`define CLKENA cyclone10gx_clkena
|
|
27
|
-
`endif
|
|
28
|
-
|
|
29
|
-
module __MISTRAL_VCC(output Q);
|
|
30
|
-
|
|
31
|
-
MISTRAL_ALUT2 #(.LUT(4'b1111)) _TECHMAP_REPLACE_ (.A(1'b1), .B(1'b1), .Q(Q));
|
|
32
|
-
|
|
33
|
-
endmodule
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
module __MISTRAL_GND(output Q);
|
|
37
|
-
|
|
38
|
-
MISTRAL_ALUT2 #(.LUT(4'b0000)) _TECHMAP_REPLACE_ (.A(1'b1), .B(1'b1), .Q(Q));
|
|
39
|
-
|
|
40
|
-
endmodule
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
module MISTRAL_FF(input DATAIN, CLK, ACLR, ENA, SCLR, SLOAD, SDATA, output reg Q);
|
|
44
|
-
|
|
45
|
-
dffeas #(.power_up("low"), .is_wysiwyg("true")) _TECHMAP_REPLACE_ (.d(DATAIN), .clk(CLK), .clrn(ACLR), .ena(ENA), .sclr(SCLR), .sload(SLOAD), .asdata(SDATA), .q(Q));
|
|
46
|
-
|
|
47
|
-
endmodule
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
module MISTRAL_ALUT6(input A, B, C, D, E, F, output Q);
|
|
51
|
-
parameter [63:0] LUT = 64'h0000_0000_0000_0000;
|
|
52
|
-
|
|
53
|
-
`LCELL #(.lut_mask(LUT)) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .datae(E), .dataf(F), .combout(Q));
|
|
54
|
-
|
|
55
|
-
endmodule
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
module MISTRAL_ALUT5(input A, B, C, D, E, output Q);
|
|
59
|
-
parameter [31:0] LUT = 32'h0000_0000;
|
|
60
|
-
|
|
61
|
-
`LCELL #(.lut_mask({2{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .datae(E), .combout(Q));
|
|
62
|
-
|
|
63
|
-
endmodule
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
module MISTRAL_ALUT4(input A, B, C, D, output Q);
|
|
67
|
-
parameter [15:0] LUT = 16'h0000;
|
|
68
|
-
|
|
69
|
-
`LCELL #(.lut_mask({4{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .combout(Q));
|
|
70
|
-
|
|
71
|
-
endmodule
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
module MISTRAL_ALUT3(input A, B, C, output Q);
|
|
75
|
-
parameter [7:0] LUT = 8'h00;
|
|
76
|
-
|
|
77
|
-
`LCELL #(.lut_mask({8{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .combout(Q));
|
|
78
|
-
|
|
79
|
-
endmodule
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
module MISTRAL_ALUT2(input A, B, output Q);
|
|
83
|
-
parameter [3:0] LUT = 4'h0;
|
|
84
|
-
|
|
85
|
-
`LCELL #(.lut_mask({16{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .combout(Q));
|
|
86
|
-
|
|
87
|
-
endmodule
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
module MISTRAL_NOT(input A, output Q);
|
|
91
|
-
|
|
92
|
-
NOT _TECHMAP_REPLACE_ (.IN(A), .OUT(Q));
|
|
93
|
-
|
|
94
|
-
endmodule
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
module MISTRAL_ALUT_ARITH(input A, B, C, D0, D1, CI, output SO, CO);
|
|
98
|
-
parameter LUT0 = 16'h0000;
|
|
99
|
-
parameter LUT1 = 16'h0000;
|
|
100
|
-
|
|
101
|
-
`LCELL #(.lut_mask({16'h0, LUT1, 16'h0, LUT0})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D0), .dataf(D1), .cin(CI), .sumout(SO), .cout(CO));
|
|
102
|
-
|
|
103
|
-
endmodule
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, CLK1, input [4:0] B1ADDR, output B1DATA);
|
|
107
|
-
|
|
108
|
-
parameter _TECHMAP_CELLNAME_ = "";
|
|
109
|
-
|
|
110
|
-
// Here we get to an unfortunate situation. The cell has a mem_init0 parameter,
|
|
111
|
-
// which takes in a hexadecimal string that could be used to initialise RAM.
|
|
112
|
-
// In the vendor simulation models, this appears to work fine, but Quartus,
|
|
113
|
-
// either intentionally or not, forgets about this parameter and initialises the
|
|
114
|
-
// RAM to zero.
|
|
115
|
-
//
|
|
116
|
-
// Because of this, RAM initialisation is presently disabled, but the source
|
|
117
|
-
// used to generate mem_init0 is kept (commented out) in case this gets fixed
|
|
118
|
-
// or an undocumented way to get Quartus to initialise from mem_init0 is found.
|
|
119
|
-
|
|
120
|
-
`MLAB #(
|
|
121
|
-
.logical_ram_name(_TECHMAP_CELLNAME_),
|
|
122
|
-
.logical_ram_depth(32),
|
|
123
|
-
.logical_ram_width(1),
|
|
124
|
-
.mixed_port_feed_through_mode("Dont Care"),
|
|
125
|
-
.first_bit_number(0),
|
|
126
|
-
.first_address(0),
|
|
127
|
-
.last_address(31),
|
|
128
|
-
.address_width(5),
|
|
129
|
-
.data_width(1),
|
|
130
|
-
.byte_enable_mask_width(1),
|
|
131
|
-
.port_b_data_out_clock("NONE"),
|
|
132
|
-
// .mem_init0($sformatf("%08x", INIT))
|
|
133
|
-
) _TECHMAP_REPLACE_ (
|
|
134
|
-
.portaaddr(A1ADDR),
|
|
135
|
-
.portadatain(A1DATA),
|
|
136
|
-
.portbaddr(B1ADDR),
|
|
137
|
-
.portbdataout(B1DATA),
|
|
138
|
-
.ena0(A1EN),
|
|
139
|
-
.clk0(CLK1)
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
endmodule
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
module MISTRAL_M10K(A1ADDR, A1DATA, A1EN, CLK1, B1ADDR, B1DATA, B1EN);
|
|
146
|
-
|
|
147
|
-
parameter CFG_ABITS = 10;
|
|
148
|
-
parameter CFG_DBITS = 10;
|
|
149
|
-
|
|
150
|
-
parameter _TECHMAP_CELLNAME_ = "";
|
|
151
|
-
|
|
152
|
-
input [CFG_ABITS-1:0] A1ADDR, B1ADDR;
|
|
153
|
-
input [CFG_DBITS-1:0] A1DATA;
|
|
154
|
-
input CLK1, A1EN, B1EN;
|
|
155
|
-
output [CFG_DBITS-1:0] B1DATA;
|
|
156
|
-
|
|
157
|
-
// Much like the MLAB, the M10K has mem_init[01234] parameters which would let
|
|
158
|
-
// you initialise the RAM cell via hex literals. If they were implemented.
|
|
159
|
-
|
|
160
|
-
// Since the MISTRAL_M10K block has an inverted write-enable (like the real hardware)
|
|
161
|
-
// but the Quartus primitive expects a normal write-enable, we add an inverter.
|
|
162
|
-
wire A1EN_N;
|
|
163
|
-
NOT wren_inv (.IN(A1EN), .OUT(A1EN_N));
|
|
164
|
-
|
|
165
|
-
`RAM_BLOCK #(
|
|
166
|
-
.operation_mode("dual_port"),
|
|
167
|
-
.logical_ram_name(_TECHMAP_CELLNAME_),
|
|
168
|
-
.port_a_address_width(CFG_ABITS),
|
|
169
|
-
.port_a_data_width(CFG_DBITS),
|
|
170
|
-
.port_a_logical_ram_depth(2**CFG_ABITS),
|
|
171
|
-
.port_a_logical_ram_width(CFG_DBITS),
|
|
172
|
-
.port_a_first_address(0),
|
|
173
|
-
.port_a_last_address(2**CFG_ABITS - 1),
|
|
174
|
-
.port_a_first_bit_number(0),
|
|
175
|
-
.port_b_address_width(CFG_ABITS),
|
|
176
|
-
.port_b_data_width(CFG_DBITS),
|
|
177
|
-
.port_b_logical_ram_depth(2**CFG_ABITS),
|
|
178
|
-
.port_b_logical_ram_width(CFG_DBITS),
|
|
179
|
-
.port_b_first_address(0),
|
|
180
|
-
.port_b_last_address(2**CFG_ABITS - 1),
|
|
181
|
-
.port_b_first_bit_number(0),
|
|
182
|
-
.port_b_address_clock("clock0"),
|
|
183
|
-
.port_b_read_enable_clock("clock0")
|
|
184
|
-
) ram_block (
|
|
185
|
-
.portaaddr(A1ADDR),
|
|
186
|
-
.portadatain(A1DATA),
|
|
187
|
-
.portawe(A1EN_N),
|
|
188
|
-
.portbaddr(B1ADDR),
|
|
189
|
-
.portbdataout(B1DATA),
|
|
190
|
-
.portbre(B1EN),
|
|
191
|
-
.clk0(CLK1)
|
|
192
|
-
);
|
|
193
|
-
|
|
194
|
-
endmodule
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
module MISTRAL_MUL27X27(input [26:0] A, B, output [53:0] Y);
|
|
198
|
-
|
|
199
|
-
parameter A_SIGNED = 1;
|
|
200
|
-
parameter B_SIGNED = 1;
|
|
201
|
-
|
|
202
|
-
`MAC #(
|
|
203
|
-
.ax_width(27),
|
|
204
|
-
.signed_max(A_SIGNED ? "true" : "false"),
|
|
205
|
-
.ay_scan_in_width(27),
|
|
206
|
-
.signed_may(B_SIGNED ? "true" : "false"),
|
|
207
|
-
.result_a_width(54),
|
|
208
|
-
.operation_mode("M27x27")
|
|
209
|
-
) _TECHMAP_REPLACE_ (
|
|
210
|
-
.ax(A),
|
|
211
|
-
.ay(B),
|
|
212
|
-
.resulta(Y)
|
|
213
|
-
);
|
|
214
|
-
|
|
215
|
-
endmodule
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
module MISTRAL_MUL18X18(input [17:0] A, B, output [35:0] Y);
|
|
219
|
-
|
|
220
|
-
parameter A_SIGNED = 1;
|
|
221
|
-
parameter B_SIGNED = 1;
|
|
222
|
-
|
|
223
|
-
`MAC #(
|
|
224
|
-
.ax_width(18),
|
|
225
|
-
.signed_max(A_SIGNED ? "true" : "false"),
|
|
226
|
-
.ay_scan_in_width(18),
|
|
227
|
-
.signed_may(B_SIGNED ? "true" : "false"),
|
|
228
|
-
.result_a_width(36),
|
|
229
|
-
.operation_mode("M18x18_FULL")
|
|
230
|
-
) _TECHMAP_REPLACE_ (
|
|
231
|
-
.ax(A),
|
|
232
|
-
.ay(B),
|
|
233
|
-
.resulta(Y)
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
endmodule
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
module MISTRAL_MUL9X9(input [8:0] A, B, output [17:0] Y);
|
|
240
|
-
|
|
241
|
-
parameter A_SIGNED = 1;
|
|
242
|
-
parameter B_SIGNED = 1;
|
|
243
|
-
|
|
244
|
-
`MAC #(
|
|
245
|
-
.ax_width(9),
|
|
246
|
-
.signed_max(A_SIGNED ? "true" : "false"),
|
|
247
|
-
.ay_scan_in_width(9),
|
|
248
|
-
.signed_may(B_SIGNED ? "true" : "false"),
|
|
249
|
-
.result_a_width(18),
|
|
250
|
-
.operation_mode("M9x9")
|
|
251
|
-
) _TECHMAP_REPLACE_ (
|
|
252
|
-
.ax(A),
|
|
253
|
-
.ay(B),
|
|
254
|
-
.resulta(Y)
|
|
255
|
-
);
|
|
256
|
-
|
|
257
|
-
endmodule
|
|
258
|
-
|
|
259
|
-
module MISTRAL_IB(input PAD, output O);
|
|
260
|
-
`IBUF #(
|
|
261
|
-
.bus_hold("false"),
|
|
262
|
-
.differential_mode("false")
|
|
263
|
-
) _TECHMAP_REPLACE_ (
|
|
264
|
-
.i(PAD),
|
|
265
|
-
.o(O)
|
|
266
|
-
);
|
|
267
|
-
endmodule
|
|
268
|
-
|
|
269
|
-
module MISTRAL_OB(output PAD, input I, OE);
|
|
270
|
-
`OBUF #(
|
|
271
|
-
.bus_hold("false"),
|
|
272
|
-
.differential_mode("false")
|
|
273
|
-
) _TECHMAP_REPLACE_ (
|
|
274
|
-
.i(I),
|
|
275
|
-
.o(PAD),
|
|
276
|
-
.oe(OE)
|
|
277
|
-
);
|
|
278
|
-
endmodule
|
|
279
|
-
|
|
280
|
-
module MISTRAL_IO(output PAD, input I, OE, output O);
|
|
281
|
-
`IBUF #(
|
|
282
|
-
.bus_hold("false"),
|
|
283
|
-
.differential_mode("false")
|
|
284
|
-
) ibuf (
|
|
285
|
-
.i(PAD),
|
|
286
|
-
.o(O)
|
|
287
|
-
);
|
|
288
|
-
|
|
289
|
-
`OBUF #(
|
|
290
|
-
.bus_hold("false"),
|
|
291
|
-
.differential_mode("false")
|
|
292
|
-
) obuf (
|
|
293
|
-
.i(I),
|
|
294
|
-
.o(PAD),
|
|
295
|
-
.oe(OE)
|
|
296
|
-
);
|
|
297
|
-
endmodule
|
|
298
|
-
|
|
299
|
-
module MISTRAL_CLKBUF (input A, output Q);
|
|
300
|
-
`CLKENA #(
|
|
301
|
-
.clock_type("auto"),
|
|
302
|
-
.ena_register_mode("always enabled"),
|
|
303
|
-
.ena_register_power_up("high"),
|
|
304
|
-
.disable_mode("low"),
|
|
305
|
-
.test_syn("high")
|
|
306
|
-
) _TECHMAP_REPLACE_ (
|
|
307
|
-
.inclk(A),
|
|
308
|
-
.ena(1'b1),
|
|
309
|
-
.outclk(Q)
|
|
310
|
-
);
|
|
311
|
-
endmodule
|
|
File without changes
|
{yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yowasp_yosys-0.41.0.0.post722.dist-info → yowasp_yosys-0.43.0.0.post751.dist-info}/top_level.txt
RENAMED
|
File without changes
|