yowasp-yosys 0.52.0.0.post894__py3-none-any.whl → 0.53.0.0.post912__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/share/ecp5/cells_sim.v +1 -1
- yowasp_yosys/share/gatemate/brams.txt +0 -1
- yowasp_yosys/share/gatemate/cells_sim.v +3 -3
- yowasp_yosys/share/greenpak4/cells_sim_digital.v +31 -31
- yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h +7 -2
- yowasp_yosys/share/include/kernel/consteval.h +1 -1
- yowasp_yosys/share/include/kernel/macc.h +28 -28
- yowasp_yosys/share/include/kernel/rtlil.h +186 -32
- yowasp_yosys/yosys.wasm +0 -0
- {yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/METADATA +1 -1
- {yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/RECORD +14 -14
- {yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/WHEEL +1 -1
- {yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/entry_points.txt +0 -0
- {yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/top_level.txt +0 -0
|
@@ -292,10 +292,10 @@ module CC_DLT #(
|
|
|
292
292
|
always @(*)
|
|
293
293
|
begin
|
|
294
294
|
if (sr) begin
|
|
295
|
-
Q
|
|
295
|
+
Q = SR_VAL;
|
|
296
296
|
end
|
|
297
297
|
else if (en) begin
|
|
298
|
-
Q
|
|
298
|
+
Q = D;
|
|
299
299
|
end
|
|
300
300
|
end
|
|
301
301
|
|
|
@@ -407,7 +407,7 @@ module CC_MULT #(
|
|
|
407
407
|
);
|
|
408
408
|
always @(*)
|
|
409
409
|
begin
|
|
410
|
-
P
|
|
410
|
+
P = A * B;
|
|
411
411
|
end
|
|
412
412
|
endmodule
|
|
413
413
|
|
|
@@ -48,7 +48,7 @@ module GP_COUNT14(input CLK, input wire RST, output reg OUT);
|
|
|
48
48
|
|
|
49
49
|
//Combinatorially output underflow flag whenever we wrap low
|
|
50
50
|
always @(*) begin
|
|
51
|
-
OUT
|
|
51
|
+
OUT = (count == 14'h0);
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
|
|
@@ -133,10 +133,10 @@ module GP_COUNT14_ADV(input CLK, input RST, output reg OUT,
|
|
|
133
133
|
//Combinatorially output underflow flag whenever we wrap low
|
|
134
134
|
always @(*) begin
|
|
135
135
|
if(UP)
|
|
136
|
-
OUT
|
|
136
|
+
OUT = (count == 14'h3fff);
|
|
137
137
|
else
|
|
138
|
-
OUT
|
|
139
|
-
POUT
|
|
138
|
+
OUT = (count == 14'h0);
|
|
139
|
+
POUT = count[7:0];
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
|
|
@@ -272,10 +272,10 @@ module GP_COUNT8_ADV(input CLK, input RST, output reg OUT,
|
|
|
272
272
|
//Combinatorially output underflow flag whenever we wrap low
|
|
273
273
|
always @(*) begin
|
|
274
274
|
if(UP)
|
|
275
|
-
OUT
|
|
275
|
+
OUT = (count == 8'hff);
|
|
276
276
|
else
|
|
277
|
-
OUT
|
|
278
|
-
POUT
|
|
277
|
+
OUT = (count == 8'h0);
|
|
278
|
+
POUT = count;
|
|
279
279
|
end
|
|
280
280
|
|
|
281
281
|
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
|
|
@@ -413,8 +413,8 @@ module GP_COUNT8(
|
|
|
413
413
|
|
|
414
414
|
//Combinatorially output underflow flag whenever we wrap low
|
|
415
415
|
always @(*) begin
|
|
416
|
-
OUT
|
|
417
|
-
POUT
|
|
416
|
+
OUT = (count == 8'h0);
|
|
417
|
+
POUT = count;
|
|
418
418
|
end
|
|
419
419
|
|
|
420
420
|
//POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm.
|
|
@@ -488,23 +488,23 @@ module GP_DCMPMUX(input[1:0] SEL, input[7:0] IN0, input[7:0] IN1, input[7:0] IN2
|
|
|
488
488
|
always @(*) begin
|
|
489
489
|
case(SEL)
|
|
490
490
|
2'd00: begin
|
|
491
|
-
OUTA
|
|
492
|
-
OUTB
|
|
491
|
+
OUTA = IN0;
|
|
492
|
+
OUTB = IN3;
|
|
493
493
|
end
|
|
494
494
|
|
|
495
495
|
2'd01: begin
|
|
496
|
-
OUTA
|
|
497
|
-
OUTB
|
|
496
|
+
OUTA = IN1;
|
|
497
|
+
OUTB = IN2;
|
|
498
498
|
end
|
|
499
499
|
|
|
500
500
|
2'd02: begin
|
|
501
|
-
OUTA
|
|
502
|
-
OUTB
|
|
501
|
+
OUTA = IN2;
|
|
502
|
+
OUTB = IN1;
|
|
503
503
|
end
|
|
504
504
|
|
|
505
505
|
2'd03: begin
|
|
506
|
-
OUTA
|
|
507
|
-
OUTB
|
|
506
|
+
OUTA = IN3;
|
|
507
|
+
OUTB = IN0;
|
|
508
508
|
end
|
|
509
509
|
|
|
510
510
|
endcase
|
|
@@ -635,7 +635,7 @@ module GP_DLATCH(input D, input nCLK, output reg Q);
|
|
|
635
635
|
initial Q = INIT;
|
|
636
636
|
always @(*) begin
|
|
637
637
|
if(!nCLK)
|
|
638
|
-
Q
|
|
638
|
+
Q = D;
|
|
639
639
|
end
|
|
640
640
|
endmodule
|
|
641
641
|
|
|
@@ -644,7 +644,7 @@ module GP_DLATCHI(input D, input nCLK, output reg nQ);
|
|
|
644
644
|
initial nQ = INIT;
|
|
645
645
|
always @(*) begin
|
|
646
646
|
if(!nCLK)
|
|
647
|
-
nQ
|
|
647
|
+
nQ = ~D;
|
|
648
648
|
end
|
|
649
649
|
endmodule
|
|
650
650
|
|
|
@@ -653,9 +653,9 @@ module GP_DLATCHR(input D, input nCLK, input nRST, output reg Q);
|
|
|
653
653
|
initial Q = INIT;
|
|
654
654
|
always @(*) begin
|
|
655
655
|
if(!nRST)
|
|
656
|
-
Q
|
|
656
|
+
Q = 1'b0;
|
|
657
657
|
else if(!nCLK)
|
|
658
|
-
Q
|
|
658
|
+
Q = D;
|
|
659
659
|
end
|
|
660
660
|
endmodule
|
|
661
661
|
|
|
@@ -664,9 +664,9 @@ module GP_DLATCHRI(input D, input nCLK, input nRST, output reg nQ);
|
|
|
664
664
|
initial nQ = INIT;
|
|
665
665
|
always @(*) begin
|
|
666
666
|
if(!nRST)
|
|
667
|
-
nQ
|
|
667
|
+
nQ = 1'b1;
|
|
668
668
|
else if(!nCLK)
|
|
669
|
-
nQ
|
|
669
|
+
nQ = ~D;
|
|
670
670
|
end
|
|
671
671
|
endmodule
|
|
672
672
|
|
|
@@ -675,9 +675,9 @@ module GP_DLATCHS(input D, input nCLK, input nSET, output reg Q);
|
|
|
675
675
|
initial Q = INIT;
|
|
676
676
|
always @(*) begin
|
|
677
677
|
if(!nSET)
|
|
678
|
-
Q
|
|
678
|
+
Q = 1'b1;
|
|
679
679
|
else if(!nCLK)
|
|
680
|
-
Q
|
|
680
|
+
Q = D;
|
|
681
681
|
end
|
|
682
682
|
endmodule
|
|
683
683
|
|
|
@@ -686,9 +686,9 @@ module GP_DLATCHSI(input D, input nCLK, input nSET, output reg nQ);
|
|
|
686
686
|
initial nQ = INIT;
|
|
687
687
|
always @(*) begin
|
|
688
688
|
if(!nSET)
|
|
689
|
-
nQ
|
|
689
|
+
nQ = 1'b0;
|
|
690
690
|
else if(!nCLK)
|
|
691
|
-
nQ
|
|
691
|
+
nQ = ~D;
|
|
692
692
|
end
|
|
693
693
|
endmodule
|
|
694
694
|
|
|
@@ -698,9 +698,9 @@ module GP_DLATCHSR(input D, input nCLK, input nSR, output reg Q);
|
|
|
698
698
|
initial Q = INIT;
|
|
699
699
|
always @(*) begin
|
|
700
700
|
if(!nSR)
|
|
701
|
-
Q
|
|
701
|
+
Q = SRMODE;
|
|
702
702
|
else if(!nCLK)
|
|
703
|
-
Q
|
|
703
|
+
Q = D;
|
|
704
704
|
end
|
|
705
705
|
endmodule
|
|
706
706
|
|
|
@@ -710,9 +710,9 @@ module GP_DLATCHSRI(input D, input nCLK, input nSR, output reg nQ);
|
|
|
710
710
|
initial nQ = INIT;
|
|
711
711
|
always @(*) begin
|
|
712
712
|
if(!nSR)
|
|
713
|
-
nQ
|
|
713
|
+
nQ = ~SRMODE;
|
|
714
714
|
else if(!nCLK)
|
|
715
|
-
nQ
|
|
715
|
+
nQ = ~D;
|
|
716
716
|
end
|
|
717
717
|
endmodule
|
|
718
718
|
|
|
@@ -498,6 +498,11 @@ struct value : public expr_base<value<Bits>> {
|
|
|
498
498
|
return result;
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
+
CXXRTL_ALWAYS_INLINE
|
|
502
|
+
value<Bits> bwmux(const value<Bits> &b, const value<Bits> &s) const {
|
|
503
|
+
return (bit_and(s.bit_not())).bit_or(b.bit_and(s));
|
|
504
|
+
}
|
|
505
|
+
|
|
501
506
|
template<size_t ResultBits, size_t SelBits>
|
|
502
507
|
value<ResultBits> demux(const value<SelBits> &sel) const {
|
|
503
508
|
static_assert(Bits << SelBits == ResultBits, "invalid sizes used in demux()");
|
|
@@ -1764,7 +1769,7 @@ value<BitsY> shr_uu(const value<BitsA> &a, const value<BitsB> &b) {
|
|
|
1764
1769
|
template<size_t BitsY, size_t BitsA, size_t BitsB>
|
|
1765
1770
|
CXXRTL_ALWAYS_INLINE
|
|
1766
1771
|
value<BitsY> shr_su(const value<BitsA> &a, const value<BitsB> &b) {
|
|
1767
|
-
return a.
|
|
1772
|
+
return a.template scast<BitsY>().shr(b);
|
|
1768
1773
|
}
|
|
1769
1774
|
|
|
1770
1775
|
template<size_t BitsY, size_t BitsA, size_t BitsB>
|
|
@@ -2005,7 +2010,7 @@ std::pair<value<BitsY>, value<BitsY>> divmod_uu(const value<BitsA> &a, const val
|
|
|
2005
2010
|
value<Bits> quotient;
|
|
2006
2011
|
value<Bits> remainder;
|
|
2007
2012
|
value<Bits> dividend = a.template zext<Bits>();
|
|
2008
|
-
value<Bits> divisor
|
|
2013
|
+
value<Bits> divisor = b.template trunc<BitsB>().template zext<Bits>();
|
|
2009
2014
|
std::tie(quotient, remainder) = dividend.udivmod(divisor);
|
|
2010
2015
|
return {quotient.template trunc<BitsY>(), remainder.template trunc<BitsY>()};
|
|
2011
2016
|
}
|
|
@@ -26,18 +26,18 @@ YOSYS_NAMESPACE_BEGIN
|
|
|
26
26
|
|
|
27
27
|
struct Macc
|
|
28
28
|
{
|
|
29
|
-
struct
|
|
29
|
+
struct term_t {
|
|
30
30
|
RTLIL::SigSpec in_a, in_b;
|
|
31
31
|
bool is_signed, do_subtract;
|
|
32
32
|
};
|
|
33
|
-
std::vector<
|
|
33
|
+
std::vector<term_t> terms;
|
|
34
34
|
|
|
35
35
|
void optimize(int width)
|
|
36
36
|
{
|
|
37
|
-
std::vector<
|
|
37
|
+
std::vector<term_t> new_terms;
|
|
38
38
|
RTLIL::Const off(0, width);
|
|
39
39
|
|
|
40
|
-
for (auto &port :
|
|
40
|
+
for (auto &port : terms)
|
|
41
41
|
{
|
|
42
42
|
if (GetSize(port.in_a) == 0 && GetSize(port.in_b) == 0)
|
|
43
43
|
continue;
|
|
@@ -68,25 +68,25 @@ struct Macc
|
|
|
68
68
|
port.in_b.remove(GetSize(port.in_b)-1);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
new_terms.push_back(port);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
if (off.as_bool()) {
|
|
75
|
-
|
|
75
|
+
term_t port;
|
|
76
76
|
port.in_a = off;
|
|
77
77
|
port.is_signed = false;
|
|
78
78
|
port.do_subtract = false;
|
|
79
|
-
|
|
79
|
+
new_terms.push_back(port);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
new_terms.swap(terms);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
void from_cell_v1(RTLIL::Cell *cell)
|
|
86
86
|
{
|
|
87
87
|
RTLIL::SigSpec port_a = cell->getPort(ID::A);
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
terms.clear();
|
|
90
90
|
|
|
91
91
|
auto config_bits = cell->getParam(ID::CONFIG);
|
|
92
92
|
int config_cursor = 0;
|
|
@@ -105,7 +105,7 @@ struct Macc
|
|
|
105
105
|
{
|
|
106
106
|
log_assert(config_cursor + 2 + 2*num_bits <= config_width);
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
term_t this_port;
|
|
109
109
|
this_port.is_signed = config_bits[config_cursor++] == State::S1;
|
|
110
110
|
this_port.do_subtract = config_bits[config_cursor++] == State::S1;
|
|
111
111
|
|
|
@@ -126,11 +126,11 @@ struct Macc
|
|
|
126
126
|
port_a_cursor += size_b;
|
|
127
127
|
|
|
128
128
|
if (size_a || size_b)
|
|
129
|
-
|
|
129
|
+
terms.push_back(this_port);
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
for (auto bit : cell->getPort(ID::B))
|
|
133
|
-
|
|
133
|
+
terms.push_back(term_t{{bit}, {}, false, false});
|
|
134
134
|
|
|
135
135
|
log_assert(config_cursor == config_width);
|
|
136
136
|
log_assert(port_a_cursor == GetSize(port_a));
|
|
@@ -148,7 +148,7 @@ struct Macc
|
|
|
148
148
|
RTLIL::SigSpec port_b = cell->getPort(ID::B);
|
|
149
149
|
RTLIL::SigSpec port_c = cell->getPort(ID::C);
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
terms.clear();
|
|
152
152
|
|
|
153
153
|
int nproducts = cell->getParam(ID::NPRODUCTS).as_int();
|
|
154
154
|
const Const &product_neg = cell->getParam(ID::PRODUCT_NEGATED);
|
|
@@ -158,7 +158,7 @@ struct Macc
|
|
|
158
158
|
const Const &b_signed = cell->getParam(ID::B_SIGNED);
|
|
159
159
|
int ai = 0, bi = 0;
|
|
160
160
|
for (int i = 0; i < nproducts; i++) {
|
|
161
|
-
|
|
161
|
+
term_t term;
|
|
162
162
|
|
|
163
163
|
log_assert(a_signed[i] == b_signed[i]);
|
|
164
164
|
term.is_signed = (a_signed[i] == State::S1);
|
|
@@ -171,7 +171,7 @@ struct Macc
|
|
|
171
171
|
bi += b_width;
|
|
172
172
|
term.do_subtract = (product_neg[i] == State::S1);
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
terms.push_back(term);
|
|
175
175
|
}
|
|
176
176
|
log_assert(port_a.size() == ai);
|
|
177
177
|
log_assert(port_b.size() == bi);
|
|
@@ -182,7 +182,7 @@ struct Macc
|
|
|
182
182
|
const Const &c_signed = cell->getParam(ID::C_SIGNED);
|
|
183
183
|
int ci = 0;
|
|
184
184
|
for (int i = 0; i < naddends; i++) {
|
|
185
|
-
|
|
185
|
+
term_t term;
|
|
186
186
|
|
|
187
187
|
term.is_signed = (c_signed[i] == State::S1);
|
|
188
188
|
int c_width = c_widths.extract(16 * i, 16).as_int(false);
|
|
@@ -191,7 +191,7 @@ struct Macc
|
|
|
191
191
|
ci += c_width;
|
|
192
192
|
term.do_subtract = (addend_neg[i] == State::S1);
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
terms.push_back(term);
|
|
195
195
|
}
|
|
196
196
|
log_assert(port_c.size() == ci);
|
|
197
197
|
}
|
|
@@ -205,23 +205,23 @@ struct Macc
|
|
|
205
205
|
Const c_signed, c_widths, addend_negated;
|
|
206
206
|
SigSpec a, b, c;
|
|
207
207
|
|
|
208
|
-
for (int i = 0; i < (int)
|
|
209
|
-
SigSpec term_a =
|
|
208
|
+
for (int i = 0; i < (int) terms.size(); i++) {
|
|
209
|
+
SigSpec term_a = terms[i].in_a, term_b = terms[i].in_b;
|
|
210
210
|
|
|
211
211
|
if (term_b.empty()) {
|
|
212
212
|
// addend
|
|
213
213
|
c_widths.append(Const(term_a.size(), 16));
|
|
214
|
-
c_signed.append(
|
|
215
|
-
addend_negated.append(
|
|
214
|
+
c_signed.append(terms[i].is_signed ? RTLIL::S1 : RTLIL::S0);
|
|
215
|
+
addend_negated.append(terms[i].do_subtract ? RTLIL::S1 : RTLIL::S0);
|
|
216
216
|
c.append(term_a);
|
|
217
217
|
naddends++;
|
|
218
218
|
} else {
|
|
219
219
|
// product
|
|
220
220
|
a_widths.append(Const(term_a.size(), 16));
|
|
221
221
|
b_widths.append(Const(term_b.size(), 16));
|
|
222
|
-
a_signed.append(
|
|
223
|
-
b_signed.append(
|
|
224
|
-
product_negated.append(
|
|
222
|
+
a_signed.append(terms[i].is_signed ? RTLIL::S1 : RTLIL::S0);
|
|
223
|
+
b_signed.append(terms[i].is_signed ? RTLIL::S1 : RTLIL::S0);
|
|
224
|
+
product_negated.append(terms[i].do_subtract ? RTLIL::S1 : RTLIL::S0);
|
|
225
225
|
a.append(term_a);
|
|
226
226
|
b.append(term_b);
|
|
227
227
|
nproducts++;
|
|
@@ -265,7 +265,7 @@ struct Macc
|
|
|
265
265
|
for (auto &bit : result.bits())
|
|
266
266
|
bit = State::S0;
|
|
267
267
|
|
|
268
|
-
for (auto &port :
|
|
268
|
+
for (auto &port : terms)
|
|
269
269
|
{
|
|
270
270
|
if (!port.in_a.is_fully_const() || !port.in_b.is_fully_const())
|
|
271
271
|
return false;
|
|
@@ -287,9 +287,9 @@ struct Macc
|
|
|
287
287
|
|
|
288
288
|
bool is_simple_product()
|
|
289
289
|
{
|
|
290
|
-
return
|
|
291
|
-
!
|
|
292
|
-
!
|
|
290
|
+
return terms.size() == 1 &&
|
|
291
|
+
!terms[0].in_b.empty() &&
|
|
292
|
+
!terms[0].do_subtract;
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
Macc(RTLIL::Cell *cell = nullptr)
|
|
@@ -56,8 +56,33 @@ namespace RTLIL
|
|
|
56
56
|
CONST_FLAG_REAL = 4 // only used for parameters
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
+
enum SelectPartials : unsigned char {
|
|
60
|
+
SELECT_ALL = 0, // include partial modules
|
|
61
|
+
SELECT_WHOLE_ONLY = 1, // ignore partial modules
|
|
62
|
+
SELECT_WHOLE_WARN = 2, // call log_warning on partial module
|
|
63
|
+
SELECT_WHOLE_ERR = 3, // call log_error on partial module
|
|
64
|
+
SELECT_WHOLE_CMDERR = 4 // call log_cmd_error on partial module
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
enum SelectBoxes : unsigned char {
|
|
68
|
+
SB_ALL = 0, // include boxed modules
|
|
69
|
+
SB_WARN = 1, // helper for log_warning (not for direct use)
|
|
70
|
+
SB_ERR = 2, // helper for log_error (not for direct use)
|
|
71
|
+
SB_CMDERR = 3, // helper for log_cmd_error (not for direct use)
|
|
72
|
+
SB_UNBOXED_ONLY = 4, // ignore boxed modules
|
|
73
|
+
SB_UNBOXED_WARN = 5, // call log_warning on boxed module
|
|
74
|
+
SB_UNBOXED_ERR = 6, // call log_error on boxed module
|
|
75
|
+
SB_UNBOXED_CMDERR = 7, // call log_cmd_error on boxed module
|
|
76
|
+
SB_INCL_WB = 8, // helper for white boxes (not for direct use)
|
|
77
|
+
SB_EXCL_BB_ONLY = 12, // ignore black boxes, but not white boxes
|
|
78
|
+
SB_EXCL_BB_WARN = 13, // call log_warning on black boxed module
|
|
79
|
+
SB_EXCL_BB_ERR = 14, // call log_error on black boxed module
|
|
80
|
+
SB_EXCL_BB_CMDERR = 15 // call log_cmd_error on black boxed module
|
|
81
|
+
};
|
|
82
|
+
|
|
59
83
|
struct Const;
|
|
60
84
|
struct AttrObject;
|
|
85
|
+
struct NamedObject;
|
|
61
86
|
struct Selection;
|
|
62
87
|
struct Monitor;
|
|
63
88
|
struct Design;
|
|
@@ -869,6 +894,11 @@ struct RTLIL::AttrObject
|
|
|
869
894
|
vector<int> get_intvec_attribute(const RTLIL::IdString &id) const;
|
|
870
895
|
};
|
|
871
896
|
|
|
897
|
+
struct RTLIL::NamedObject : public RTLIL::AttrObject
|
|
898
|
+
{
|
|
899
|
+
RTLIL::IdString name;
|
|
900
|
+
};
|
|
901
|
+
|
|
872
902
|
struct RTLIL::SigChunk
|
|
873
903
|
{
|
|
874
904
|
RTLIL::Wire *wire;
|
|
@@ -1134,32 +1164,94 @@ public:
|
|
|
1134
1164
|
|
|
1135
1165
|
struct RTLIL::Selection
|
|
1136
1166
|
{
|
|
1167
|
+
// selection includes boxed modules
|
|
1168
|
+
bool selects_boxes;
|
|
1169
|
+
// selection covers full design, including boxed modules
|
|
1170
|
+
bool complete_selection;
|
|
1171
|
+
// selection covers full design, not including boxed modules
|
|
1137
1172
|
bool full_selection;
|
|
1138
1173
|
pool<RTLIL::IdString> selected_modules;
|
|
1139
1174
|
dict<RTLIL::IdString, pool<RTLIL::IdString>> selected_members;
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1175
|
+
RTLIL::Design *current_design;
|
|
1176
|
+
|
|
1177
|
+
// create a new selection
|
|
1178
|
+
Selection(
|
|
1179
|
+
// should the selection cover the full design
|
|
1180
|
+
bool full = true,
|
|
1181
|
+
// should the selection include boxed modules
|
|
1182
|
+
bool boxes = false,
|
|
1183
|
+
// the design to select from
|
|
1184
|
+
RTLIL::Design *design = nullptr
|
|
1185
|
+
) :
|
|
1186
|
+
selects_boxes(boxes), complete_selection(full && boxes), full_selection(full && !boxes), current_design(design) { }
|
|
1187
|
+
|
|
1188
|
+
// checks if the given module exists in the current design and is a
|
|
1189
|
+
// boxed module, warning the user if the current design is not set
|
|
1190
|
+
bool boxed_module(const RTLIL::IdString &mod_name) const;
|
|
1191
|
+
|
|
1192
|
+
// checks if the given module is included in this selection
|
|
1143
1193
|
bool selected_module(const RTLIL::IdString &mod_name) const;
|
|
1194
|
+
|
|
1195
|
+
// checks if the given module is wholly included in this selection,
|
|
1196
|
+
// i.e. not partially selected
|
|
1144
1197
|
bool selected_whole_module(const RTLIL::IdString &mod_name) const;
|
|
1198
|
+
|
|
1199
|
+
// checks if the given member from the given module is included in this
|
|
1200
|
+
// selection
|
|
1145
1201
|
bool selected_member(const RTLIL::IdString &mod_name, const RTLIL::IdString &memb_name) const;
|
|
1202
|
+
|
|
1203
|
+
// optimizes this selection for the given design by:
|
|
1204
|
+
// - removing non-existent modules and members, any boxed modules and
|
|
1205
|
+
// their members (if selection does not include boxes), and any
|
|
1206
|
+
// partially selected modules with no selected members;
|
|
1207
|
+
// - marking partially selected modules as wholly selected if all
|
|
1208
|
+
// members of that module are selected; and
|
|
1209
|
+
// - marking selection as a complete_selection if all modules in the
|
|
1210
|
+
// given design are selected, or a full_selection if it does not
|
|
1211
|
+
// include boxes.
|
|
1146
1212
|
void optimize(RTLIL::Design *design);
|
|
1147
1213
|
|
|
1214
|
+
// checks if selection covers full design (may or may not include
|
|
1215
|
+
// boxed-modules)
|
|
1216
|
+
bool selects_all() const {
|
|
1217
|
+
return full_selection || complete_selection;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
// add whole module to this selection
|
|
1148
1221
|
template<typename T1> void select(T1 *module) {
|
|
1149
|
-
if (!
|
|
1222
|
+
if (!selects_all() && selected_modules.count(module->name) == 0) {
|
|
1150
1223
|
selected_modules.insert(module->name);
|
|
1151
1224
|
selected_members.erase(module->name);
|
|
1225
|
+
if (module->get_blackbox_attribute())
|
|
1226
|
+
selects_boxes = true;
|
|
1152
1227
|
}
|
|
1153
1228
|
}
|
|
1154
1229
|
|
|
1230
|
+
// add member of module to this selection
|
|
1155
1231
|
template<typename T1, typename T2> void select(T1 *module, T2 *member) {
|
|
1156
|
-
if (!
|
|
1232
|
+
if (!selects_all() && selected_modules.count(module->name) == 0) {
|
|
1157
1233
|
selected_members[module->name].insert(member->name);
|
|
1234
|
+
if (module->get_blackbox_attribute())
|
|
1235
|
+
selects_boxes = true;
|
|
1236
|
+
}
|
|
1158
1237
|
}
|
|
1159
1238
|
|
|
1239
|
+
// checks if selection is empty
|
|
1160
1240
|
bool empty() const {
|
|
1161
|
-
return !
|
|
1241
|
+
return !selects_all() && selected_modules.empty() && selected_members.empty();
|
|
1162
1242
|
}
|
|
1243
|
+
|
|
1244
|
+
// clear this selection, leaving it empty
|
|
1245
|
+
void clear();
|
|
1246
|
+
|
|
1247
|
+
// create a new selection which is empty
|
|
1248
|
+
static Selection EmptySelection(RTLIL::Design *design = nullptr) { return Selection(false, false, design); };
|
|
1249
|
+
|
|
1250
|
+
// create a new selection with all non-boxed modules
|
|
1251
|
+
static Selection FullSelection(RTLIL::Design *design = nullptr) { return Selection(true, false, design); };
|
|
1252
|
+
|
|
1253
|
+
// create a new selection with all modules, including boxes
|
|
1254
|
+
static Selection CompleteSelection(RTLIL::Design *design = nullptr) { return Selection(true, true, design); };
|
|
1163
1255
|
};
|
|
1164
1256
|
|
|
1165
1257
|
struct RTLIL::Monitor
|
|
@@ -1213,7 +1305,7 @@ struct RTLIL::Design
|
|
|
1213
1305
|
RTLIL::ObjRange<RTLIL::Module*> modules();
|
|
1214
1306
|
RTLIL::Module *module(const RTLIL::IdString &name);
|
|
1215
1307
|
const RTLIL::Module *module(const RTLIL::IdString &name) const;
|
|
1216
|
-
RTLIL::Module *top_module();
|
|
1308
|
+
RTLIL::Module *top_module() const;
|
|
1217
1309
|
|
|
1218
1310
|
bool has(const RTLIL::IdString &id) const {
|
|
1219
1311
|
return modules_.count(id) != 0;
|
|
@@ -1240,57 +1332,118 @@ struct RTLIL::Design
|
|
|
1240
1332
|
void check();
|
|
1241
1333
|
void optimize();
|
|
1242
1334
|
|
|
1335
|
+
// checks if the given module is included in the current selection
|
|
1243
1336
|
bool selected_module(const RTLIL::IdString &mod_name) const;
|
|
1337
|
+
|
|
1338
|
+
// checks if the given module is wholly included in the current
|
|
1339
|
+
// selection, i.e. not partially selected
|
|
1244
1340
|
bool selected_whole_module(const RTLIL::IdString &mod_name) const;
|
|
1341
|
+
|
|
1342
|
+
// checks if the given member from the given module is included in the
|
|
1343
|
+
// current selection
|
|
1245
1344
|
bool selected_member(const RTLIL::IdString &mod_name, const RTLIL::IdString &memb_name) const;
|
|
1246
1345
|
|
|
1346
|
+
// checks if the given module is included in the current selection
|
|
1247
1347
|
bool selected_module(RTLIL::Module *mod) const;
|
|
1348
|
+
|
|
1349
|
+
// checks if the given module is wholly included in the current
|
|
1350
|
+
// selection, i.e. not partially selected
|
|
1248
1351
|
bool selected_whole_module(RTLIL::Module *mod) const;
|
|
1249
1352
|
|
|
1353
|
+
// push the given selection to the selection stack
|
|
1354
|
+
void push_selection(RTLIL::Selection sel);
|
|
1355
|
+
// push a new selection to the selection stack, with nothing selected
|
|
1356
|
+
void push_empty_selection();
|
|
1357
|
+
// push a new selection to the selection stack, with all non-boxed
|
|
1358
|
+
// modules selected
|
|
1359
|
+
void push_full_selection();
|
|
1360
|
+
// push a new selection to the selection stack, with all modules
|
|
1361
|
+
// selected including boxes
|
|
1362
|
+
void push_complete_selection();
|
|
1363
|
+
// pop the current selection from the stack, returning to a full
|
|
1364
|
+
// selection (no boxes) if the stack is empty
|
|
1365
|
+
void pop_selection();
|
|
1366
|
+
|
|
1367
|
+
// get the current selection
|
|
1250
1368
|
RTLIL::Selection &selection() {
|
|
1251
1369
|
return selection_stack.back();
|
|
1252
1370
|
}
|
|
1253
1371
|
|
|
1372
|
+
// get the current selection
|
|
1254
1373
|
const RTLIL::Selection &selection() const {
|
|
1255
1374
|
return selection_stack.back();
|
|
1256
1375
|
}
|
|
1257
1376
|
|
|
1377
|
+
// is the current selection a full selection (no boxes)
|
|
1258
1378
|
bool full_selection() const {
|
|
1259
|
-
return
|
|
1379
|
+
return selection().full_selection;
|
|
1260
1380
|
}
|
|
1261
1381
|
|
|
1382
|
+
// is the given module in the current selection
|
|
1262
1383
|
template<typename T1> bool selected(T1 *module) const {
|
|
1263
1384
|
return selected_module(module->name);
|
|
1264
1385
|
}
|
|
1265
1386
|
|
|
1387
|
+
// is the given member of the given module in the current selection
|
|
1266
1388
|
template<typename T1, typename T2> bool selected(T1 *module, T2 *member) const {
|
|
1267
1389
|
return selected_member(module->name, member->name);
|
|
1268
1390
|
}
|
|
1269
1391
|
|
|
1392
|
+
// add whole module to the current selection
|
|
1270
1393
|
template<typename T1> void select(T1 *module) {
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
sel.select(module);
|
|
1274
|
-
}
|
|
1394
|
+
RTLIL::Selection &sel = selection();
|
|
1395
|
+
sel.select(module);
|
|
1275
1396
|
}
|
|
1276
1397
|
|
|
1398
|
+
// add member of module to the current selection
|
|
1277
1399
|
template<typename T1, typename T2> void select(T1 *module, T2 *member) {
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1400
|
+
RTLIL::Selection &sel = selection();
|
|
1401
|
+
sel.select(module, member);
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
// returns all selected modules
|
|
1406
|
+
std::vector<RTLIL::Module*> selected_modules(
|
|
1407
|
+
// controls if partially selected modules are included
|
|
1408
|
+
RTLIL::SelectPartials partials = SELECT_ALL,
|
|
1409
|
+
// controls if boxed modules are included
|
|
1410
|
+
RTLIL::SelectBoxes boxes = SB_UNBOXED_WARN
|
|
1411
|
+
) const;
|
|
1412
|
+
|
|
1413
|
+
// returns all selected modules, and may include boxes
|
|
1414
|
+
std::vector<RTLIL::Module*> all_selected_modules() const { return selected_modules(SELECT_ALL, SB_ALL); }
|
|
1415
|
+
// returns all selected unboxed modules, silently ignoring any boxed
|
|
1416
|
+
// modules in the selection
|
|
1417
|
+
std::vector<RTLIL::Module*> selected_unboxed_modules() const { return selected_modules(SELECT_ALL, SB_UNBOXED_ONLY); }
|
|
1418
|
+
// returns all selected unboxed modules, warning the user if any boxed
|
|
1419
|
+
// modules have been ignored
|
|
1420
|
+
std::vector<RTLIL::Module*> selected_unboxed_modules_warn() const { return selected_modules(SELECT_ALL, SB_UNBOXED_WARN); }
|
|
1421
|
+
|
|
1422
|
+
[[deprecated("Use select_unboxed_whole_modules() to maintain prior behaviour, or consider one of the other selected whole module helpers.")]]
|
|
1423
|
+
std::vector<RTLIL::Module*> selected_whole_modules() const { return selected_modules(SELECT_WHOLE_ONLY, SB_UNBOXED_WARN); }
|
|
1424
|
+
// returns all selected whole modules, silently ignoring partially
|
|
1425
|
+
// selected modules, and may include boxes
|
|
1426
|
+
std::vector<RTLIL::Module*> all_selected_whole_modules() const { return selected_modules(SELECT_WHOLE_ONLY, SB_ALL); }
|
|
1427
|
+
// returns all selected whole modules, warning the user if any partially
|
|
1428
|
+
// selected or boxed modules have been ignored; optionally includes
|
|
1429
|
+
// selected whole modules with the 'whitebox' attribute
|
|
1430
|
+
std::vector<RTLIL::Module*> selected_whole_modules_warn(
|
|
1431
|
+
// should whole modules with the 'whitebox' attribute be
|
|
1432
|
+
// included
|
|
1433
|
+
bool include_wb = false
|
|
1434
|
+
) const { return selected_modules(SELECT_WHOLE_WARN, include_wb ? SB_EXCL_BB_WARN : SB_UNBOXED_WARN); }
|
|
1435
|
+
// returns all selected unboxed whole modules, silently ignoring
|
|
1436
|
+
// partially selected or boxed modules
|
|
1437
|
+
std::vector<RTLIL::Module*> selected_unboxed_whole_modules() const { return selected_modules(SELECT_WHOLE_ONLY, SB_UNBOXED_ONLY); }
|
|
1438
|
+
// returns all selected unboxed whole modules, warning the user if any
|
|
1439
|
+
// partially selected or boxed modules have been ignored
|
|
1440
|
+
std::vector<RTLIL::Module*> selected_unboxed_whole_modules_warn() const { return selected_modules(SELECT_WHOLE_WARN, SB_UNBOXED_WARN); }
|
|
1288
1441
|
#ifdef WITH_PYTHON
|
|
1289
1442
|
static std::map<unsigned int, RTLIL::Design*> *get_all_designs(void);
|
|
1290
1443
|
#endif
|
|
1291
1444
|
};
|
|
1292
1445
|
|
|
1293
|
-
struct RTLIL::Module : public RTLIL::
|
|
1446
|
+
struct RTLIL::Module : public RTLIL::NamedObject
|
|
1294
1447
|
{
|
|
1295
1448
|
Hasher::hash_t hashidx_;
|
|
1296
1449
|
[[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; }
|
|
@@ -1313,7 +1466,6 @@ public:
|
|
|
1313
1466
|
std::vector<RTLIL::SigSig> connections_;
|
|
1314
1467
|
std::vector<RTLIL::Binding*> bindings_;
|
|
1315
1468
|
|
|
1316
|
-
RTLIL::IdString name;
|
|
1317
1469
|
idict<RTLIL::IdString> avail_parameters;
|
|
1318
1470
|
dict<RTLIL::IdString, RTLIL::Const> parameter_default_values;
|
|
1319
1471
|
dict<RTLIL::IdString, RTLIL::Memory*> memories;
|
|
@@ -1358,8 +1510,14 @@ public:
|
|
|
1358
1510
|
bool has_memories_warn() const;
|
|
1359
1511
|
bool has_processes_warn() const;
|
|
1360
1512
|
|
|
1513
|
+
bool is_selected() const;
|
|
1514
|
+
bool is_selected_whole() const;
|
|
1515
|
+
|
|
1361
1516
|
std::vector<RTLIL::Wire*> selected_wires() const;
|
|
1362
1517
|
std::vector<RTLIL::Cell*> selected_cells() const;
|
|
1518
|
+
std::vector<RTLIL::Memory*> selected_memories() const;
|
|
1519
|
+
std::vector<RTLIL::Process*> selected_processes() const;
|
|
1520
|
+
std::vector<RTLIL::NamedObject*> selected_members() const;
|
|
1363
1521
|
|
|
1364
1522
|
template<typename T> bool selected(T *member) const {
|
|
1365
1523
|
return design->selected_member(name, member->name);
|
|
@@ -1645,7 +1803,7 @@ namespace RTLIL_BACKEND {
|
|
|
1645
1803
|
void dump_wire(std::ostream &f, std::string indent, const RTLIL::Wire *wire);
|
|
1646
1804
|
}
|
|
1647
1805
|
|
|
1648
|
-
struct RTLIL::Wire : public RTLIL::
|
|
1806
|
+
struct RTLIL::Wire : public RTLIL::NamedObject
|
|
1649
1807
|
{
|
|
1650
1808
|
Hasher::hash_t hashidx_;
|
|
1651
1809
|
[[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; }
|
|
@@ -1668,7 +1826,6 @@ public:
|
|
|
1668
1826
|
void operator=(RTLIL::Wire &other) = delete;
|
|
1669
1827
|
|
|
1670
1828
|
RTLIL::Module *module;
|
|
1671
|
-
RTLIL::IdString name;
|
|
1672
1829
|
int width, start_offset, port_id;
|
|
1673
1830
|
bool port_input, port_output, upto, is_signed;
|
|
1674
1831
|
|
|
@@ -1697,14 +1854,13 @@ inline int GetSize(RTLIL::Wire *wire) {
|
|
|
1697
1854
|
return wire->width;
|
|
1698
1855
|
}
|
|
1699
1856
|
|
|
1700
|
-
struct RTLIL::Memory : public RTLIL::
|
|
1857
|
+
struct RTLIL::Memory : public RTLIL::NamedObject
|
|
1701
1858
|
{
|
|
1702
1859
|
Hasher::hash_t hashidx_;
|
|
1703
1860
|
[[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; }
|
|
1704
1861
|
|
|
1705
1862
|
Memory();
|
|
1706
1863
|
|
|
1707
|
-
RTLIL::IdString name;
|
|
1708
1864
|
int width, start_offset, size;
|
|
1709
1865
|
#ifdef WITH_PYTHON
|
|
1710
1866
|
~Memory();
|
|
@@ -1712,7 +1868,7 @@ struct RTLIL::Memory : public RTLIL::AttrObject
|
|
|
1712
1868
|
#endif
|
|
1713
1869
|
};
|
|
1714
1870
|
|
|
1715
|
-
struct RTLIL::Cell : public RTLIL::
|
|
1871
|
+
struct RTLIL::Cell : public RTLIL::NamedObject
|
|
1716
1872
|
{
|
|
1717
1873
|
Hasher::hash_t hashidx_;
|
|
1718
1874
|
[[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; }
|
|
@@ -1729,7 +1885,6 @@ public:
|
|
|
1729
1885
|
void operator=(RTLIL::Cell &other) = delete;
|
|
1730
1886
|
|
|
1731
1887
|
RTLIL::Module *module;
|
|
1732
|
-
RTLIL::IdString name;
|
|
1733
1888
|
RTLIL::IdString type;
|
|
1734
1889
|
dict<RTLIL::IdString, RTLIL::SigSpec> connections_;
|
|
1735
1890
|
dict<RTLIL::IdString, RTLIL::Const> parameters;
|
|
@@ -1822,7 +1977,7 @@ struct RTLIL::SyncRule
|
|
|
1822
1977
|
RTLIL::SyncRule *clone() const;
|
|
1823
1978
|
};
|
|
1824
1979
|
|
|
1825
|
-
struct RTLIL::Process : public RTLIL::
|
|
1980
|
+
struct RTLIL::Process : public RTLIL::NamedObject
|
|
1826
1981
|
{
|
|
1827
1982
|
Hasher::hash_t hashidx_;
|
|
1828
1983
|
[[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; }
|
|
@@ -1834,7 +1989,6 @@ protected:
|
|
|
1834
1989
|
~Process();
|
|
1835
1990
|
|
|
1836
1991
|
public:
|
|
1837
|
-
RTLIL::IdString name;
|
|
1838
1992
|
RTLIL::Module *module;
|
|
1839
1993
|
RTLIL::CaseRule root_case;
|
|
1840
1994
|
std::vector<RTLIL::SyncRule*> syncs;
|
yowasp_yosys/yosys.wasm
CHANGED
|
Binary file
|
|
@@ -2,7 +2,7 @@ yowasp_yosys/__init__.py,sha256=x--xPTzLWZNoX6H0B2E3a1HMZMk3di10gVnWVLJ92xc,1325
|
|
|
2
2
|
yowasp_yosys/sby.py,sha256=at4UB7rmju4xhmFP6b31T7duU2Hx5aSOgGUiExKz7Xc,18496
|
|
3
3
|
yowasp_yosys/smtbmc.py,sha256=yiI93tHys5c8aXfCdk2dNtw2mwukRXqeT8YGx5Th8eg,74231
|
|
4
4
|
yowasp_yosys/witness.py,sha256=m3iV2Nydm0p4G79VRaaX3lGul-nGnuxeKnx20MCJgi0,17279
|
|
5
|
-
yowasp_yosys/yosys.wasm,sha256=
|
|
5
|
+
yowasp_yosys/yosys.wasm,sha256=kJpC9cgE7pspygVw_FWEGdtV301egX_bAtvYCMvaL60,30800114
|
|
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
|
|
@@ -44,7 +44,7 @@ yowasp_yosys/share/ecp5/cells_bb.v,sha256=rQ3De-Xkavq7qNaZFXCLU2kZUnofaTmftu1ssv
|
|
|
44
44
|
yowasp_yosys/share/ecp5/cells_ff.vh,sha256=nTxJ16Rw2HqIiP_vUxIzT1pLlWfXG_-zN4L4ilnClvQ,6129
|
|
45
45
|
yowasp_yosys/share/ecp5/cells_io.vh,sha256=u8e7FAbtDSSaxYjxIWw8OWTrmKgCgWpKIbFHA9ja5is,2055
|
|
46
46
|
yowasp_yosys/share/ecp5/cells_map.v,sha256=6mCMrabmQL9VWvuaUyjf3fI-AxN78eZ7qA0ZXBE9ISY,15010
|
|
47
|
-
yowasp_yosys/share/ecp5/cells_sim.v,sha256=
|
|
47
|
+
yowasp_yosys/share/ecp5/cells_sim.v,sha256=KeVWFCjbqYl3i9Gve-D2NqtP63RAB4PzxmmZTgVf61o,22819
|
|
48
48
|
yowasp_yosys/share/ecp5/dsp_map.v,sha256=qgXI6m78V91RzfapTSr2_HZ186kzJexcroq8Xtl_K0Q,1436
|
|
49
49
|
yowasp_yosys/share/ecp5/latches_map.v,sha256=V5NwBaIML68eOlhDaUJUs8W-ggRePjPsDtUn3mnSpao,258
|
|
50
50
|
yowasp_yosys/share/ecp5/lutrams.txt,sha256=YLxriG1TI7e6PlRQgoexKdVa-9NKW4T_FaZSIrkncws,145
|
|
@@ -64,12 +64,12 @@ yowasp_yosys/share/fabulous/prims.v,sha256=Mf_IYhcgarrlvGG_mXMhxWe-b68wm9riS-Li_
|
|
|
64
64
|
yowasp_yosys/share/fabulous/ram_regfile.txt,sha256=kegUh_BAs2bMOf0zhNpDMtBxQpRgG5T7mmE_WYUMau0,782
|
|
65
65
|
yowasp_yosys/share/fabulous/regfile_map.v,sha256=Jm0FgJlFFkQUzNgr8BEvRE7yucj0VCO-C_KT48kwV3Q,1431
|
|
66
66
|
yowasp_yosys/share/gatemate/arith_map.v,sha256=U8Lz8wj0WpUh9YP89MVQfkgYcw4xYE0XWEmt-owc_D4,2016
|
|
67
|
-
yowasp_yosys/share/gatemate/brams.txt,sha256=
|
|
67
|
+
yowasp_yosys/share/gatemate/brams.txt,sha256=mtysGrMGltlSw98eOHSSrN38xzQmkxVbfgTivQrZ5qk,1210
|
|
68
68
|
yowasp_yosys/share/gatemate/brams_init_20.vh,sha256=PKYSRZOL_i6Fmjy1dB-lF0eSlV8BFLjGvDqrw6zhLpw,4480
|
|
69
69
|
yowasp_yosys/share/gatemate/brams_init_40.vh,sha256=yK50gQK1Kc59RxbbV9xjeWohhInkyZ3g6N5WmtpqMug,17970
|
|
70
70
|
yowasp_yosys/share/gatemate/brams_map.v,sha256=dUtJmsUqxezzJfuFeJq8xxCC_MeVlECYagxsXhGEJHA,29326
|
|
71
71
|
yowasp_yosys/share/gatemate/cells_bb.v,sha256=cc9cOL12VXqvKf6JV4r3XD2dSx4O_2Q8L0yWMlTog3A,11964
|
|
72
|
-
yowasp_yosys/share/gatemate/cells_sim.v,sha256=
|
|
72
|
+
yowasp_yosys/share/gatemate/cells_sim.v,sha256=WRAD7MrD6K_aNQE8AM4yCldphCksCImFKnguMLj9bd4,65936
|
|
73
73
|
yowasp_yosys/share/gatemate/inv_map.v,sha256=UpmZftbrZGv7K8od1rjId099dTuqQyaP7z4z-V3hQgI,180
|
|
74
74
|
yowasp_yosys/share/gatemate/lut_map.v,sha256=MM36LUh40S7VWKgUa_IUWo9v65B6WJPeB56-on7AT9M,1558
|
|
75
75
|
yowasp_yosys/share/gatemate/lut_tree_cells.genlib,sha256=8ECZaGTnN1WRgXzL8jOB85e3aUwQReXcYu5gC7Eb56s,6422
|
|
@@ -92,7 +92,7 @@ yowasp_yosys/share/greenpak4/cells_latch.v,sha256=ianZm8mhYPXOcoqcGBTNnQD56GGBog
|
|
|
92
92
|
yowasp_yosys/share/greenpak4/cells_map.v,sha256=nz85PESvWrZygvyqISTdbsdrYM4Wl7TTzd02rH3cW9k,5298
|
|
93
93
|
yowasp_yosys/share/greenpak4/cells_sim.v,sha256=Sznl1YhW-E2jZq6bvXhtRhTQtEPsDFduPoreyiK8Nwo,105
|
|
94
94
|
yowasp_yosys/share/greenpak4/cells_sim_ams.v,sha256=6nbD4dyGcJh2lroK7BEyekylTTRB42t5OgEmiiIYU1M,2072
|
|
95
|
-
yowasp_yosys/share/greenpak4/cells_sim_digital.v,sha256=
|
|
95
|
+
yowasp_yosys/share/greenpak4/cells_sim_digital.v,sha256=M5_f75yaBgZfwnNEh4vTkdoLgQJE1twWu4ChBBo3TFU,14975
|
|
96
96
|
yowasp_yosys/share/greenpak4/cells_sim_wip.v,sha256=FzUNfMpVzkdPTqkGTS-eIfmkCRBwh5SrCmS0Ega_PH4,2926
|
|
97
97
|
yowasp_yosys/share/greenpak4/gp_dff.lib,sha256=aNe7O8sZhBgxwraXXHVMOqqFxUAHEgn7EPaO3qlvLrY,998
|
|
98
98
|
yowasp_yosys/share/ice40/abc9_model.v,sha256=yb7NHMspXMuKefcIEnOb9LzQv4Rvd_IsJifqgCoxI7o,3612
|
|
@@ -106,7 +106,7 @@ yowasp_yosys/share/ice40/ff_map.v,sha256=0ikq-i1_UVT6xuFLMj2Zfilwu6wz8oibMdtPegZ
|
|
|
106
106
|
yowasp_yosys/share/ice40/latches_map.v,sha256=V5NwBaIML68eOlhDaUJUs8W-ggRePjPsDtUn3mnSpao,258
|
|
107
107
|
yowasp_yosys/share/ice40/spram.txt,sha256=dCRV0flfJunvnvKV0Q5Kq5NBrhh_PkZGXvUt675aiIk,153
|
|
108
108
|
yowasp_yosys/share/ice40/spram_map.v,sha256=O8fRkVuH1dgAXEAtYJgh8wTHnZEK75fPAMBI-PgYVqs,475
|
|
109
|
-
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h,sha256=
|
|
109
|
+
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl.h,sha256=MN2K_SZTGGeq0yQjcR2rd6XQvEL8ewc7GDymzZUg7zY,72493
|
|
110
110
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_replay.h,sha256=3bFAy3nYtaH4MsLI9Kvf88K6BYOkML8plDMxmPtPdss,30008
|
|
111
111
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_time.h,sha256=6zIxuXG7bXy5UWe7WuA_KQHiwV7VWvcsNecwOPAL_bU,6174
|
|
112
112
|
yowasp_yosys/share/include/backends/cxxrtl/runtime/cxxrtl/cxxrtl_vcd.h,sha256=L4VOOx7c9rGkxTFi8VjhhNGEbuzxf_j6P5D0_0n0WjA,8637
|
|
@@ -123,7 +123,7 @@ yowasp_yosys/share/include/kernel/bitpattern.h,sha256=V_gds0rvxcrRMTFhIm8Zv4PRFo
|
|
|
123
123
|
yowasp_yosys/share/include/kernel/cellaigs.h,sha256=CdYos67IpmAgLvBbJ8EC3hWg6WhBIBy9jmhdoZ36HVE,1391
|
|
124
124
|
yowasp_yosys/share/include/kernel/celledges.h,sha256=fF_sHJOpN_qQ1P0x8KKoJE9ulDMusfjkF0dBpTMs19E,2216
|
|
125
125
|
yowasp_yosys/share/include/kernel/celltypes.h,sha256=W44T0u789-fy_tj7fGRTNI7s1jshewrPwmS3_-Oz6-A,18561
|
|
126
|
-
yowasp_yosys/share/include/kernel/consteval.h,sha256=
|
|
126
|
+
yowasp_yosys/share/include/kernel/consteval.h,sha256=oEPSKbbgqvNmlLqYFSozZX2cjFQA5IM-d69HmyuZiGo,10864
|
|
127
127
|
yowasp_yosys/share/include/kernel/constids.inc,sha256=s4Qb8C2nWUhIXU8txrBzWQia3u2OJ_E6ehifcpPBkYI,3694
|
|
128
128
|
yowasp_yosys/share/include/kernel/cost.h,sha256=TRW3KGPVLv5MxAmNbSh1mnzwTc-QHvZXSh9Wfc6mw3U,2921
|
|
129
129
|
yowasp_yosys/share/include/kernel/drivertools.h,sha256=jHGOmnyVCjfvUvoBfQvD9O-Tu6pfs4WVbPbQZv1Mhd4,33537
|
|
@@ -136,12 +136,12 @@ yowasp_yosys/share/include/kernel/hashlib.h,sha256=3skguI0eCyzEfFoWmsxnjKzWd8pQV
|
|
|
136
136
|
yowasp_yosys/share/include/kernel/io.h,sha256=qfiLTmDMVPV0BuDgIH5BARxW0FhnB1h7BfUQPw_2SVE,1281
|
|
137
137
|
yowasp_yosys/share/include/kernel/json.h,sha256=tE3AgUslbZd5TRFEipj0HptYjWgNfMjzV44l3A5zAu8,2851
|
|
138
138
|
yowasp_yosys/share/include/kernel/log.h,sha256=NZNJPBf-F_sISwfmJ_GQPm1Z9UzUCYQD6jHiWnsVorY,15380
|
|
139
|
-
yowasp_yosys/share/include/kernel/macc.h,sha256=
|
|
139
|
+
yowasp_yosys/share/include/kernel/macc.h,sha256=LHm507daCT57lGCNNwia1LJVk3pkBB5ZteCZihxD5Qw,8926
|
|
140
140
|
yowasp_yosys/share/include/kernel/mem.h,sha256=xKz0HxXap_PTdzpK-NUcbxybF3YisRc2JoCv17TXOc4,15505
|
|
141
141
|
yowasp_yosys/share/include/kernel/modtools.h,sha256=mRnzc5TIsdIbHlFSTk2Yc0y85ttknhK-dAlti3neSI8,14388
|
|
142
142
|
yowasp_yosys/share/include/kernel/qcsat.h,sha256=ibhpJRu0youjDXPllXrDJi851VpwW1kbJ_y94_X6JhU,2804
|
|
143
143
|
yowasp_yosys/share/include/kernel/register.h,sha256=2xAbUndqoXwACqtqowqmfmRQQFlwEpV82wy2ejSGwUY,5482
|
|
144
|
-
yowasp_yosys/share/include/kernel/rtlil.h,sha256=
|
|
144
|
+
yowasp_yosys/share/include/kernel/rtlil.h,sha256=Ycfn-zWd66LZ6Kzcb0rtFiU7jBiO_CnLxPi93pKfwdE,97702
|
|
145
145
|
yowasp_yosys/share/include/kernel/satgen.h,sha256=zx8LptIgds0Z9sxXx6HGxNNYuk05dHqQZy1aXFWEXC0,10483
|
|
146
146
|
yowasp_yosys/share/include/kernel/scopeinfo.h,sha256=EAU3vSTIwH1RrbSC7HVoTWh4SLfHMSIoidQPvT1Mo7g,11797
|
|
147
147
|
yowasp_yosys/share/include/kernel/sexpr.h,sha256=CUDKFehVoGmakYBYLpEKUtlM0Dd3oI6TNW_cKz-qe0g,4720
|
|
@@ -335,8 +335,8 @@ yowasp_yosys/share/xilinx/xc5v_dsp_map.v,sha256=I4lg0RQ54fBBba_7NNvUgwS4tQ1yLIsU
|
|
|
335
335
|
yowasp_yosys/share/xilinx/xc6s_dsp_map.v,sha256=gTxHocB-Dn5G4BplWgri_tLhT6DIO2S0X-yu4iBKYyk,562
|
|
336
336
|
yowasp_yosys/share/xilinx/xc7_dsp_map.v,sha256=zrzreQi7mElrAMtrayxtiO_Bw00S6zsjSjSVcjmJPH0,884
|
|
337
337
|
yowasp_yosys/share/xilinx/xcu_dsp_map.v,sha256=gzCgl1emrHGcigVmU0nP0pW7dlhQ01SaWwXzHHcqt-o,882
|
|
338
|
-
yowasp_yosys-0.
|
|
339
|
-
yowasp_yosys-0.
|
|
340
|
-
yowasp_yosys-0.
|
|
341
|
-
yowasp_yosys-0.
|
|
342
|
-
yowasp_yosys-0.
|
|
338
|
+
yowasp_yosys-0.53.0.0.post912.dist-info/METADATA,sha256=onz8gMX7UBRxs5U4tHUGbFenBTL_o3vHKtXmzVhpNeE,2558
|
|
339
|
+
yowasp_yosys-0.53.0.0.post912.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
|
|
340
|
+
yowasp_yosys-0.53.0.0.post912.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
|
|
341
|
+
yowasp_yosys-0.53.0.0.post912.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
|
|
342
|
+
yowasp_yosys-0.53.0.0.post912.dist-info/RECORD,,
|
{yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yowasp_yosys-0.52.0.0.post894.dist-info → yowasp_yosys-0.53.0.0.post912.dist-info}/top_level.txt
RENAMED
|
File without changes
|