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.
@@ -386,7 +386,7 @@ module TRELLIS_IO(
386
386
  );
387
387
  parameter DIR = "INPUT";
388
388
  reg T_pd;
389
- always @(*) if (T === 1'bz) T_pd <= 1'b0; else T_pd <= T;
389
+ always @(*) if (T === 1'bz) T_pd = 1'b0; else T_pd = T;
390
390
 
391
391
  generate
392
392
  if (DIR == "INPUT") begin
@@ -34,7 +34,6 @@ ram block $__CC_BRAM_TDP_ {
34
34
  }
35
35
  portoption "WR_MODE" "WRITE_THROUGH" {
36
36
  rdwr new;
37
- wrtrans all new;
38
37
  }
39
38
  wrbe_separate;
40
39
  optional_rw;
@@ -292,10 +292,10 @@ module CC_DLT #(
292
292
  always @(*)
293
293
  begin
294
294
  if (sr) begin
295
- Q <= SR_VAL;
295
+ Q = SR_VAL;
296
296
  end
297
297
  else if (en) begin
298
- Q <= D;
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 <= A * B;
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 <= (count == 14'h0);
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 <= (count == 14'h3fff);
136
+ OUT = (count == 14'h3fff);
137
137
  else
138
- OUT <= (count == 14'h0);
139
- POUT <= count[7:0];
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 <= (count == 8'hff);
275
+ OUT = (count == 8'hff);
276
276
  else
277
- OUT <= (count == 8'h0);
278
- POUT <= count;
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 <= (count == 8'h0);
417
- POUT <= count;
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 <= IN0;
492
- OUTB <= IN3;
491
+ OUTA = IN0;
492
+ OUTB = IN3;
493
493
  end
494
494
 
495
495
  2'd01: begin
496
- OUTA <= IN1;
497
- OUTB <= IN2;
496
+ OUTA = IN1;
497
+ OUTB = IN2;
498
498
  end
499
499
 
500
500
  2'd02: begin
501
- OUTA <= IN2;
502
- OUTB <= IN1;
501
+ OUTA = IN2;
502
+ OUTB = IN1;
503
503
  end
504
504
 
505
505
  2'd03: begin
506
- OUTA <= IN3;
507
- OUTB <= IN0;
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 <= D;
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 <= ~D;
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 <= 1'b0;
656
+ Q = 1'b0;
657
657
  else if(!nCLK)
658
- Q <= D;
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 <= 1'b1;
667
+ nQ = 1'b1;
668
668
  else if(!nCLK)
669
- nQ <= ~D;
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 <= 1'b1;
678
+ Q = 1'b1;
679
679
  else if(!nCLK)
680
- Q <= D;
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 <= 1'b0;
689
+ nQ = 1'b0;
690
690
  else if(!nCLK)
691
- nQ <= ~D;
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 <= SRMODE;
701
+ Q = SRMODE;
702
702
  else if(!nCLK)
703
- Q <= D;
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 <= ~SRMODE;
713
+ nQ = ~SRMODE;
714
714
  else if(!nCLK)
715
- nQ <= ~D;
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.shr(b).template scast<BitsY>();
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 = b.template zext<Bits>();
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
  }
@@ -315,7 +315,7 @@ struct ConstEval
315
315
  Macc macc;
316
316
  macc.from_cell(cell);
317
317
 
318
- for (auto &port : macc.ports) {
318
+ for (auto &port : macc.terms) {
319
319
  if (!eval(port.in_a, undef, cell))
320
320
  return false;
321
321
  if (!eval(port.in_b, undef, cell))
@@ -26,18 +26,18 @@ YOSYS_NAMESPACE_BEGIN
26
26
 
27
27
  struct Macc
28
28
  {
29
- struct port_t {
29
+ struct term_t {
30
30
  RTLIL::SigSpec in_a, in_b;
31
31
  bool is_signed, do_subtract;
32
32
  };
33
- std::vector<port_t> ports;
33
+ std::vector<term_t> terms;
34
34
 
35
35
  void optimize(int width)
36
36
  {
37
- std::vector<port_t> new_ports;
37
+ std::vector<term_t> new_terms;
38
38
  RTLIL::Const off(0, width);
39
39
 
40
- for (auto &port : ports)
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
- new_ports.push_back(port);
71
+ new_terms.push_back(port);
72
72
  }
73
73
 
74
74
  if (off.as_bool()) {
75
- port_t port;
75
+ term_t port;
76
76
  port.in_a = off;
77
77
  port.is_signed = false;
78
78
  port.do_subtract = false;
79
- new_ports.push_back(port);
79
+ new_terms.push_back(port);
80
80
  }
81
81
 
82
- new_ports.swap(ports);
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
- ports.clear();
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
- port_t this_port;
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
- ports.push_back(this_port);
129
+ terms.push_back(this_port);
130
130
  }
131
131
 
132
132
  for (auto bit : cell->getPort(ID::B))
133
- ports.push_back(port_t{{bit}, {}, false, false});
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
- ports.clear();
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
- port_t term;
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
- ports.push_back(term);
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
- port_t term;
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
- ports.push_back(term);
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) ports.size(); i++) {
209
- SigSpec term_a = ports[i].in_a, term_b = ports[i].in_b;
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(ports[i].is_signed ? RTLIL::S1 : RTLIL::S0);
215
- addend_negated.append(ports[i].do_subtract ? RTLIL::S1 : RTLIL::S0);
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(ports[i].is_signed ? RTLIL::S1 : RTLIL::S0);
223
- b_signed.append(ports[i].is_signed ? RTLIL::S1 : RTLIL::S0);
224
- product_negated.append(ports[i].do_subtract ? RTLIL::S1 : RTLIL::S0);
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 : ports)
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 ports.size() == 1 &&
291
- !ports[0].in_b.empty() &&
292
- !ports[0].do_subtract;
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
- Selection(bool full = true) : full_selection(full) { }
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 (!full_selection && selected_modules.count(module->name) == 0) {
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 (!full_selection && selected_modules.count(module->name) == 0)
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 !full_selection && selected_modules.empty() && selected_members.empty();
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 selection_stack.back().full_selection;
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
- if (selection_stack.size() > 0) {
1272
- RTLIL::Selection &sel = selection_stack.back();
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
- if (selection_stack.size() > 0) {
1279
- RTLIL::Selection &sel = selection_stack.back();
1280
- sel.select(module, member);
1281
- }
1282
- }
1283
-
1284
-
1285
- std::vector<RTLIL::Module*> selected_modules() const;
1286
- std::vector<RTLIL::Module*> selected_whole_modules() const;
1287
- std::vector<RTLIL::Module*> selected_whole_modules_warn(bool include_wb = false) const;
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::AttrObject
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::AttrObject
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::AttrObject
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::AttrObject
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::AttrObject
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yowasp-yosys
3
- Version: 0.52.0.0.post894
3
+ Version: 0.53.0.0.post912
4
4
  Summary: Yosys Open SYnthesis Suite
5
5
  Author-email: Catherine <whitequark@whitequark.org>
6
6
  License-Expression: ISC
@@ -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=WshLXNhe1EXwyh9Qm2KETtZ2W-9IkeUU0w-baj9hSd0,29776869
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=I8HR01tb2bpaB-F899XAf-e2hA4d62wvdGw_QwtM7FQ,22821
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=lFwxrzoTQOKnCqO9BWQNa-ymzMBZSf7LxyKbirjxYOQ,1230
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=AiHGI4g7VySeRZS9bkG98kosYwrCOnVcnJT_fRHC1Oo,65939
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=XoDYL72Qub_5P0-qYMwn8h-_MuRfUA0OokdGfcq8bXM,15006
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=5iaAR8JOyCQVFb-kt1S7OC09X0-LRi0iXMBpCrXwApM,72317
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=kLEB95uiFL5Gm4u1tjnYK3a0uYkraEJ3wF8x_1RXqcM,10864
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=J-HklyfsHuqyDEFf9GXAExfqo69Ed_zdukcoaC2q1wI,8926
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=ABTCNiocrQzN3y7MuNy6dWclHc2cd8TCuPzxi-A12AY,90354
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.52.0.0.post894.dist-info/METADATA,sha256=6LPfljDvACTseZncoTpGrjylUYQsdmYpsJYDl09ygbM,2558
339
- yowasp_yosys-0.52.0.0.post894.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
340
- yowasp_yosys-0.52.0.0.post894.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
341
- yowasp_yosys-0.52.0.0.post894.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
342
- yowasp_yosys-0.52.0.0.post894.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (78.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5