3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-09-15 06:01:28 +00:00
Commit graph

15746 commits

Author SHA1 Message Date
Robert O'Callahan
b98e54416f When looking up the IdString table, it can never be empty after we've called prepopulate, so remove some dead code. 2025-09-12 05:29:22 +00:00
Emil J
2ec119854c
Merge pull request #5335 from higuoxing/attr_list
verilog_parser: Use unique_ptr<> to store the attribute list.
2025-09-11 17:21:46 +02:00
Xing Guo
9a6f25fb73 verilog_parser: Use unique_ptr<> to store the attribute list.
We can get rid of the new / delete statements and free_attr() and we
don't need to manage the memory manually.
2025-09-11 09:57:45 +08:00
github-actions[bot]
c2291c10a6 Bump version 2025-09-10 00:22:30 +00:00
Emil J
201c40072c
Merge pull request #5327 from YosysHQ/emil/do_insert-dont-build-new-hash
hashlib: don't build an unused hash for expired value in do_insert
2025-09-09 21:53:39 +02:00
Emil J
5278b9cfe1
Merge pull request #5332 from YosysHQ/parse_specify-rebased
Add state_dependent_path_declaration so that `ifnone` can be parsed (rebased)
2025-09-09 21:53:04 +02:00
Jannis Harder
04de6209da
Merge pull request #5243 from rocallahan/typed-log
Make `log` functions variadic templates
2025-09-09 17:38:09 +02:00
Jannis Harder
75a97241fa Maintain logging ABI compatiblity with YosysHQ Verific Extensions
The YosysHQ Verific Extensions are compiled separately using their own
stripped-down version of the Yosys headers. To maintain ABI
compatibility with older extension builds post C++-ification of Yosys's
logging APIs, which are backwards compatible on the API but not ABI
level, this commit adds ABI compatible versions of a subset of the old
logging API used by the extensions.
2025-09-09 15:41:03 +02:00
Robert O'Callahan
a137d03c32 Make log_cmd_error() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
243f5f5201 Make log_file_error() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
974455378b Make log_error() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
c3924d0616 Move log_abort()'s call to log_error() into an out-of-line non-varargs function 2025-09-09 15:41:03 +02:00
Robert O'Callahan
1b5373de0d Move log_assert_worker()'s call to log_error() into an out-of-line non-varags function 2025-09-09 15:41:03 +02:00
Robert O'Callahan
ea2bb5b79a Make log_file_info() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
ec5f62e6d4 Make log_file_warning() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
9764fa5c41 Remove superfluous/wasteful .c_str()s in log_file_warning() filename parameter 2025-09-09 15:41:03 +02:00
Robert O'Callahan
2a2c586e2c Make log_experimental() just take an std::string, since it doesn't need to be varargs. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
25cba6181e Make log_warning()/log_warning_noprefix() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
66d2c2af08 Make log_header() use variadic templates. 2025-09-09 15:41:03 +02:00
Robert O'Callahan
d34ac0c87d Make log() use the FmtString infrastructure.
Now `log()` supports `std::string`.

We have to fix a few places where the format parameter was not a compile time constant.
This is mostly trivial.
2025-09-09 15:41:03 +02:00
Robert O'Callahan
3f69a768f4 Hide public logv_ variant declarations that don't need to be public 2025-09-09 15:41:03 +02:00
Jannis Harder
931089c1c9
Merge pull request #5334 from jix/fix-memory_libmap-ubsan
memory_libmap: Fix use of uninitialized value for async read ports
2025-09-09 15:40:25 +02:00
Jannis Harder
61a00b9131 memory_libmap: Fix use of uninitialized value for async read ports
The code in memory_libmap expects `clk_en` to be initialized for all
`PortVariant`s but the parsing in memlib.cc didn't initialize it for
variants of kind `PortKind::Ar` (async read ports).

While this fixes the immediate CI failure, it would be best to refactor
the code so it becomes obvious if something isn't initialized.
2025-09-09 13:32:46 +02:00
Michael Kupfer
75316e8c49 Add state_dependent_path_declaration so that ifnone can be parsed 2025-09-09 13:04:52 +02:00
github-actions[bot]
23e4c0e424 Bump version 2025-09-09 00:23:18 +00:00
Jannis Harder
51fb5eed4e
Merge pull request #5324 from rocallahan/IdString-constants
Make `IdString` indices known at compile-time for `ID::` constants
2025-09-09 01:35:12 +02:00
Jannis Harder
0116dc4384 Add windows workaround to constids.inc 2025-09-09 10:04:08 +12:00
Jannis Harder
6498265eb0 Add macOS workaround to constids.inc
The ID(OVERFLOW) IdString isn't used widely enough that we require a
statically allocated IdString, but I think it's good to have an example
workaround in place in case more collisions come up.
2025-09-09 10:04:08 +12:00
Jannis Harder
985b9164da Disable flaky arch/anlogic/mux test 2025-09-09 10:04:08 +12:00
Jannis Harder
9213bc5d54 Update kernel/constids.inc to include all literal ids
I've used this shell command to obtain the list:

    rg -I -t cpp -t yacc -o \
        'ID\((\$?[a-zA-Z0-9_]+)\)|ID::($?[a-zA-Z0-9_]+)' -r 'X($1$2)' \
        | LC_ALL=C sort -u

This removed the entries X(_TECHMAP_FAIL_) and X(nomem2init).
2025-09-09 09:56:55 +12:00
Jannis Harder
a97381448a Ensure static IdStrings get prepopulated when initializing yosys
An alternative would be to call ensure_prepopulated() in various
IdString methods.
2025-09-09 09:56:55 +12:00
Jannis Harder
b6db32873d Add IdString const &id_string() const to StaticIdString and IdString
The vast majority of ID(...) uses are in a context that is overloaded
for StaticIdString or will cause implicit conversion to an IdString
constant reference. For some sufficently overloaded contexts, implicit
conversion may fail, so it's useful to have a method to force obtaining
a `IdString const &` from an ID(...) use.

When turning all literal IdStrings of the codebase into StaticIdStrings
this was needed in exactly one place, for which this commit adds an
`id_string()` call.
2025-09-09 09:56:55 +12:00
Jannis Harder
3ebecb631c Add a compile time check that kernel/constids.inc is sorted
This is an invariant now required by the ID macro, so it's better to
have an actual check and not rely on a comment at the top of
kernel/constids.inc.
2025-09-09 09:56:55 +12:00
Jannis Harder
2a4a9aedfe Ensure the ID macro consistently uses YOSYS_NAMESPACE_PREFIX
The previous version of the ID macro used this for everything in the
Yosys namespace, so the new version should continue to do so.
2025-09-09 09:56:55 +12:00
Robert O'Callahan
23af52c3c8 Use well-known constants in ID macro and make the constant values known at compile time 2025-09-09 09:56:55 +12:00
Jannis Harder
3d14108a96
Merge pull request #5323 from rocallahan/IdString-references
Pass `IdString` by reference in more places
2025-09-08 20:40:24 +02:00
Jannis Harder
c468ee7add
Merge pull request #5304 from rocallahan/idstring-stringf
Support `IdString` parameters in `stringf()` and remove `.c_str()` in a lot of places
2025-09-08 20:29:20 +02:00
Emil J
80582e02b0
Merge pull request #5317 from donn/libparse_error_weak
libparse/filterlib: mark LibertyParser::error() as weak
2025-09-08 19:59:08 +02:00
George Rennie
8fb3f88842 tests: remove -seq 1 from sat with -tempinduct where possible
* When used with -tempinduct mode, -seq <N> causes assertions to be
  ignored in the first N steps. While this has uses for reset modelling,
  for these test cases it is unnecessary and could lead to failures
  slipping through uncaught
2025-09-08 18:04:32 +02:00
github-actions[bot]
012ddc2f1e Bump version 2025-09-06 00:21:53 +00:00
Emil J
db7aa538f9
Merge pull request #5330 from higuoxing/fix-sva-in-case-expr
Fix handling of cases that look like sva labels again.
2025-09-05 20:10:56 +02:00
Emil J. Tywoniak
62120bda06 verilog: test cases that look like SVA labels #862 2025-09-05 12:34:38 +02:00
Emil J
71a88996d1
Merge pull request #5329 from mikesinouye/muxtree
Increase muxtree glob eval attempts to 10M.
2025-09-05 12:22:39 +02:00
Xing Guo
c30fd46ea3 Fix handling of cases that look like sva labels again.
Commit c8e0ac0 introduces a regression on handling case exprs that look
like sva labels.  After some debugging, we shouldn't push the identifier
ast node to the ast_stack, otherwise, we will get the following
assertion failure:

```
➜  /tmp yosys -p 'read -sv a1.v'

 /----------------------------------------------------------------------------\
 |  yosys -- Yosys Open SYnthesis Suite                                       |
 |  Copyright (C) 2012 - 2025  Claire Xenia Wolf <claire@yosyshq.com>         |
 |  Distributed under an ISC-like license, type "license" to see terms        |
 \----------------------------------------------------------------------------/
 Yosys 0.57+1 (git sha1 baa61a146, clang++ 20.1.8 -fPIC -O3)

-- Running command `read -sv a1.v' --

1. Executing Verilog-2005 frontend: a1.v
Parsing SystemVerilog input from `a1.v' to AST representation.
ERROR: Assert `extra->ast_stack.size() == 1' failed in frontends/verilog/verilog_parser.y:709.
➜  /tmp cat a1.v
module test(input wire A);
  localparam TEST = 1;
  always_comb begin
    case (A)
      TEST: assert(1);
    endcase
  end
endmodule
```

We encountered this issue before but with a different error message[^1],

[^1]: https://github.com/YosysHQ/yosys/issues/862
2025-09-05 11:54:13 +08:00
github-actions[bot]
baa61a146f Bump version 2025-09-05 00:23:12 +00:00
Mohamed Gaber
ae8c4e2ea6 libparse/filterlib: mark LibertyParser::error() as weak
When FILTERLIB is defined (attempts to compile libparse more or less standalone,) mark the `LibertyParser::error()` as weak so utilities using libparse as a library can override its behavior (the default behavior being exit(1)). As the code is quite performance-critical, I've elected to not modify it to raise an exception or have a callback or similar and simply allow for a link-time replacement.
2025-09-05 00:13:45 +02:00
Mike Inouye
6276464ea7
Increase muxtree glob eval attempts to 10M. 2025-09-04 10:52:37 -07:00
Emil J. Tywoniak
ccf140f2ef hashlib: don't build an unused hash for expired value in do_insert 2025-09-04 14:47:45 +02:00
Robert O'Callahan
030e5ec438 Make IdString hashing take a reference to the IdString instead of copying it 2025-09-04 14:17:08 +02:00
Robert O'Callahan
ddf7ba5a34 Make ID() macro return a reference to the underlying IdString instead of copying it
Lambda return type deduction infers `IdString` here.
2025-09-04 14:17:08 +02:00