yowasp-yosys 0.39.0.165.post702.dev0__py3-none-any.whl → 0.40.0.0.post707__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yowasp_yosys/sby.py CHANGED
@@ -422,8 +422,7 @@ def start_task(taskloop, taskname):
422
422
 
423
423
  if opt_force and not reusedir:
424
424
  early_log(my_workdir, f"Removing directory '{os.path.abspath(my_workdir)}'.")
425
- if sbyfile:
426
- shutil.rmtree(my_workdir, ignore_errors=True)
425
+ shutil.rmtree(my_workdir, ignore_errors=True)
427
426
 
428
427
  if reusedir:
429
428
  pass
@@ -0,0 +1,54 @@
1
+ /*
2
+ * yosys -- Yosys Open SYnthesis Suite
3
+ *
4
+ * Copyright (C) 2024 Martin Povišer <povik@cutebit.org>
5
+ *
6
+ * Permission to use, copy, modify, and/or distribute this software for any
7
+ * purpose with or without fee is hereby granted, provided that the above
8
+ * copyright notice and this permission notice appear in all copies.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+ *
18
+ */
19
+
20
+ (* techmap_celltype = "$lcu" *)
21
+ module _80_lcu_kogge_stone (P, G, CI, CO);
22
+ parameter WIDTH = 2;
23
+
24
+ (* force_downto *)
25
+ input [WIDTH-1:0] P, G;
26
+ input CI;
27
+
28
+ (* force_downto *)
29
+ output [WIDTH-1:0] CO;
30
+
31
+ integer i, j;
32
+ (* force_downto *)
33
+ reg [WIDTH-1:0] p, g;
34
+
35
+ wire [1023:0] _TECHMAP_DO_ = "proc; opt -fast";
36
+
37
+ always @* begin
38
+ p = P;
39
+ g = G;
40
+
41
+ // in almost all cases CI will be constant zero
42
+ g[0] = g[0] | (p[0] & CI);
43
+
44
+ for (i = 0; i < $clog2(WIDTH); i = i + 1) begin
45
+ // iterate in reverse so we don't confuse a result from this stage and the previous
46
+ for (j = WIDTH - 1; j >= 2**i; j = j - 1) begin
47
+ g[j] = g[j] | p[j] & g[j - 2**i];
48
+ p[j] = p[j] & p[j - 2**i];
49
+ end
50
+ end
51
+ end
52
+
53
+ assign CO = g;
54
+ endmodule
@@ -113,7 +113,31 @@ module EFX_GBUFCE(
113
113
 
114
114
  endmodule
115
115
 
116
- module EFX_RAM_5K(
116
+ module EFX_RAM_5K
117
+ # (
118
+ parameter READ_WIDTH = 20,
119
+ parameter WRITE_WIDTH = 20,
120
+ localparam READ_ADDR_WIDTH =
121
+ (READ_WIDTH == 16) ? 8 : // 256x16
122
+ (READ_WIDTH == 8) ? 9 : // 512x8
123
+ (READ_WIDTH == 4) ? 10 : // 1024x4
124
+ (READ_WIDTH == 2) ? 11 : // 2048x2
125
+ (READ_WIDTH == 1) ? 12 : // 4096x1
126
+ (READ_WIDTH == 20) ? 8 : // 256x20
127
+ (READ_WIDTH == 10) ? 9 : // 512x10
128
+ (READ_WIDTH == 5) ? 10 : -1, // 1024x5
129
+
130
+ localparam WRITE_ADDR_WIDTH =
131
+ (WRITE_WIDTH == 16) ? 8 : // 256x16
132
+ (WRITE_WIDTH == 8) ? 9 : // 512x8
133
+ (WRITE_WIDTH == 4) ? 10 : // 1024x4
134
+ (WRITE_WIDTH == 2) ? 11 : // 2048x2
135
+ (WRITE_WIDTH == 1) ? 12 : // 4096x1
136
+ (WRITE_WIDTH == 20) ? 8 : // 256x20
137
+ (WRITE_WIDTH == 10) ? 9 : // 512x10
138
+ (WRITE_WIDTH == 5) ? 10 : -1 // 1024x5
139
+ )
140
+ (
117
141
  input [WRITE_WIDTH-1:0] WDATA,
118
142
  input [WRITE_ADDR_WIDTH-1:0] WADDR,
119
143
  input WE,
@@ -126,8 +150,6 @@ module EFX_RAM_5K(
126
150
  (* clkbuf_sink *)
127
151
  input RCLK
128
152
  );
129
- parameter READ_WIDTH = 20;
130
- parameter WRITE_WIDTH = 20;
131
153
  parameter OUTPUT_REG = 1'b0;
132
154
  parameter RCLK_POLARITY = 1'b1;
133
155
  parameter RE_POLARITY = 1'b1;
@@ -155,25 +177,4 @@ module EFX_RAM_5K(
155
177
  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
156
178
  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
157
179
  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
158
-
159
- localparam READ_ADDR_WIDTH =
160
- (READ_WIDTH == 16) ? 8 : // 256x16
161
- (READ_WIDTH == 8) ? 9 : // 512x8
162
- (READ_WIDTH == 4) ? 10 : // 1024x4
163
- (READ_WIDTH == 2) ? 11 : // 2048x2
164
- (READ_WIDTH == 1) ? 12 : // 4096x1
165
- (READ_WIDTH == 20) ? 8 : // 256x20
166
- (READ_WIDTH == 10) ? 9 : // 512x10
167
- (READ_WIDTH == 5) ? 10 : -1; // 1024x5
168
-
169
- localparam WRITE_ADDR_WIDTH =
170
- (WRITE_WIDTH == 16) ? 8 : // 256x16
171
- (WRITE_WIDTH == 8) ? 9 : // 512x8
172
- (WRITE_WIDTH == 4) ? 10 : // 1024x4
173
- (WRITE_WIDTH == 2) ? 11 : // 2048x2
174
- (WRITE_WIDTH == 1) ? 12 : // 4096x1
175
- (WRITE_WIDTH == 20) ? 8 : // 256x20
176
- (WRITE_WIDTH == 10) ? 9 : // 512x10
177
- (WRITE_WIDTH == 5) ? 10 : -1; // 1024x5
178
-
179
180
  endmodule
@@ -17,11 +17,11 @@
17
17
  *
18
18
  */
19
19
 
20
- #include "kernel/yosys.h"
21
-
22
20
  #ifndef LOG_H
23
21
  #define LOG_H
24
22
 
23
+ #include "kernel/yosys_common.h"
24
+
25
25
  #include <time.h>
26
26
 
27
27
  #include <regex>
@@ -449,4 +449,6 @@ void log_dump_args_worker(const char *p, T first, Args ... args)
449
449
 
450
450
  YOSYS_NAMESPACE_END
451
451
 
452
+ #include "kernel/yosys.h"
453
+
452
454
  #endif
@@ -17,11 +17,12 @@
17
17
  *
18
18
  */
19
19
 
20
- #include "kernel/yosys.h"
21
-
22
20
  #ifndef REGISTER_H
23
21
  #define REGISTER_H
24
22
 
23
+ #include "kernel/yosys_common.h"
24
+ #include "kernel/yosys.h"
25
+
25
26
  YOSYS_NAMESPACE_BEGIN
26
27
 
27
28
  struct Pass
@@ -17,11 +17,12 @@
17
17
  *
18
18
  */
19
19
 
20
- #include "kernel/yosys.h"
21
-
22
20
  #ifndef RTLIL_H
23
21
  #define RTLIL_H
24
22
 
23
+ #include "kernel/yosys_common.h"
24
+ #include "kernel/yosys.h"
25
+
25
26
  YOSYS_NAMESPACE_BEGIN
26
27
 
27
28
  namespace RTLIL
@@ -39,323 +39,7 @@
39
39
  #ifndef YOSYS_H
40
40
  #define YOSYS_H
41
41
 
42
- #include <map>
43
- #include <set>
44
- #include <tuple>
45
- #include <vector>
46
- #include <string>
47
- #include <algorithm>
48
- #include <functional>
49
- #include <unordered_map>
50
- #include <unordered_set>
51
- #include <initializer_list>
52
- #include <stdexcept>
53
- #include <memory>
54
- #include <cmath>
55
- #include <cstddef>
56
-
57
- #include <sstream>
58
- #include <fstream>
59
- #include <istream>
60
- #include <ostream>
61
- #include <iostream>
62
-
63
- #include <stdarg.h>
64
- #include <stdlib.h>
65
- #include <string.h>
66
- #include <stdint.h>
67
- #include <stdio.h>
68
- #include <limits.h>
69
- #include <sys/stat.h>
70
- #include <errno.h>
71
-
72
- #ifdef WITH_PYTHON
73
- #include <Python.h>
74
- #endif
75
-
76
- #ifndef _YOSYS_
77
- # error It looks like you are trying to build Yosys without the config defines set. \
78
- When building Yosys with a custom make system, make sure you set all the \
79
- defines the Yosys Makefile would set for your build configuration.
80
- #endif
81
-
82
- #ifdef YOSYS_ENABLE_TCL
83
- # include <tcl.h>
84
- # ifdef YOSYS_MXE_HACKS
85
- extern Tcl_Command Tcl_CreateCommand(Tcl_Interp *interp, const char *cmdName, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc);
86
- extern Tcl_Interp *Tcl_CreateInterp(void);
87
- extern void Tcl_Preserve(ClientData data);
88
- extern void Tcl_Release(ClientData clientData);
89
- extern int Tcl_InterpDeleted(Tcl_Interp *interp);
90
- extern void Tcl_DeleteInterp(Tcl_Interp *interp);
91
- extern int Tcl_Eval(Tcl_Interp *interp, const char *script);
92
- extern int Tcl_EvalFile(Tcl_Interp *interp, const char *fileName);
93
- extern void Tcl_Finalize(void);
94
- extern int Tcl_GetCommandInfo(Tcl_Interp *interp, const char *cmdName, Tcl_CmdInfo *infoPtr);
95
- extern const char *Tcl_GetStringResult(Tcl_Interp *interp);
96
- extern Tcl_Obj *Tcl_NewStringObj(const char *bytes, int length);
97
- extern Tcl_Obj *Tcl_NewIntObj(int intValue);
98
- extern Tcl_Obj *Tcl_NewListObj(int objc, Tcl_Obj *const objv[]);
99
- extern Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags);
100
- # endif
101
- # undef CONST
102
- # undef INLINE
103
- #endif
104
-
105
- #ifdef _WIN32
106
- # undef NOMINMAX
107
- # define NOMINMAX 1
108
- # undef YY_NO_UNISTD_H
109
- # define YY_NO_UNISTD_H 1
110
-
111
- # include <windows.h>
112
- # include <io.h>
113
- # include <direct.h>
114
-
115
- # define strtok_r strtok_s
116
- # define strdup _strdup
117
- # define snprintf _snprintf
118
- # define getcwd _getcwd
119
- # define mkdir _mkdir
120
- # define popen _popen
121
- # define pclose _pclose
122
-
123
- # ifndef __MINGW32__
124
- # define PATH_MAX MAX_PATH
125
- # define isatty _isatty
126
- # define fileno _fileno
127
- # endif
128
-
129
- // The following defines conflict with our identifiers:
130
- # undef CONST
131
- // `wingdi.h` defines a TRANSPARENT macro that conflicts with X(TRANSPARENT) entry in kernel/constids.inc
132
- # undef TRANSPARENT
133
- #endif
134
-
135
- #ifndef PATH_MAX
136
- # define PATH_MAX 4096
137
- #endif
138
-
139
- #define YOSYS_NAMESPACE Yosys
140
- #define PRIVATE_NAMESPACE_BEGIN namespace {
141
- #define PRIVATE_NAMESPACE_END }
142
- #define YOSYS_NAMESPACE_BEGIN namespace Yosys {
143
- #define YOSYS_NAMESPACE_END }
144
- #define YOSYS_NAMESPACE_PREFIX Yosys::
145
- #define USING_YOSYS_NAMESPACE using namespace Yosys;
146
-
147
- #if defined(__GNUC__) || defined(__clang__)
148
- # define YS_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
149
- #elif defined(_MSC_VER)
150
- # define YS_ATTRIBUTE(...)
151
- #else
152
- # define YS_ATTRIBUTE(...)
153
- #endif
154
-
155
- #if defined(__GNUC__) || defined(__clang__)
156
- # define YS_MAYBE_UNUSED __attribute__((__unused__))
157
- #else
158
- # define YS_MAYBE_UNUSED
159
- #endif
160
-
161
- #if __cplusplus >= 201703L
162
- # define YS_FALLTHROUGH [[fallthrough]];
163
- #elif defined(__clang__)
164
- # define YS_FALLTHROUGH [[clang::fallthrough]];
165
- #elif defined(__GNUC__)
166
- # define YS_FALLTHROUGH [[gnu::fallthrough]];
167
- #else
168
- # define YS_FALLTHROUGH
169
- #endif
170
-
171
- YOSYS_NAMESPACE_BEGIN
172
-
173
- // Note: All headers included in hashlib.h must be included
174
- // outside of YOSYS_NAMESPACE before this or bad things will happen.
175
- #ifdef HASHLIB_H
176
- # undef HASHLIB_H
177
- # include "kernel/hashlib.h"
178
- #else
179
- # include "kernel/hashlib.h"
180
- # undef HASHLIB_H
181
- #endif
182
-
183
- using std::vector;
184
- using std::string;
185
- using std::tuple;
186
- using std::pair;
187
-
188
- using std::make_tuple;
189
- using std::make_pair;
190
- using std::get;
191
- using std::min;
192
- using std::max;
193
-
194
- // A primitive shared string implementation that does not
195
- // move its .c_str() when the object is copied or moved.
196
- struct shared_str {
197
- std::shared_ptr<string> content;
198
- shared_str() { }
199
- shared_str(string s) { content = std::shared_ptr<string>(new string(s)); }
200
- shared_str(const char *s) { content = std::shared_ptr<string>(new string(s)); }
201
- const char *c_str() const { return content->c_str(); }
202
- const string &str() const { return *content; }
203
- bool operator==(const shared_str &other) const { return *content == *other.content; }
204
- unsigned int hash() const { return hashlib::hash_ops<std::string>::hash(*content); }
205
- };
206
-
207
- using hashlib::mkhash;
208
- using hashlib::mkhash_init;
209
- using hashlib::mkhash_add;
210
- using hashlib::mkhash_xorshift;
211
- using hashlib::hash_ops;
212
- using hashlib::hash_cstr_ops;
213
- using hashlib::hash_ptr_ops;
214
- using hashlib::hash_obj_ops;
215
- using hashlib::dict;
216
- using hashlib::idict;
217
- using hashlib::pool;
218
- using hashlib::mfp;
219
-
220
- namespace RTLIL {
221
- struct IdString;
222
- struct Const;
223
- struct SigBit;
224
- struct SigSpec;
225
- struct Wire;
226
- struct Cell;
227
- struct Memory;
228
- struct Process;
229
- struct Module;
230
- struct Design;
231
- struct Monitor;
232
- enum State : unsigned char;
233
- }
234
-
235
- namespace AST {
236
- struct AstNode;
237
- }
238
-
239
- using RTLIL::IdString;
240
- using RTLIL::Const;
241
- using RTLIL::SigBit;
242
- using RTLIL::SigSpec;
243
- using RTLIL::Wire;
244
- using RTLIL::Cell;
245
- using RTLIL::Module;
246
- using RTLIL::Design;
247
-
248
- namespace hashlib {
249
- template<> struct hash_ops<RTLIL::Wire*> : hash_obj_ops {};
250
- template<> struct hash_ops<RTLIL::Cell*> : hash_obj_ops {};
251
- template<> struct hash_ops<RTLIL::Memory*> : hash_obj_ops {};
252
- template<> struct hash_ops<RTLIL::Process*> : hash_obj_ops {};
253
- template<> struct hash_ops<RTLIL::Module*> : hash_obj_ops {};
254
- template<> struct hash_ops<RTLIL::Design*> : hash_obj_ops {};
255
- template<> struct hash_ops<RTLIL::Monitor*> : hash_obj_ops {};
256
- template<> struct hash_ops<AST::AstNode*> : hash_obj_ops {};
257
-
258
- template<> struct hash_ops<const RTLIL::Wire*> : hash_obj_ops {};
259
- template<> struct hash_ops<const RTLIL::Cell*> : hash_obj_ops {};
260
- template<> struct hash_ops<const RTLIL::Memory*> : hash_obj_ops {};
261
- template<> struct hash_ops<const RTLIL::Process*> : hash_obj_ops {};
262
- template<> struct hash_ops<const RTLIL::Module*> : hash_obj_ops {};
263
- template<> struct hash_ops<const RTLIL::Design*> : hash_obj_ops {};
264
- template<> struct hash_ops<const RTLIL::Monitor*> : hash_obj_ops {};
265
- template<> struct hash_ops<const AST::AstNode*> : hash_obj_ops {};
266
- }
267
-
268
- void memhasher_on();
269
- void memhasher_off();
270
- void memhasher_do();
271
-
272
- extern bool memhasher_active;
273
- inline void memhasher() { if (memhasher_active) memhasher_do(); }
274
-
275
- void yosys_banner();
276
- int ceil_log2(int x) YS_ATTRIBUTE(const);
277
-
278
- inline std::string vstringf(const char *fmt, va_list ap)
279
- {
280
- // For the common case of strings shorter than 128, save a heap
281
- // allocation by using a stack allocated buffer.
282
- const int kBufSize = 128;
283
- char buf[kBufSize];
284
- buf[0] = '\0';
285
- va_list apc;
286
- va_copy(apc, ap);
287
- int n = vsnprintf(buf, kBufSize, fmt, apc);
288
- va_end(apc);
289
- if (n < kBufSize)
290
- return std::string(buf);
291
-
292
- std::string string;
293
- char *str = NULL;
294
- #if defined(_WIN32 )|| defined(__CYGWIN__)
295
- int sz = 2 * kBufSize, rc;
296
- while (1) {
297
- va_copy(apc, ap);
298
- str = (char*)realloc(str, sz);
299
- rc = vsnprintf(str, sz, fmt, apc);
300
- va_end(apc);
301
- if (rc >= 0 && rc < sz)
302
- break;
303
- sz *= 2;
304
- }
305
- if (str != NULL) {
306
- string = str;
307
- free(str);
308
- }
309
- return string;
310
- #else
311
- if (vasprintf(&str, fmt, ap) < 0)
312
- str = NULL;
313
- if (str != NULL) {
314
- string = str;
315
- free(str);
316
- }
317
- return string;
318
- #endif
319
- }
320
-
321
- std::string stringf(const char *fmt, ...) YS_ATTRIBUTE(format(printf, 1, 2));
322
-
323
- inline std::string stringf(const char *fmt, ...)
324
- {
325
- std::string string;
326
- va_list ap;
327
-
328
- va_start(ap, fmt);
329
- string = vstringf(fmt, ap);
330
- va_end(ap);
331
-
332
- return string;
333
- }
334
-
335
- int readsome(std::istream &f, char *s, int n);
336
- std::string next_token(std::string &text, const char *sep = " \t\r\n", bool long_strings = false);
337
- std::vector<std::string> split_tokens(const std::string &text, const char *sep = " \t\r\n");
338
- bool patmatch(const char *pattern, const char *string);
339
- #if !defined(YOSYS_DISABLE_SPAWN)
340
- int run_command(const std::string &command, std::function<void(const std::string&)> process_line = std::function<void(const std::string&)>());
341
- #endif
342
- std::string get_base_tmpdir();
343
- std::string make_temp_file(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX");
344
- std::string make_temp_dir(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX");
345
- bool check_file_exists(std::string filename, bool is_exec = false);
346
- bool check_directory_exists(const std::string& dirname);
347
- bool is_absolute_path(std::string filename);
348
- void remove_directory(std::string dirname);
349
- bool create_directory(const std::string& dirname);
350
- std::string escape_filename_spaces(const std::string& filename);
351
-
352
- template<typename T> int GetSize(const T &obj) { return obj.size(); }
353
- inline int GetSize(RTLIL::Wire *wire);
354
-
355
- extern int autoidx;
356
- extern int yosys_xtrace;
357
-
358
- YOSYS_NAMESPACE_END
42
+ #include "kernel/yosys_common.h"
359
43
 
360
44
  #include "kernel/log.h"
361
45
  #include "kernel/rtlil.h"
@@ -363,14 +47,6 @@ YOSYS_NAMESPACE_END
363
47
 
364
48
  YOSYS_NAMESPACE_BEGIN
365
49
 
366
- using RTLIL::State;
367
- using RTLIL::SigChunk;
368
- using RTLIL::SigSig;
369
-
370
- namespace hashlib {
371
- template<> struct hash_ops<RTLIL::State> : hash_ops<int> {};
372
- }
373
-
374
50
  void yosys_setup();
375
51
 
376
52
  #ifdef WITH_PYTHON
@@ -385,26 +61,6 @@ Tcl_Interp *yosys_get_tcl_interp();
385
61
 
386
62
  extern RTLIL::Design *yosys_design;
387
63
 
388
- RTLIL::IdString new_id(std::string file, int line, std::string func);
389
- RTLIL::IdString new_id_suffix(std::string file, int line, std::string func, std::string suffix);
390
-
391
- #define NEW_ID \
392
- YOSYS_NAMESPACE_PREFIX new_id(__FILE__, __LINE__, __FUNCTION__)
393
- #define NEW_ID_SUFFIX(suffix) \
394
- YOSYS_NAMESPACE_PREFIX new_id_suffix(__FILE__, __LINE__, __FUNCTION__, suffix)
395
-
396
- // Create a statically allocated IdString object, using for example ID::A or ID($add).
397
- //
398
- // Recipe for Converting old code that is using conversion of strings like ID::A and
399
- // "$add" for creating IdStrings: Run below SED command on the .cc file and then use for
400
- // example "meld foo.cc foo.cc.orig" to manually compile errors, if necessary.
401
- //
402
- // sed -i.orig -r 's/"\\\\([a-zA-Z0-9_]+)"/ID(\1)/g; s/"(\$[a-zA-Z0-9_]+)"/ID(\1)/g;' <filename>
403
- //
404
- #define ID(_id) ([]() { const char *p = "\\" #_id, *q = p[1] == '$' ? p+1 : p; \
405
- static const YOSYS_NAMESPACE_PREFIX RTLIL::IdString id(q); return id; })()
406
- namespace ID = RTLIL::ID;
407
-
408
64
  RTLIL::Design *yosys_get_design();
409
65
  std::string proc_self_dirname();
410
66
  std::string proc_share_dirname();
@@ -0,0 +1,379 @@
1
+ /* -*- c++ -*-
2
+ * yosys -- Yosys Open SYnthesis Suite
3
+ *
4
+ * Copyright (C) 2012 Claire Xenia Wolf <claire@yosyshq.com>
5
+ *
6
+ * Permission to use, copy, modify, and/or distribute this software for any
7
+ * purpose with or without fee is hereby granted, provided that the above
8
+ * copyright notice and this permission notice appear in all copies.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+ *
18
+ */
19
+
20
+ #ifndef YOSYS_COMMON_H
21
+ #define YOSYS_COMMON_H
22
+
23
+ #include <map>
24
+ #include <set>
25
+ #include <tuple>
26
+ #include <vector>
27
+ #include <string>
28
+ #include <algorithm>
29
+ #include <functional>
30
+ #include <unordered_map>
31
+ #include <unordered_set>
32
+ #include <initializer_list>
33
+ #include <stdexcept>
34
+ #include <memory>
35
+ #include <cmath>
36
+ #include <cstddef>
37
+
38
+ #include <sstream>
39
+ #include <fstream>
40
+ #include <istream>
41
+ #include <ostream>
42
+ #include <iostream>
43
+
44
+ #include <stdarg.h>
45
+ #include <stdlib.h>
46
+ #include <string.h>
47
+ #include <stdint.h>
48
+ #include <stdio.h>
49
+ #include <limits.h>
50
+ #include <sys/stat.h>
51
+ #include <errno.h>
52
+
53
+ #ifdef WITH_PYTHON
54
+ #include <Python.h>
55
+ #endif
56
+
57
+ #ifndef _YOSYS_
58
+ # error It looks like you are trying to build Yosys without the config defines set. \
59
+ When building Yosys with a custom make system, make sure you set all the \
60
+ defines the Yosys Makefile would set for your build configuration.
61
+ #endif
62
+
63
+ #ifdef YOSYS_ENABLE_TCL
64
+ # include <tcl.h>
65
+ # ifdef YOSYS_MXE_HACKS
66
+ extern Tcl_Command Tcl_CreateCommand(Tcl_Interp *interp, const char *cmdName, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc);
67
+ extern Tcl_Interp *Tcl_CreateInterp(void);
68
+ extern void Tcl_Preserve(ClientData data);
69
+ extern void Tcl_Release(ClientData clientData);
70
+ extern int Tcl_InterpDeleted(Tcl_Interp *interp);
71
+ extern void Tcl_DeleteInterp(Tcl_Interp *interp);
72
+ extern int Tcl_Eval(Tcl_Interp *interp, const char *script);
73
+ extern int Tcl_EvalFile(Tcl_Interp *interp, const char *fileName);
74
+ extern void Tcl_Finalize(void);
75
+ extern int Tcl_GetCommandInfo(Tcl_Interp *interp, const char *cmdName, Tcl_CmdInfo *infoPtr);
76
+ extern const char *Tcl_GetStringResult(Tcl_Interp *interp);
77
+ extern Tcl_Obj *Tcl_NewStringObj(const char *bytes, int length);
78
+ extern Tcl_Obj *Tcl_NewIntObj(int intValue);
79
+ extern Tcl_Obj *Tcl_NewListObj(int objc, Tcl_Obj *const objv[]);
80
+ extern Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags);
81
+ # endif
82
+ # undef CONST
83
+ # undef INLINE
84
+ #endif
85
+
86
+ #ifdef _WIN32
87
+ # undef NOMINMAX
88
+ # define NOMINMAX 1
89
+ # undef YY_NO_UNISTD_H
90
+ # define YY_NO_UNISTD_H 1
91
+
92
+ # include <windows.h>
93
+ # include <io.h>
94
+ # include <direct.h>
95
+
96
+ # define strtok_r strtok_s
97
+ # define strdup _strdup
98
+ # define snprintf _snprintf
99
+ # define getcwd _getcwd
100
+ # define mkdir _mkdir
101
+ # define popen _popen
102
+ # define pclose _pclose
103
+
104
+ # ifndef __MINGW32__
105
+ # define PATH_MAX MAX_PATH
106
+ # define isatty _isatty
107
+ # define fileno _fileno
108
+ # endif
109
+
110
+ // The following defines conflict with our identifiers:
111
+ # undef CONST
112
+ // `wingdi.h` defines a TRANSPARENT macro that conflicts with X(TRANSPARENT) entry in kernel/constids.inc
113
+ # undef TRANSPARENT
114
+ #endif
115
+
116
+ #ifndef PATH_MAX
117
+ # define PATH_MAX 4096
118
+ #endif
119
+
120
+
121
+ #define YOSYS_NAMESPACE Yosys
122
+ #define PRIVATE_NAMESPACE_BEGIN namespace {
123
+ #define PRIVATE_NAMESPACE_END }
124
+ #define YOSYS_NAMESPACE_BEGIN namespace Yosys {
125
+ #define YOSYS_NAMESPACE_END }
126
+ #define YOSYS_NAMESPACE_PREFIX Yosys::
127
+ #define USING_YOSYS_NAMESPACE using namespace Yosys;
128
+
129
+ #if defined(__GNUC__) || defined(__clang__)
130
+ # define YS_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
131
+ #elif defined(_MSC_VER)
132
+ # define YS_ATTRIBUTE(...)
133
+ #else
134
+ # define YS_ATTRIBUTE(...)
135
+ #endif
136
+
137
+ #if defined(__GNUC__) || defined(__clang__)
138
+ # define YS_MAYBE_UNUSED __attribute__((__unused__))
139
+ #else
140
+ # define YS_MAYBE_UNUSED
141
+ #endif
142
+
143
+ #if __cplusplus >= 201703L
144
+ # define YS_FALLTHROUGH [[fallthrough]];
145
+ #elif defined(__clang__)
146
+ # define YS_FALLTHROUGH [[clang::fallthrough]];
147
+ #elif defined(__GNUC__)
148
+ # define YS_FALLTHROUGH [[gnu::fallthrough]];
149
+ #else
150
+ # define YS_FALLTHROUGH
151
+ #endif
152
+
153
+
154
+ YOSYS_NAMESPACE_BEGIN
155
+
156
+ // Note: All headers included in hashlib.h must be included
157
+ // outside of YOSYS_NAMESPACE before this or bad things will happen.
158
+ #ifdef HASHLIB_H
159
+ # undef HASHLIB_H
160
+ # include "kernel/hashlib.h"
161
+ #else
162
+ # include "kernel/hashlib.h"
163
+ # undef HASHLIB_H
164
+ #endif
165
+
166
+
167
+ using std::vector;
168
+ using std::string;
169
+ using std::tuple;
170
+ using std::pair;
171
+
172
+ using std::make_tuple;
173
+ using std::make_pair;
174
+ using std::get;
175
+ using std::min;
176
+ using std::max;
177
+
178
+ // A primitive shared string implementation that does not
179
+ // move its .c_str() when the object is copied or moved.
180
+ struct shared_str {
181
+ std::shared_ptr<string> content;
182
+ shared_str() { }
183
+ shared_str(string s) { content = std::shared_ptr<string>(new string(s)); }
184
+ shared_str(const char *s) { content = std::shared_ptr<string>(new string(s)); }
185
+ const char *c_str() const { return content->c_str(); }
186
+ const string &str() const { return *content; }
187
+ bool operator==(const shared_str &other) const { return *content == *other.content; }
188
+ unsigned int hash() const { return hashlib::hash_ops<std::string>::hash(*content); }
189
+ };
190
+
191
+ using hashlib::mkhash;
192
+ using hashlib::mkhash_init;
193
+ using hashlib::mkhash_add;
194
+ using hashlib::mkhash_xorshift;
195
+ using hashlib::hash_ops;
196
+ using hashlib::hash_cstr_ops;
197
+ using hashlib::hash_ptr_ops;
198
+ using hashlib::hash_obj_ops;
199
+ using hashlib::dict;
200
+ using hashlib::idict;
201
+ using hashlib::pool;
202
+ using hashlib::mfp;
203
+
204
+ namespace RTLIL {
205
+ struct IdString;
206
+ struct Const;
207
+ struct SigBit;
208
+ struct SigSpec;
209
+ struct Wire;
210
+ struct Cell;
211
+ struct Memory;
212
+ struct Process;
213
+ struct Module;
214
+ struct Design;
215
+ struct Monitor;
216
+ struct Selection;
217
+ struct SigChunk;
218
+ enum State : unsigned char;
219
+
220
+ typedef std::pair<SigSpec, SigSpec> SigSig;
221
+
222
+ namespace ID {}
223
+ }
224
+
225
+ namespace AST {
226
+ struct AstNode;
227
+ }
228
+
229
+ using RTLIL::IdString;
230
+ using RTLIL::Const;
231
+ using RTLIL::SigBit;
232
+ using RTLIL::SigSpec;
233
+ using RTLIL::Wire;
234
+ using RTLIL::Cell;
235
+ using RTLIL::Module;
236
+ using RTLIL::Design;
237
+
238
+ using RTLIL::State;
239
+ using RTLIL::SigChunk;
240
+ using RTLIL::SigSig;
241
+
242
+ namespace hashlib {
243
+ template<> struct hash_ops<RTLIL::Wire*> : hash_obj_ops {};
244
+ template<> struct hash_ops<RTLIL::Cell*> : hash_obj_ops {};
245
+ template<> struct hash_ops<RTLIL::Memory*> : hash_obj_ops {};
246
+ template<> struct hash_ops<RTLIL::Process*> : hash_obj_ops {};
247
+ template<> struct hash_ops<RTLIL::Module*> : hash_obj_ops {};
248
+ template<> struct hash_ops<RTLIL::Design*> : hash_obj_ops {};
249
+ template<> struct hash_ops<RTLIL::Monitor*> : hash_obj_ops {};
250
+ template<> struct hash_ops<AST::AstNode*> : hash_obj_ops {};
251
+
252
+ template<> struct hash_ops<const RTLIL::Wire*> : hash_obj_ops {};
253
+ template<> struct hash_ops<const RTLIL::Cell*> : hash_obj_ops {};
254
+ template<> struct hash_ops<const RTLIL::Memory*> : hash_obj_ops {};
255
+ template<> struct hash_ops<const RTLIL::Process*> : hash_obj_ops {};
256
+ template<> struct hash_ops<const RTLIL::Module*> : hash_obj_ops {};
257
+ template<> struct hash_ops<const RTLIL::Design*> : hash_obj_ops {};
258
+ template<> struct hash_ops<const RTLIL::Monitor*> : hash_obj_ops {};
259
+ template<> struct hash_ops<const AST::AstNode*> : hash_obj_ops {};
260
+ }
261
+
262
+ void memhasher_on();
263
+ void memhasher_off();
264
+ void memhasher_do();
265
+
266
+ extern bool memhasher_active;
267
+ inline void memhasher() { if (memhasher_active) memhasher_do(); }
268
+
269
+ void yosys_banner();
270
+ int ceil_log2(int x) YS_ATTRIBUTE(const);
271
+
272
+ inline std::string vstringf(const char *fmt, va_list ap)
273
+ {
274
+ // For the common case of strings shorter than 128, save a heap
275
+ // allocation by using a stack allocated buffer.
276
+ const int kBufSize = 128;
277
+ char buf[kBufSize];
278
+ buf[0] = '\0';
279
+ va_list apc;
280
+ va_copy(apc, ap);
281
+ int n = vsnprintf(buf, kBufSize, fmt, apc);
282
+ va_end(apc);
283
+ if (n < kBufSize)
284
+ return std::string(buf);
285
+
286
+ std::string string;
287
+ char *str = NULL;
288
+ #if defined(_WIN32 )|| defined(__CYGWIN__)
289
+ int sz = 2 * kBufSize, rc;
290
+ while (1) {
291
+ va_copy(apc, ap);
292
+ str = (char*)realloc(str, sz);
293
+ rc = vsnprintf(str, sz, fmt, apc);
294
+ va_end(apc);
295
+ if (rc >= 0 && rc < sz)
296
+ break;
297
+ sz *= 2;
298
+ }
299
+ if (str != NULL) {
300
+ string = str;
301
+ free(str);
302
+ }
303
+ return string;
304
+ #else
305
+ if (vasprintf(&str, fmt, ap) < 0)
306
+ str = NULL;
307
+ if (str != NULL) {
308
+ string = str;
309
+ free(str);
310
+ }
311
+ return string;
312
+ #endif
313
+ }
314
+
315
+ std::string stringf(const char *fmt, ...) YS_ATTRIBUTE(format(printf, 1, 2));
316
+
317
+ inline std::string stringf(const char *fmt, ...)
318
+ {
319
+ std::string string;
320
+ va_list ap;
321
+
322
+ va_start(ap, fmt);
323
+ string = vstringf(fmt, ap);
324
+ va_end(ap);
325
+
326
+ return string;
327
+ }
328
+
329
+ int readsome(std::istream &f, char *s, int n);
330
+ std::string next_token(std::string &text, const char *sep = " \t\r\n", bool long_strings = false);
331
+ std::vector<std::string> split_tokens(const std::string &text, const char *sep = " \t\r\n");
332
+ bool patmatch(const char *pattern, const char *string);
333
+ #if !defined(YOSYS_DISABLE_SPAWN)
334
+ int run_command(const std::string &command, std::function<void(const std::string&)> process_line = std::function<void(const std::string&)>());
335
+ #endif
336
+ std::string get_base_tmpdir();
337
+ std::string make_temp_file(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX");
338
+ std::string make_temp_dir(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX");
339
+ bool check_file_exists(std::string filename, bool is_exec = false);
340
+ bool check_directory_exists(const std::string& dirname);
341
+ bool is_absolute_path(std::string filename);
342
+ void remove_directory(std::string dirname);
343
+ bool create_directory(const std::string& dirname);
344
+ std::string escape_filename_spaces(const std::string& filename);
345
+
346
+ template<typename T> int GetSize(const T &obj) { return obj.size(); }
347
+ inline int GetSize(RTLIL::Wire *wire);
348
+
349
+ extern int autoidx;
350
+ extern int yosys_xtrace;
351
+
352
+ RTLIL::IdString new_id(std::string file, int line, std::string func);
353
+ RTLIL::IdString new_id_suffix(std::string file, int line, std::string func, std::string suffix);
354
+
355
+ #define NEW_ID \
356
+ YOSYS_NAMESPACE_PREFIX new_id(__FILE__, __LINE__, __FUNCTION__)
357
+ #define NEW_ID_SUFFIX(suffix) \
358
+ YOSYS_NAMESPACE_PREFIX new_id_suffix(__FILE__, __LINE__, __FUNCTION__, suffix)
359
+
360
+ // Create a statically allocated IdString object, using for example ID::A or ID($add).
361
+ //
362
+ // Recipe for Converting old code that is using conversion of strings like ID::A and
363
+ // "$add" for creating IdStrings: Run below SED command on the .cc file and then use for
364
+ // example "meld foo.cc foo.cc.orig" to manually compile errors, if necessary.
365
+ //
366
+ // sed -i.orig -r 's/"\\\\([a-zA-Z0-9_]+)"/ID(\1)/g; s/"(\$[a-zA-Z0-9_]+)"/ID(\1)/g;' <filename>
367
+ //
368
+ #define ID(_id) ([]() { const char *p = "\\" #_id, *q = p[1] == '$' ? p+1 : p; \
369
+ static const YOSYS_NAMESPACE_PREFIX RTLIL::IdString id(q); return id; })()
370
+ namespace ID = RTLIL::ID;
371
+
372
+ namespace hashlib {
373
+ template<> struct hash_ops<RTLIL::State> : hash_ops<int> {};
374
+ }
375
+
376
+
377
+ YOSYS_NAMESPACE_END
378
+
379
+ #endif
@@ -1,5 +1,5 @@
1
1
  // **AUTOGENERATED FILE** **DO NOT EDIT**
2
- // Generated by ../yosys-src/techlibs/quicklogic/qlf_k6n10f/generate_bram_types_sim.py at 2024-04-04 02:33:31.959107+00:00
2
+ // Generated by ../yosys-src/techlibs/quicklogic/qlf_k6n10f/generate_bram_types_sim.py at 2024-04-10 20:48:01.941850+00:00
3
3
  `timescale 1ns /10ps
4
4
 
5
5
  module TDP36K_BRAM_A_X1_B_X1_nonsplit (
@@ -902,18 +902,34 @@ endgenerate
902
902
  endmodule
903
903
 
904
904
  // --------------------------------------------------------
905
-
905
+ // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
906
+ //-
907
+ //- $macc (A, B, Y)
908
+ //-
909
+ //- Multiply and accumulate.
910
+ //- A building block for summing any number of negated and unnegated signals
911
+ //- and arithmetic products of pairs of signals. Cell port A concatenates pairs
912
+ //- of signals to be multiplied together. When the second signal in a pair is zero
913
+ //- length, a constant 1 is used instead as the second factor. Cell port B
914
+ //- concatenates 1-bit-wide signals to also be summed, such as "carry in" in adders.
915
+ //- Typically created by the `alumacc` pass, which transforms $add and $mul
916
+ //- into $macc cells.
906
917
  module \$macc (A, B, Y);
907
918
 
908
919
  parameter A_WIDTH = 0;
909
920
  parameter B_WIDTH = 0;
910
921
  parameter Y_WIDTH = 0;
922
+ // CONFIG determines the layout of A, as explained below
911
923
  parameter CONFIG = 4'b0000;
912
924
  parameter CONFIG_WIDTH = 4;
913
925
 
914
- input [A_WIDTH-1:0] A;
915
- input [B_WIDTH-1:0] B;
916
- output reg [Y_WIDTH-1:0] Y;
926
+ // In the terms used for this cell, there's mixed meanings for the term "port". To disambiguate:
927
+ // A cell port is for example the A input (it is constructed in C++ as cell->setPort(ID::A, ...))
928
+ // Multiplier ports are pairs of multiplier inputs ("factors").
929
+ // If the second signal in such a pair is zero length, no multiplication is necessary, and the first signal is just added to the sum.
930
+ input [A_WIDTH-1:0] A; // Cell port A is the concatenation of all arithmetic ports
931
+ input [B_WIDTH-1:0] B; // Cell port B is the concatenation of single-bit unsigned signals to be also added to the sum
932
+ output reg [Y_WIDTH-1:0] Y; // Output sum
917
933
 
918
934
  // Xilinx XSIM does not like $clog2() below..
919
935
  function integer my_clog2;
@@ -929,10 +945,42 @@ function integer my_clog2;
929
945
  end
930
946
  endfunction
931
947
 
948
+ // Bits that a factor's length field in CONFIG per factor in cell port A
932
949
  localparam integer num_bits = CONFIG[3:0] > 0 ? CONFIG[3:0] : 1;
950
+ // Number of multiplier ports
933
951
  localparam integer num_ports = (CONFIG_WIDTH-4) / (2 + 2*num_bits);
952
+ // Minium bit width of an induction variable to iterate over all bits of cell port A
934
953
  localparam integer num_abits = my_clog2(A_WIDTH) > 0 ? my_clog2(A_WIDTH) : 1;
935
954
 
955
+ // In this pseudocode, u(foo) means an unsigned int that's foo bits long.
956
+ // The CONFIG parameter carries the following information:
957
+ // struct CONFIG {
958
+ // u4 num_bits;
959
+ // struct port_field {
960
+ // bool is_signed;
961
+ // bool is_subtract;
962
+ // u(num_bits) factor1_len;
963
+ // u(num_bits) factor2_len;
964
+ // }[num_ports];
965
+ // };
966
+
967
+ // The A cell port carries the following information:
968
+ // struct A {
969
+ // u(CONFIG.port_field[0].factor1_len) port0factor1;
970
+ // u(CONFIG.port_field[0].factor2_len) port0factor2;
971
+ // u(CONFIG.port_field[1].factor1_len) port1factor1;
972
+ // u(CONFIG.port_field[1].factor2_len) port1factor2;
973
+ // ...
974
+ // };
975
+ // and log(sizeof(A)) is num_abits.
976
+ // No factor1 may have a zero length.
977
+ // A factor2 having a zero length implies factor2 is replaced with a constant 1.
978
+
979
+ // Additionally, B is an array of 1-bit-wide unsigned integers to also be summed up.
980
+ // Finally, we have:
981
+ // Y = port0factor1 * port0factor2 + port1factor1 * port1factor2 + ...
982
+ // * B[0] + B[1] + ...
983
+
936
984
  function [2*num_ports*num_abits-1:0] get_port_offsets;
937
985
  input [CONFIG_WIDTH-1:0] cfg;
938
986
  integer i, cursor;
@@ -207,7 +207,7 @@ module _90_fa (A, B, C, X, Y);
207
207
  endmodule
208
208
 
209
209
  (* techmap_celltype = "$lcu" *)
210
- module _90_lcu (P, G, CI, CO);
210
+ module _90_lcu_brent_kung (P, G, CI, CO);
211
211
  parameter WIDTH = 2;
212
212
 
213
213
  (* force_downto *)
yowasp_yosys/yosys.wasm CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: yowasp-yosys
3
- Version: 0.39.0.165.post702.dev0
3
+ Version: 0.40.0.0.post707
4
4
  Summary: Yosys Open SYnthesis Suite
5
5
  Author-email: Catherine <whitequark@whitequark.org>
6
6
  License: ISC
@@ -1,8 +1,8 @@
1
1
  yowasp_yosys/__init__.py,sha256=x--xPTzLWZNoX6H0B2E3a1HMZMk3di10gVnWVLJ92xc,1325
2
- yowasp_yosys/sby.py,sha256=lYWozSmdPDReqYxqthJEyqVPJ5xctfV5YM-eUlQkbFk,18442
2
+ yowasp_yosys/sby.py,sha256=5T0BrIqJ5vobWMd9nOEClXq0rlRxCXNPYycGGS0l7zc,18414
3
3
  yowasp_yosys/smtbmc.py,sha256=bGnVDnvEGCRWuNdHfsqwMdCNJ9GJqdeBuxehh8N9M64,73159
4
4
  yowasp_yosys/witness.py,sha256=m3iV2Nydm0p4G79VRaaX3lGul-nGnuxeKnx20MCJgi0,17279
5
- yowasp_yosys/yosys.wasm,sha256=7vWd8EVZdGTj5ppFECLzRHyu-Lk1W85QSgx6smxo7qQ,21709649
5
+ yowasp_yosys/yosys.wasm,sha256=ayR3ZoYGvWnTafWIXzMBfP_KGkO829m-JP5CsAZRumA,21712677
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
@@ -16,9 +16,9 @@ yowasp_yosys/share/gate2lut.v,sha256=j5EJAuBnWNw15j0sjK-Seq2BTgleebDF3aAN0pc-8L0
16
16
  yowasp_yosys/share/mul2dsp.v,sha256=TL_2F12hxIt-rnnbbZ-1xYv9VXJEUdGW8n_sFpvpFFg,9065
17
17
  yowasp_yosys/share/pmux2mux.v,sha256=P7McDtR51FZIuX5nSlejXkt2Ez7I1nOY2JBxeaT5L78,342
18
18
  yowasp_yosys/share/simcells.v,sha256=2fUcWGwHGP-Ci6d0DU574952S-8sVG8LxS1lWUupA0Q,87795
19
- yowasp_yosys/share/simlib.v,sha256=HtaniUhPAkjpd1df5QlD1vPTOxCEO5NByVSzgA_M7H0,65182
19
+ yowasp_yosys/share/simlib.v,sha256=zLHzu739KBF83mNdnpdwjaIzszx-feUHzq8R2_RFmDM,67614
20
20
  yowasp_yosys/share/smtmap.v,sha256=Dqqww6UyTcww0FA8w6Vx9dT7E_6m-8GBUe-ylP95nKw,654
21
- yowasp_yosys/share/techmap.v,sha256=PwHSgKMQTNL0LKhmT2vzVVsXxqRIWn7uJxqcqhO9fh0,16929
21
+ yowasp_yosys/share/techmap.v,sha256=LFR-fsOUcZpZX4YDgNmgQERcpExCxxmUG9YqpWfWcOY,16940
22
22
  yowasp_yosys/share/achronix/speedster22i/cells_map.v,sha256=l_JkNqebLyY9xHVkaLa5JDHExiERD72W-TeKAqHeUqU,2629
23
23
  yowasp_yosys/share/achronix/speedster22i/cells_sim.v,sha256=WAAXWao0YxFMgWIUavUsPh-r3dYkQpyiqAwdgXzDvEM,2343
24
24
  yowasp_yosys/share/anlogic/arith_map.v,sha256=uYS7PW7EJm6e3EEy2qV3OKjaEV4lw3PEPYhFmSRVuv8,2473
@@ -29,6 +29,7 @@ yowasp_yosys/share/anlogic/cells_sim.v,sha256=epraJHHQBEbx_kSaj_0dGS6pbRc0IrP_2g
29
29
  yowasp_yosys/share/anlogic/eagle_bb.v,sha256=ZQhWneKSL-AebbaZj3hUv2sjPpzrtR4CXCwfg25fiME,33586
30
30
  yowasp_yosys/share/anlogic/lutrams.txt,sha256=96pdcT_NpWWTcX1v5HEhniLH2BTgD8dYJkK6BZpzcN0,151
31
31
  yowasp_yosys/share/anlogic/lutrams_map.v,sha256=WEvqKXQvd0TdhPyS1DuPwOA3lbxcdqBZ2RHT0LHW16Y,661
32
+ yowasp_yosys/share/choices/kogge-stone.v,sha256=0XaGBM8mOlk3Mjtm99KbiO5_6lHS42sTExueb5KJ6No,1583
32
33
  yowasp_yosys/share/coolrunner2/cells_counter_map.v,sha256=zi0Ya0lPJ1w8ynIkGSFEAMqPDXYrnxv1jZoF_cUrWQc,4884
33
34
  yowasp_yosys/share/coolrunner2/cells_latch.v,sha256=PG04D2pJ2xV7QpopzvbMazWRhpXWLCyzuHwgN8YAkFM,367
34
35
  yowasp_yosys/share/coolrunner2/cells_sim.v,sha256=kwVGEh-gQ2jP8RcQq0qvm0W5tJt5CiEE9o35KWUKzc8,5435
@@ -50,7 +51,7 @@ yowasp_yosys/share/efinix/arith_map.v,sha256=0oifXq1BMAnabb58BJKJtESKw1yXA1bDpjO
50
51
  yowasp_yosys/share/efinix/brams.txt,sha256=AlQhnLckQAb_OmZeWrr5dEPFi0dKdA0lhojdtTu8aYM,296
51
52
  yowasp_yosys/share/efinix/brams_map.v,sha256=XUIm7DMwnrfmf51qqe0QzjtXpFV-CiEKQ8m-6yqPOOA,3603
52
53
  yowasp_yosys/share/efinix/cells_map.v,sha256=BitbqxY_Yv9JgyX1BAorTjHA2v1xB50TxAtZv6aeJgs,2693
53
- yowasp_yosys/share/efinix/cells_sim.v,sha256=oSFbeaaPU1VN5bUNdYJrYodjGVIjMd3KHexcHaMtO20,5391
54
+ yowasp_yosys/share/efinix/cells_sim.v,sha256=JOepXYOVqJA5iO51ba1ugaHIuUjIJWSIwIn1wQrW7Yw,5392
54
55
  yowasp_yosys/share/efinix/gbuf_map.v,sha256=ETBAD1_tZzIm9dk2iU2LbRFGRH1qO3YEGi6J-AWMj9E,131
55
56
  yowasp_yosys/share/fabulous/arith_map.v,sha256=zmTbG0T8lKptz3B0KwL95u07lkIlifFd_eUeH6ZHYbU,1385
56
57
  yowasp_yosys/share/fabulous/cells_map.v,sha256=16DG5BRVff-GuZ4ojWx4Gt0arSE6Lu9Kx9SYMagI9no,1063
@@ -126,19 +127,20 @@ yowasp_yosys/share/include/kernel/ffmerge.h,sha256=I3mXyytzRyP92T9XhSQTlv7EN2G31
126
127
  yowasp_yosys/share/include/kernel/fmt.h,sha256=0UT-aDVX7_KnzlaNyK3iMsSzoICa4Q0HhqsFIrwHBMw,2790
127
128
  yowasp_yosys/share/include/kernel/hashlib.h,sha256=puZr8kGY10J_g2M7j3pPFJQk9aGDFWwqVLO3nHf4sCQ,30207
128
129
  yowasp_yosys/share/include/kernel/json.h,sha256=tE3AgUslbZd5TRFEipj0HptYjWgNfMjzV44l3A5zAu8,2851
129
- yowasp_yosys/share/include/kernel/log.h,sha256=YPv7HbRY7Aiin43nbnmiPBM7-dpdvhQYHoOYEpslgQ4,15339
130
+ yowasp_yosys/share/include/kernel/log.h,sha256=qNxXQdisMGuJU1mjSnASyDjmlTNcyvg_Jj_ooRT8-KA,15373
130
131
  yowasp_yosys/share/include/kernel/macc.h,sha256=WOUw0yARLUqxZw6HhZV47zRwUA2X8X7mwD_jb1yUZzE,6991
131
132
  yowasp_yosys/share/include/kernel/mem.h,sha256=kCejpLHHg7E2O8EcQx0Wi8PRNcULDm-7t_QEYsXoNNc,9176
132
133
  yowasp_yosys/share/include/kernel/modtools.h,sha256=W2d-ZsAggrjlva6cAQsMKCRpzss_AlnYXUEPWDd2xWE,14281
133
134
  yowasp_yosys/share/include/kernel/qcsat.h,sha256=ibhpJRu0youjDXPllXrDJi851VpwW1kbJ_y94_X6JhU,2804
134
- yowasp_yosys/share/include/kernel/register.h,sha256=DqCnlUl1rD7vcrVPkoKROVhATyIZsoBTfBTeXeqk84Q,5449
135
- yowasp_yosys/share/include/kernel/rtlil.h,sha256=3DFpXn42r2dlFvK0jXU6m0NujKAhKaIFkH5feGprvXA,84866
135
+ yowasp_yosys/share/include/kernel/register.h,sha256=2xAbUndqoXwACqtqowqmfmRQQFlwEpV82wy2ejSGwUY,5482
136
+ yowasp_yosys/share/include/kernel/rtlil.h,sha256=utslquUEYNUwyUSSIDZsZZzIoXKBeQ7POXRPI9Wn-iQ,84899
136
137
  yowasp_yosys/share/include/kernel/satgen.h,sha256=zx8LptIgds0Z9sxXx6HGxNNYuk05dHqQZy1aXFWEXC0,10483
137
138
  yowasp_yosys/share/include/kernel/scopeinfo.h,sha256=Oc1lOh6b7qNL9zD4DVq5rvlkur6-IXALhx32ewD1UHk,11230
138
139
  yowasp_yosys/share/include/kernel/sigtools.h,sha256=qC0CgK3OJwam_ljqtW-kauA3djylLLoI2rbSs4Zhn5s,7504
139
140
  yowasp_yosys/share/include/kernel/timinginfo.h,sha256=9MI3ve19pJouYXKng1EBlrryAKy-OaH6Hc8VbLu0GYY,7100
140
141
  yowasp_yosys/share/include/kernel/utils.h,sha256=r5GUGry9LEcyasrGnI6luII_8wgf-Iri0H8_FgwWzRY,6824
141
- yowasp_yosys/share/include/kernel/yosys.h,sha256=x6hhqiFhUdq5yMVlCmqY6xEP2w4d6NfsWEADlNxfSlo,13683
142
+ yowasp_yosys/share/include/kernel/yosys.h,sha256=TRn6yuZGWcBQkrB1nc7dvUhISz3dnS8eMKvVynyBko8,3421
143
+ yowasp_yosys/share/include/kernel/yosys_common.h,sha256=FnNXDxs7oQEbDuZ9mWuM7TQS_ex0Z5pn67egEs0gEWM,11332
142
144
  yowasp_yosys/share/include/kernel/yw.h,sha256=jibYunDP1ZMYwCxo616nHgdGyPGis_8TO9fYmYdHfd4,5429
143
145
  yowasp_yosys/share/include/libs/ezsat/ezminisat.h,sha256=bSrDL6VRinpXdULoR8P9lQaT1Dy4kAEZfTcKjRKOdjg,2098
144
146
  yowasp_yosys/share/include/libs/ezsat/ezsat.h,sha256=eggeGwS9pFyxSYGT0RtOqX189pbXFAKDfPZzIYTmqIk,14523
@@ -243,7 +245,7 @@ yowasp_yosys/share/quicklogic/pp3/latches_map.v,sha256=UrGzRlwwITwA7mMlXhHlDFPiw
243
245
  yowasp_yosys/share/quicklogic/pp3/lut_map.v,sha256=BmijMS4EqVQPP2BPo2zgKStKPPhRLTf5kbcAtGKZEVs,928
244
246
  yowasp_yosys/share/quicklogic/qlf_k6n10f/TDP18K_FIFO.v,sha256=k1AVrwpOQ3vpxoWAbchRpmNbncYCYtVfDExz6VcmtBg,10404
245
247
  yowasp_yosys/share/quicklogic/qlf_k6n10f/arith_map.v,sha256=Ea7aX3l71nFxP1Az5NHtca-ZPnQmUmUvlWI-tVl4Bkk,2560
246
- yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v,sha256=wmQVDKdgvUhjWt8C0z5nTtTHHZtap5pYbri4jCJ-kz8,2551774
248
+ yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v,sha256=rzlxKUs02KLJhtRn3rGbWctA3DHcNsi6P7w6-Dxhy_I,2551774
247
249
  yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_map.v,sha256=Iqj4w3Vna6W80liLUtDhAQKwciQNZWX3aFr9FDBU5o4,103558
248
250
  yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_sim.v,sha256=mJXEws9AvJLeUBr3eJzxTEvN7Y89zpkNsoR2tpjLu-w,339634
249
251
  yowasp_yosys/share/quicklogic/qlf_k6n10f/cells_sim.v,sha256=70GVgjrXbld6c2yITFriyoJLqO8CAcHDyA8oUPfkItg,7347
@@ -292,8 +294,8 @@ yowasp_yosys/share/xilinx/xc5v_dsp_map.v,sha256=I4lg0RQ54fBBba_7NNvUgwS4tQ1yLIsU
292
294
  yowasp_yosys/share/xilinx/xc6s_dsp_map.v,sha256=gTxHocB-Dn5G4BplWgri_tLhT6DIO2S0X-yu4iBKYyk,562
293
295
  yowasp_yosys/share/xilinx/xc7_dsp_map.v,sha256=zrzreQi7mElrAMtrayxtiO_Bw00S6zsjSjSVcjmJPH0,884
294
296
  yowasp_yosys/share/xilinx/xcu_dsp_map.v,sha256=gzCgl1emrHGcigVmU0nP0pW7dlhQ01SaWwXzHHcqt-o,882
295
- yowasp_yosys-0.39.0.165.post702.dev0.dist-info/METADATA,sha256=0fDBPj7YEoTZALz6__iF5O4oqZw5YFXZZZPOWMiV8mU,2614
296
- yowasp_yosys-0.39.0.165.post702.dev0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
297
- yowasp_yosys-0.39.0.165.post702.dev0.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
298
- yowasp_yosys-0.39.0.165.post702.dev0.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
299
- yowasp_yosys-0.39.0.165.post702.dev0.dist-info/RECORD,,
297
+ yowasp_yosys-0.40.0.0.post707.dist-info/METADATA,sha256=OGFyJWSZ93BEJZs-xR8UrhuOyOvBw9jepa8S8kqEbHk,2607
298
+ yowasp_yosys-0.40.0.0.post707.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
299
+ yowasp_yosys-0.40.0.0.post707.dist-info/entry_points.txt,sha256=p_9sIVi2ZqsqgYYo14PywYkwHYTa76fMEq3LxweXJpc,220
300
+ yowasp_yosys-0.40.0.0.post707.dist-info/top_level.txt,sha256=_yiNT8kLYkcD1TEuUCzQ_MkON1c3xuIRV59zXds4zd4,13
301
+ yowasp_yosys-0.40.0.0.post707.dist-info/RECORD,,