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.
- yowasp_yosys/share/include/kernel/bitpattern.h +49 -0
- yowasp_yosys/share/include/kernel/hashlib.h +49 -24
- yowasp_yosys/share/include/kernel/yosys_common.h +1 -0
- yowasp_yosys/share/lattice/cells_bb_ecp5.v +4 -0
- yowasp_yosys/smtbmc.py +5 -0
- yowasp_yosys/yosys.wasm +0 -0
- {yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/METADATA +1 -1
- {yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/RECORD +11 -11
- {yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/WHEEL +0 -0
- {yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/entry_points.txt +0 -0
- {yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/top_level.txt +0 -0
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
834
|
+
comm.eat(entry_hash);
|
|
809
835
|
}
|
|
810
|
-
|
|
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
|
-
|
|
1214
|
+
comm.eat(ops.hash(it.udata));
|
|
1189
1215
|
}
|
|
1190
|
-
|
|
1191
|
-
return h;
|
|
1216
|
+
return comm.hash_into(h);
|
|
1192
1217
|
}
|
|
1193
1218
|
|
|
1194
1219
|
void reserve(size_t n) { entries.reserve(n); }
|
|
@@ -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
|
{yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/RECORD
RENAMED
|
@@ -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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
340
|
-
yowasp_yosys-0.
|
|
341
|
-
yowasp_yosys-0.
|
|
342
|
-
yowasp_yosys-0.
|
|
343
|
-
yowasp_yosys-0.
|
|
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,,
|
{yowasp_yosys-0.56.0.141.post974.dev0.dist-info → yowasp_yosys-0.57.0.0.post986.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|