yowasp-yosys 0.56.0.141.post974.dev0__py3-none-any.whl → 0.57.0.0.post986__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.
@@ -25,6 +25,18 @@
25
25
 
26
26
  YOSYS_NAMESPACE_BEGIN
27
27
 
28
+ /**
29
+ * This file implements BitPatternPool for efficiently storing and querying
30
+ * sets of fixed-width 2-valued logic constants compressed as "bit patterns".
31
+ * A bit pattern can have don't cares on one or more bit positions (State::Sa).
32
+ *
33
+ * In terms of logic synthesis:
34
+ * A BitPatternPool is a sum of products (SOP).
35
+ * BitPatternPool::bits_t is a cube.
36
+ *
37
+ * BitPatternPool does not permit adding new patterns, only removing.
38
+ * Its intended use case is in analysing cases in case/match constructs in HDL.
39
+ */
28
40
  struct BitPatternPool
29
41
  {
30
42
  int width;
@@ -67,6 +79,9 @@ struct BitPatternPool
67
79
  }
68
80
  }
69
81
 
82
+ /**
83
+ * Constructs a pool of all possible patterns (all don't-care bits)
84
+ */
70
85
  BitPatternPool(int width)
71
86
  {
72
87
  this->width = width;
@@ -78,6 +93,10 @@ struct BitPatternPool
78
93
  }
79
94
  }
80
95
 
96
+ /**
97
+ * Convert a constant SigSpec to a pattern. Normalize Yosys many-valued
98
+ * to three-valued logic.
99
+ */
81
100
  bits_t sig2bits(RTLIL::SigSpec sig)
82
101
  {
83
102
  bits_t bits;
@@ -88,6 +107,9 @@ struct BitPatternPool
88
107
  return bits;
89
108
  }
90
109
 
110
+ /**
111
+ * Two cubes match if their intersection is non-empty.
112
+ */
91
113
  bool match(bits_t a, bits_t b)
92
114
  {
93
115
  log_assert(int(a.bitdata.size()) == width);
@@ -98,6 +120,15 @@ struct BitPatternPool
98
120
  return true;
99
121
  }
100
122
 
123
+ /**
124
+ * Does cube sig overlap any cube in the pool?
125
+ * For example:
126
+ * pool({aaa}).has_any(01a) == true
127
+ * pool({01a}).has_any(01a) == true
128
+ * pool({011}).has_any(01a) == true
129
+ * pool({01a}).has_any(011) == true
130
+ * pool({111}).has_any(01a) == false
131
+ */
101
132
  bool has_any(RTLIL::SigSpec sig)
102
133
  {
103
134
  bits_t bits = sig2bits(sig);
@@ -107,6 +138,15 @@ struct BitPatternPool
107
138
  return false;
108
139
  }
109
140
 
141
+ /**
142
+ * Is cube sig covered by a cube in the pool?
143
+ * For example:
144
+ * pool({aaa}).has_all(01a) == true
145
+ * pool({01a}).has_any(01a) == true
146
+ * pool({01a}).has_any(011) == true
147
+ * pool({011}).has_all(01a) == false
148
+ * pool({111}).has_all(01a) == false
149
+ */
110
150
  bool has_all(RTLIL::SigSpec sig)
111
151
  {
112
152
  bits_t bits = sig2bits(sig);
@@ -121,6 +161,12 @@ struct BitPatternPool
121
161
  return false;
122
162
  }
123
163
 
164
+ /**
165
+ * Remove cube sig from the pool, splitting the remaining cubes. True if success.
166
+ * For example:
167
+ * Taking 011 out of pool({01a}) -> pool({010}), returns true.
168
+ * Taking 011 out of pool({010}) does nothing, returns false.
169
+ */
124
170
  bool take(RTLIL::SigSpec sig)
125
171
  {
126
172
  bool status = false;
@@ -143,6 +189,9 @@ struct BitPatternPool
143
189
  return status;
144
190
  }
145
191
 
192
+ /**
193
+ * Remove all patterns. Returns false if already empty.
194
+ */
146
195
  bool take_all()
147
196
  {
148
197
  if (database.empty())
@@ -12,6 +12,7 @@
12
12
  #ifndef HASHLIB_H
13
13
  #define HASHLIB_H
14
14
 
15
+ #include <array>
15
16
  #include <stdexcept>
16
17
  #include <algorithm>
17
18
  #include <optional>
@@ -100,7 +101,7 @@ private:
100
101
  uint32_t hash = ((a << 5) + a) ^ b;
101
102
  return hash;
102
103
  }
103
- public:
104
+ public:
104
105
  void hash32(uint32_t i) {
105
106
  state = djb2_xor(i, state);
106
107
  state = mkhash_xorshift(fudge ^ state);
@@ -127,6 +128,7 @@ private:
127
128
  *this = hash_ops<T>::hash_into(t, *this);
128
129
  }
129
130
 
131
+ [[deprecated]]
130
132
  void commutative_eat(hash_t t) {
131
133
  state ^= t;
132
134
  }
@@ -177,58 +179,58 @@ struct hash_ops {
177
179
  };
178
180
 
179
181
  template<typename P, typename Q> struct hash_ops<std::pair<P, Q>> {
180
- static inline bool cmp(std::pair<P, Q> a, std::pair<P, Q> b) {
182
+ static inline bool cmp(const std::pair<P, Q> &a, const std::pair<P, Q> &b) {
181
183
  return a == b;
182
184
  }
183
- [[nodiscard]] static inline Hasher hash_into(std::pair<P, Q> a, Hasher h) {
185
+ [[nodiscard]] static inline Hasher hash_into(const std::pair<P, Q> &a, Hasher h) {
184
186
  h = hash_ops<P>::hash_into(a.first, h);
185
187
  h = hash_ops<Q>::hash_into(a.second, h);
186
188
  return h;
187
189
  }
188
- HASH_TOP_LOOP_FST (std::pair<P, Q> a) HASH_TOP_LOOP_SND
190
+ HASH_TOP_LOOP_FST (const std::pair<P, Q> &a) HASH_TOP_LOOP_SND
189
191
  };
190
192
 
191
193
  template<typename... T> struct hash_ops<std::tuple<T...>> {
192
- static inline bool cmp(std::tuple<T...> a, std::tuple<T...> b) {
194
+ static inline bool cmp(const std::tuple<T...> &a, const std::tuple<T...> &b) {
193
195
  return a == b;
194
196
  }
195
197
  template<size_t I = 0>
196
- static inline typename std::enable_if<I == sizeof...(T), Hasher>::type hash_into(std::tuple<T...>, Hasher h) {
198
+ static inline typename std::enable_if<I == sizeof...(T), Hasher>::type hash_into(const std::tuple<T...> &, Hasher h) {
197
199
  return h;
198
200
  }
199
201
  template<size_t I = 0>
200
- static inline typename std::enable_if<I != sizeof...(T), Hasher>::type hash_into(std::tuple<T...> a, Hasher h) {
202
+ static inline typename std::enable_if<I != sizeof...(T), Hasher>::type hash_into(const std::tuple<T...> &a, Hasher h) {
201
203
  typedef hash_ops<typename std::tuple_element<I, std::tuple<T...>>::type> element_ops_t;
202
204
  h = hash_into<I+1>(a, h);
203
205
  h = element_ops_t::hash_into(std::get<I>(a), h);
204
206
  return h;
205
207
  }
206
- HASH_TOP_LOOP_FST (std::tuple<T...> a) HASH_TOP_LOOP_SND
208
+ HASH_TOP_LOOP_FST (const std::tuple<T...> &a) HASH_TOP_LOOP_SND
207
209
  };
208
210
 
209
211
  template<typename T> struct hash_ops<std::vector<T>> {
210
- static inline bool cmp(std::vector<T> a, std::vector<T> b) {
212
+ static inline bool cmp(const std::vector<T> &a, const std::vector<T> &b) {
211
213
  return a == b;
212
214
  }
213
- [[nodiscard]] static inline Hasher hash_into(std::vector<T> a, Hasher h) {
215
+ [[nodiscard]] static inline Hasher hash_into(const std::vector<T> &a, Hasher h) {
214
216
  h.eat((uint32_t)a.size());
215
217
  for (auto k : a)
216
218
  h.eat(k);
217
219
  return h;
218
220
  }
219
- HASH_TOP_LOOP_FST (std::vector<T> a) HASH_TOP_LOOP_SND
221
+ HASH_TOP_LOOP_FST (const std::vector<T> &a) HASH_TOP_LOOP_SND
220
222
  };
221
223
 
222
224
  template<typename T, size_t N> struct hash_ops<std::array<T, N>> {
223
- static inline bool cmp(std::array<T, N> a, std::array<T, N> b) {
225
+ static inline bool cmp(const std::array<T, N> &a, const std::array<T, N> &b) {
224
226
  return a == b;
225
227
  }
226
- [[nodiscard]] static inline Hasher hash_into(std::array<T, N> a, Hasher h) {
228
+ [[nodiscard]] static inline Hasher hash_into(const std::array<T, N> &a, Hasher h) {
227
229
  for (const auto& k : a)
228
230
  h = hash_ops<T>::hash_into(k, h);
229
231
  return h;
230
232
  }
231
- HASH_TOP_LOOP_FST (std::array<T, N> a) HASH_TOP_LOOP_SND
233
+ HASH_TOP_LOOP_FST (const std::array<T, N> &a) HASH_TOP_LOOP_SND
232
234
  };
233
235
 
234
236
  struct hash_cstr_ops {
@@ -300,10 +302,10 @@ template<> struct hash_ops<std::monostate> {
300
302
  };
301
303
 
302
304
  template<typename... T> struct hash_ops<std::variant<T...>> {
303
- static inline bool cmp(std::variant<T...> a, std::variant<T...> b) {
305
+ static inline bool cmp(const std::variant<T...> &a, const std::variant<T...> &b) {
304
306
  return a == b;
305
307
  }
306
- [[nodiscard]] static inline Hasher hash_into(std::variant<T...> a, Hasher h) {
308
+ [[nodiscard]] static inline Hasher hash_into(const std::variant<T...> &a, Hasher h) {
307
309
  std::visit([& h](const auto &v) { h.eat(v); }, a);
308
310
  h.eat(a.index());
309
311
  return h;
@@ -311,10 +313,10 @@ template<typename... T> struct hash_ops<std::variant<T...>> {
311
313
  };
312
314
 
313
315
  template<typename T> struct hash_ops<std::optional<T>> {
314
- static inline bool cmp(std::optional<T> a, std::optional<T> b) {
316
+ static inline bool cmp(const std::optional<T> &a, const std::optional<T> &b) {
315
317
  return a == b;
316
318
  }
317
- [[nodiscard]] static inline Hasher hash_into(std::optional<T> a, Hasher h) {
319
+ [[nodiscard]] static inline Hasher hash_into(const std::optional<T> &a, Hasher h) {
318
320
  if(a.has_value())
319
321
  h.eat(*a);
320
322
  else
@@ -356,6 +358,29 @@ template<typename K, int offset = 0, typename OPS = hash_ops<K>> class idict;
356
358
  template<typename K, typename OPS = hash_ops<K>> class pool;
357
359
  template<typename K, typename OPS = hash_ops<K>> class mfp;
358
360
 
361
+ // Computes the hash value of an unordered set of elements.
362
+ // See https://www.preprints.org/manuscript/201710.0192/v1/download.
363
+ // This is the Sum(4) algorithm from that paper, which has good collision resistance,
364
+ // much better than Sum(1) or Xor(1) (and somewhat better than Xor(4)).
365
+ class commutative_hash {
366
+ public:
367
+ commutative_hash() {
368
+ buckets.fill(0);
369
+ }
370
+ void eat(Hasher h) {
371
+ Hasher::hash_t v = h.yield();
372
+ size_t index = v & (buckets.size() - 1);
373
+ buckets[index] += v;
374
+ }
375
+ [[nodiscard]] Hasher hash_into(Hasher h) const {
376
+ for (auto b : buckets)
377
+ h.eat(b);
378
+ return h;
379
+ }
380
+ private:
381
+ std::array<Hasher::hash_t, 4> buckets;
382
+ };
383
+
359
384
  template<typename K, typename T, typename OPS>
360
385
  class dict {
361
386
  struct entry_t
@@ -801,14 +826,14 @@ public:
801
826
  }
802
827
 
803
828
  [[nodiscard]] Hasher hash_into(Hasher h) const {
829
+ commutative_hash comm;
804
830
  for (auto &it : entries) {
805
831
  Hasher entry_hash;
806
832
  entry_hash.eat(it.udata.first);
807
833
  entry_hash.eat(it.udata.second);
808
- h.commutative_eat(entry_hash.yield());
834
+ comm.eat(entry_hash);
809
835
  }
810
- h.eat(entries.size());
811
- return h;
836
+ return comm.hash_into(h);
812
837
  }
813
838
 
814
839
  void reserve(size_t n) { entries.reserve(n); }
@@ -1184,11 +1209,11 @@ public:
1184
1209
  }
1185
1210
 
1186
1211
  [[nodiscard]] Hasher hash_into(Hasher h) const {
1212
+ commutative_hash comm;
1187
1213
  for (auto &it : entries) {
1188
- h.commutative_eat(ops.hash(it.udata).yield());
1214
+ comm.eat(ops.hash(it.udata));
1189
1215
  }
1190
- h.eat(entries.size());
1191
- return h;
1216
+ return comm.hash_into(h);
1192
1217
  }
1193
1218
 
1194
1219
  void reserve(size_t n) { entries.reserve(n); }
@@ -20,6 +20,7 @@
20
20
  #ifndef YOSYS_COMMON_H
21
21
  #define YOSYS_COMMON_H
22
22
 
23
+ #include <array>
23
24
  #include <map>
24
25
  #include <set>
25
26
  #include <tuple>
@@ -19,6 +19,8 @@ endmodule
19
19
 
20
20
  (* blackbox *)
21
21
  module DP16KD (...);
22
+ parameter CLKAMUX = "CLKA";
23
+ parameter CLKBMUX = "CLKB";
22
24
  parameter DATA_WIDTH_A = 18;
23
25
  parameter DATA_WIDTH_B = 18;
24
26
  parameter REGMODE_A = "NOREG";
@@ -215,6 +217,8 @@ endmodule
215
217
 
216
218
  (* blackbox *)
217
219
  module PDPW16KD (...);
220
+ parameter CLKRMUX = "CLKR";
221
+ parameter CLKWMUX = "CLKW";
218
222
  parameter DATA_WIDTH_W = 36;
219
223
  parameter DATA_WIDTH_R = 36;
220
224
  parameter GSR = "ENABLED";
yowasp_yosys/smtbmc.py CHANGED
@@ -1875,6 +1875,11 @@ elif covermode:
1875
1875
  smt_assert_antecedent("(|%s_t| s%d s%d)" % (topmod, step-1, step))
1876
1876
  smt_assert_antecedent("(not (|%s_is| s%d))" % (topmod, step))
1877
1877
 
1878
+ if step < skip_steps:
1879
+ print_msg("Skipping step %d.." % (step))
1880
+ step += 1
1881
+ continue
1882
+
1878
1883
  while "1" in cover_mask:
1879
1884
  print_msg("Checking cover reachability in step %d.." % (step))
1880
1885
  smt_push()
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.56.0.141.post974.dev0
3
+ Version: 0.57.0.0.post986
4
4
  Summary: Yosys Open SYnthesis Suite
5
5
  Author-email: Catherine <whitequark@whitequark.org>
6
6
  License-Expression: ISC
@@ -1,8 +1,8 @@
1
1
  yowasp_yosys/__init__.py,sha256=cxu6bMlZ6zRpCzKp2wdFs7LNt5-btnJD6ghvdkDs6Y0,1189
2
2
  yowasp_yosys/sby.py,sha256=BZwSqLk064cKvGITogDi3OqlQtRJJ-8J4_KG5Z7ktoc,19736
3
- yowasp_yosys/smtbmc.py,sha256=yiI93tHys5c8aXfCdk2dNtw2mwukRXqeT8YGx5Th8eg,74231
3
+ yowasp_yosys/smtbmc.py,sha256=kFTdW-sYuRU0f4YxRJuwYNIB1b9AFJeXM1sIIBdPJW0,74358
4
4
  yowasp_yosys/witness.py,sha256=m3iV2Nydm0p4G79VRaaX3lGul-nGnuxeKnx20MCJgi0,17279
5
- yowasp_yosys/yosys.wasm,sha256=5vKVdIYg6gv3qPrsjNRngy3DZjLFzlXhKcFFphQ1cB4,38066495
5
+ yowasp_yosys/yosys.wasm,sha256=akqkYNIpY9e04P0i4eAN3SaV88KEDtaPAFQW7z7PxLw,38079548
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
@@ -119,7 +119,7 @@ yowasp_yosys/share/include/frontends/ast/ast.h,sha256=p_nm0-fYc1xyPngvCtvzKFH5rW
119
119
  yowasp_yosys/share/include/frontends/ast/ast_binding.h,sha256=NdII3-d38NWB_87m9AOzqQLjkkYaYToz3xHTsHNelU0,1756
120
120
  yowasp_yosys/share/include/frontends/blif/blifparse.h,sha256=GGceOEm-flPK0QdPIVDZ6ZGpkTphT14oTxJhAYIb2RY,1139
121
121
  yowasp_yosys/share/include/kernel/binding.h,sha256=BKfMhNf_HflihwCXEqyZuB1zp9xzVi0NRKe-5MvIidM,1947
122
- yowasp_yosys/share/include/kernel/bitpattern.h,sha256=V_gds0rvxcrRMTFhIm8Zv4PRFowNspJldfURho00lqo,3900
122
+ yowasp_yosys/share/include/kernel/bitpattern.h,sha256=zxsZkQlp043mWDWXxf2uyh2KtN75YHdRJtLsPmH33X0,5496
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=sDqHEa3XqKD-0l-w5bvle5TI-wVABEpF6W1-ThvO7Eg,19027
@@ -132,7 +132,7 @@ yowasp_yosys/share/include/kernel/ffinit.h,sha256=wf_zlDDUGrmz__IH81008Hf2EiHzVJ
132
132
  yowasp_yosys/share/include/kernel/ffmerge.h,sha256=xl1_h88ZmLIxpli7vpiiU35R_Y4cZq728-A72abuzMg,6309
133
133
  yowasp_yosys/share/include/kernel/fmt.h,sha256=0UT-aDVX7_KnzlaNyK3iMsSzoICa4Q0HhqsFIrwHBMw,2790
134
134
  yowasp_yosys/share/include/kernel/gzip.h,sha256=wpAZ9hA13HEpWgZnth46JHvVLSA_qdS-JZB5gh83-QA,1847
135
- yowasp_yosys/share/include/kernel/hashlib.h,sha256=g-I_i1zxQaiJ_s24j02DZrAZPyV2R4jTyIAPBYEAkJk,36365
135
+ yowasp_yosys/share/include/kernel/hashlib.h,sha256=016LJucLM97lCNOShYzwFiEFwLYmPQ16X44pyXrbcwQ,37200
136
136
  yowasp_yosys/share/include/kernel/io.h,sha256=8yQ9hISjrJKqsUbgQq4XaK8_VTRYE-jcSR-kP-Oq2FA,15010
137
137
  yowasp_yosys/share/include/kernel/json.h,sha256=i2wmIMZ2SCE5zc6IIIVLx4XZ2-HQiZEFJ0ao_cMInK0,2849
138
138
  yowasp_yosys/share/include/kernel/log.h,sha256=o2FuugF5IM1K_rnioDtRj8Vsu72VXOvLICcPpdaTG9k,15497
@@ -149,7 +149,7 @@ yowasp_yosys/share/include/kernel/sigtools.h,sha256=5s1qkeGjV2pbwrWRNaNgay8qHfKz
149
149
  yowasp_yosys/share/include/kernel/timinginfo.h,sha256=JNRktUWp7ow_wn4P5BxlOkv7hNS7qKbws7Gjs6VSUx8,7367
150
150
  yowasp_yosys/share/include/kernel/utils.h,sha256=5bJFi7SNf18SL7icrEQEDDYnqT9TrjBMlPZGHbinFK8,7315
151
151
  yowasp_yosys/share/include/kernel/yosys.h,sha256=bx9lTnEhsorxUoLhz2hu0__pSvVAyrthvGjoqaOL6oQ,3438
152
- yowasp_yosys/share/include/kernel/yosys_common.h,sha256=dRr3ZJhPosoDgFkVN2FkraMOSZ4r1c3qQaG2JsLWz0s,8185
152
+ yowasp_yosys/share/include/kernel/yosys_common.h,sha256=5jwfilYMMjd-cYsauyqEyn7bD7oPTSj_sjkcDJFHdqA,8202
153
153
  yowasp_yosys/share/include/kernel/yw.h,sha256=Gr5zqBNUSKXOKhdw7tl9-KcCiZg3xFcK9Msj7LMawdI,5470
154
154
  yowasp_yosys/share/include/libs/ezsat/ezminisat.h,sha256=bSrDL6VRinpXdULoR8P9lQaT1Dy4kAEZfTcKjRKOdjg,2098
155
155
  yowasp_yosys/share/include/libs/ezsat/ezsat.h,sha256=eggeGwS9pFyxSYGT0RtOqX189pbXFAKDfPZzIYTmqIk,14523
@@ -195,7 +195,7 @@ yowasp_yosys/share/lattice/brams_map_16kd.v,sha256=oY8funFMgcjkaaIPwPrg3Nk8-1bPJ
195
195
  yowasp_yosys/share/lattice/brams_map_8kc.v,sha256=ZJ7PjS33Q7dbyuzcJJyzKPVGhs7zJpZJDPnuTDBI4YE,8100
196
196
  yowasp_yosys/share/lattice/ccu2c_sim.vh,sha256=F4sTELLnB2gRThx5URhSkFV5nfGtZQoJ0GE7OFaoHMw,1624
197
197
  yowasp_yosys/share/lattice/ccu2d_sim.vh,sha256=ZhnmJXUWJIlamTNg5yHoziyFf-1iyIDKyauj480vxvo,1083
198
- yowasp_yosys/share/lattice/cells_bb_ecp5.v,sha256=Ln5Ivw2WAZmRNMQKjcNJkubG5jMhgK0b3xkVoZLb7vY,61140
198
+ yowasp_yosys/share/lattice/cells_bb_ecp5.v,sha256=Qt_WiNiWGUo6hl1Ra--X1_BTWFRr5-McxPyRPVjokxY,61268
199
199
  yowasp_yosys/share/lattice/cells_bb_xo2.v,sha256=4mF3np9neeBzZKlcsqpBii7RItXXaOXmL0EQrH99Qz0,20410
200
200
  yowasp_yosys/share/lattice/cells_bb_xo3.v,sha256=4mF3np9neeBzZKlcsqpBii7RItXXaOXmL0EQrH99Qz0,20410
201
201
  yowasp_yosys/share/lattice/cells_bb_xo3d.v,sha256=anx0ve8i123KB-PdNLaq8zrIclgve55Gvis6pjHjlf4,20429
@@ -336,8 +336,8 @@ yowasp_yosys/share/xilinx/xc5v_dsp_map.v,sha256=I4lg0RQ54fBBba_7NNvUgwS4tQ1yLIsU
336
336
  yowasp_yosys/share/xilinx/xc6s_dsp_map.v,sha256=gTxHocB-Dn5G4BplWgri_tLhT6DIO2S0X-yu4iBKYyk,562
337
337
  yowasp_yosys/share/xilinx/xc7_dsp_map.v,sha256=zrzreQi7mElrAMtrayxtiO_Bw00S6zsjSjSVcjmJPH0,884
338
338
  yowasp_yosys/share/xilinx/xcu_dsp_map.v,sha256=gzCgl1emrHGcigVmU0nP0pW7dlhQ01SaWwXzHHcqt-o,882
339
- yowasp_yosys-0.56.0.141.post974.dev0.dist-info/METADATA,sha256=vLNx6yFAEnaSbM_DLFuCTdNyU_E2qCCrs6vuGrF7o28,2529
340
- yowasp_yosys-0.56.0.141.post974.dev0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
341
- yowasp_yosys-0.56.0.141.post974.dev0.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
342
- yowasp_yosys-0.56.0.141.post974.dev0.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
343
- yowasp_yosys-0.56.0.141.post974.dev0.dist-info/RECORD,,
339
+ yowasp_yosys-0.57.0.0.post986.dist-info/METADATA,sha256=eLmfLFnP5ntIkGz3RmACD3yGxWDDsppLa-R13p1F_es,2522
340
+ yowasp_yosys-0.57.0.0.post986.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
341
+ yowasp_yosys-0.57.0.0.post986.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
342
+ yowasp_yosys-0.57.0.0.post986.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
343
+ yowasp_yosys-0.57.0.0.post986.dist-info/RECORD,,