3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-06-08 07:03:24 +00:00
Commit graph

301 commits

Author SHA1 Message Date
Gary Wong
10bb0f472f docs: mention related effects for multiplexers in the cell library. 2025-05-30 21:43:33 -06:00
Gary Wong
62660b221f docs: restore and update the note about if/case attributes. 2025-05-30 21:18:09 -06:00
Gary Wong
370d5871f4 verilog: implement SystemVerilog unique/unique0/priority if semantics.
There are two elements involved:

1) Apply the relevant full_case and/or parallel_case attribute(s) to
the generated AST_CASE node(s), so that the existing AST frontend and
subsequent passes will generate RTLIL with appropriate behaviour.
(This is handled in the parser "if_attr" non-terminal.)

2) Rearrange the AST_CASE structure when necessary.  For "priority if"
(i.e., full_case), this requires only ensuring that directly nested
"else if" branches also inherit the full_case attribute.  For
"unique if" and "unique0 if" (i.e., parallel_case+full_case and
parallel_case alone), there are two steps:
    a) Flatten the AST_CASE structure such that any direct "else if"
    branches are mapped to additional AST_CONDs in the parent;
    b) Reverse the "direction" of the test: the constant 1 (true)
    is provided in the AST_CASE node, and the expression(s) in the
    if statement(s) are given in each AST_COND.  This is necessary
    because the constant 1, being the common factor, must occupy the
    shared AST_CASE position.
(This is handled in the parser "TOK_IF" expansion of behavioral_stmt.)

Observe that:
 * The generated AST has not been changed for bare "if"s (those
 without unique/priority).  This should minimise the risk of
 unexpected regressions.

 * It is possible that the flattening described in 2) a) above might
 affect the behaviour of expressions with side effects in "unique if"
 statements (consider "unique if( a ) ...; else if( b++ ) ...": if
 a is true, is b incremented?).  While it might be possible to provide
 precise semantics here, IEEE 1800-2012 12.4.2 seems to be deliberately
 vague ("In unique-if and unique0-if, the conditions may be evaluated
 and compared in any order[...] The presence of side effects in
 conditions may cause nondeterministic results.") and so it seems
 doubtful that there is benefit in Yosys providing stronger promises
 on the interpretation of questionable code.
2025-05-29 20:45:57 -06:00
Gary Wong
9770ece187 Accept (and ignore) SystemVerilog unique/priority if.
Add support to the "read_verilog -sv" parser to validate the
"unique", "unique0", and "priority" keywords in contexts where
they're legal according to 1800-2012 12.4.2.

This affects only the grammar accepted; the behaviour of conditionals
is not changed.  (But accepting this syntax will provide scope for
possible optimisations as future work.)

Three test cases ("unique_if", "unique_if_else", and
"unique_if_else_begin") verify that the keywords are accepted where
legal and rejected where illegal, as described in the final paragraph
of 12.4.2.
2025-05-22 19:28:28 -06:00
Miodrag Milanovic
53c22ab7c0 Release version 0.53 2025-05-06 07:45:16 +02:00
Emily Schmidt
19845be85c reflow dft docs to 80 cols 2025-04-15 09:57:14 +01:00
Emily Schmidt
bfed96ad88 some fixes and rewordings of the dft docs 2025-04-15 09:57:14 +01:00
Emily Schmidt
ea6e5b3c48 add changes to dft docs suggested by Krystine 2025-04-15 09:57:14 +01:00
Emily Schmidt
30486079f9 add dft_tag documentation 2025-04-15 09:57:14 +01:00
N. Engelhardt
3410e10ed5
Merge pull request #5000 from YosysHQ/krys/re_refactor_selections 2025-04-10 16:06:36 +00:00
Emily Schmidt
32ec5a9ccd Revert "add dft_tag documentation"
This reverts commit 2443facc46.
2025-04-09 10:34:11 +01:00
Emily Schmidt
2443facc46 add dft_tag documentation 2025-04-09 10:18:25 +01:00
Miodrag Milanovic
fee39a3284 Release version 0.52 2025-04-09 07:38:42 +02:00
Krystine Sherwin
cd3b914132
Reinstate #4768
Revert the reversion so that we can fix the bugs that the PR missed.
2025-04-08 11:58:05 +12:00
Miodrag Milanović
d49364d96f
Revert "Refactor full_selection" 2025-04-07 12:11:55 +02:00
KrystalDelusion
98d4355b82
Merge pull request #4768 from YosysHQ/krys/refactor_selections
Refactor full_selection
2025-04-05 14:15:27 +13:00
KrystalDelusion
cce7aaedf7
Merge pull request #4939 from DanielG/rsync-fallback
mk: Fall back to cp if rsync is not available
2025-03-25 10:41:27 +13:00
KrystalDelusion
644efca341
Merge pull request #4953 from YosysHQ/krys/local_docs_fixes
A few fixes, mostly local docs builds
2025-03-25 10:36:18 +13:00
Daniel Gröber
2b67ad78bf mk: Fall back to cp if rsync is not available 2025-03-24 18:06:17 +01:00
Krystine Sherwin
39a1623ac0
Docs: Don't READTHEDOCS on local builds 2025-03-18 03:57:17 +13:00
Krystine Sherwin
8877817fa9
Fix Docs issues for offline pdf builds #4777
Drop svg badges.  Even though they were only appearing in the html version, the latexpdf target was still trying to download them, leading to warnings-as-errors in offline builds.
2025-03-15 12:14:09 +13:00
Scott Ashcroft
d8af6b0616 docs: Add latex magic to make PDFs reproducible again 2025-03-14 21:48:08 +01:00
Krystine Sherwin
dac2bb7d4d
Use selection helpers
Catch more uses of selection constructor without assigning a design.
2025-03-14 14:08:13 +13:00
Martin Povišer
6da543a61a
Merge pull request #4818 from povik/macc_v2
Add `$macc_v2`
2025-03-12 22:55:40 +01:00
Miodrag Milanovic
c4b5190229 Release version 0.51 2025-03-12 08:31:37 +01:00
N. Engelhardt
c74df780b7
Merge pull request #4884 from YosysHQ/docs-preview-functional_tutorial
Docs: More on FunctionalIR
2025-03-10 15:05:55 +00:00
Krystine Sherwin
c9785584da
docs/rosette: Fix tenses 2025-03-07 08:39:21 +13:00
Krystine Sherwin
b56e3ec6e4
docs/functional: Minimal backend paragraphs
I was thinking about compiling the dummy example and including a simple example usage, but it turns out functional.h isn't (currently) available for extensions.
2025-03-01 16:15:54 +13:00
Krystine Sherwin
3c493d2bef
docs/rosette: Reword
Acknowledge the minimal functional backend, highlighting what's new/different for our SExpr targets.
Add and use the reference `minimal backend`.
Use `note` directives to point out missing code sections (highlighting that the included diffs are not complete).
Racket *is* still strongly-typed, it's just dynamic instead of static.  Adjust phrasing to reflect that.
Adjust some of the literal includes, adding a new section from the `Functional::AbstractVisitor`, splitting the `Module::write_eval()` in twain and adding a `smtlib.cc` literal include for the node iteration, as well as for the `FunctionalSmtBackend` to compare against the minimal backend.
Move `Backend` description up to minimal functional backend section.
2025-02-28 16:33:57 +13:00
Krystine Sherwin
e01a413722
docs/rosette: List major changes in overview
Also a little paragraph on why SMT-LIB is used as the base.
2025-02-28 14:57:41 +13:00
Krystine Sherwin
560b5fe6bd
docs/functional: Add dummy toy example
Add `dummy.cc`, loosely based on `backends/functional/test_generic.cc` but as an actualy backend and without the memory testing.
Skeleton section for minimal functional backend, describing the aforementioned `dummy.cc`.
2025-02-27 16:14:59 +13:00
Krystine Sherwin
db823a6acb
docs/rosette: Fix inline code 2025-02-27 16:11:44 +13:00
Krystine Sherwin
c429aef60f
docs/rosette: More intro of SMT-LIB backend
As the intro paragraph (now) says:
> This section will introduce the SMT-LIB functional backend and what changes are needed...

The example is intended to be read without prior knowledge of the SMT-LIB backend, but the previous version glossed over a lot and instead focused on *just* what was changed.
This version should now be easier to follow without prior knowledge, while still being able to learn enough about the `Smt` version to adapt it to a different s-expression target that isn't Rosette.
Also adds a few `literalinclude`s of smtlib.cc, which is now copied to `docs/source/generated` along with producing the rosette diff on the fly (which now also has up to 20 lines of context, enabling the full `Module::write()` diff to be literal included).
2025-02-22 17:14:13 +13:00
Krystine Sherwin
38746ea5fa
docs: Cross reference contributing
.md points to .html on latest
.rst points to .md on main (not that it will work before this is merged)
2025-02-20 14:16:41 +13:00
Miodrag Milanovic
b5170e1394 Release version 0.50 2025-02-11 07:55:17 +01:00
Krystine Sherwin
819c3260ec
docs/rosette: Backend section body 2025-02-07 15:33:40 +13:00
Krystine Sherwin
b02d2c633e
docs/rosette: Module section body 2025-02-07 15:09:06 +13:00
Krystine Sherwin
34c424be68
docs/rosette: Minor updates
- Fixing typo
- Reference `write_functional_rosette`
- Adjusting/fixing diff sections
- Comment on why the `code-block:: diff` isn't a `literalinclude`
2025-02-07 15:08:24 +13:00
Krystine Sherwin
dc5a5b7bd1
docs/rosette: Regen rosette.diff
This time from the actual source, which apparently means changing all of the spaces for tabs.
2025-02-07 14:13:34 +13:00
Krystine Sherwin
d73c58fad1
docs/rosette: Sort, Struct, and PrintVisitor sections 2025-02-04 12:24:34 +13:00
Krystine Sherwin
1b6b6a77ba
docs/rosette: Add details for Scope
Add a diff file and use it for showing changes from smtlib to rosette.
Also add relevant sections of diff to Sort and Struct sections.
2025-01-25 09:51:20 +13:00
Martin Povišer
61450e8b6e Update codebase for macc_v2 2025-01-24 12:38:03 +01:00
Krystine Sherwin
242c037158
docs/rosette: Add overview 2025-01-24 13:10:34 +13:00
Miodrag Milanovic
427b5a251b Release version 0.49 2025-01-21 14:59:09 +01:00
Emil J
da5c20dcfb
Merge pull request #4849 from YosysHQ/emil/hashlib-merge-top-ops
hashlib: merge hash_ops with hash_top_ops for plugin compat
2025-01-21 12:09:27 +01:00
Emil J. Tywoniak
a2c26a00f2 hashlib: document merged hash_top_ops with hash_ops 2025-01-20 16:25:52 +01:00
KrystalDelusion
0c61f1a9a8
conf.py: Fix source_directory 2025-01-20 16:30:30 +13:00
KrystalDelusion
ab4bda8ae2
Docs: Fix links for view/edit source 2025-01-20 16:19:36 +13:00
Krystine Sherwin
f4c7377ac1
functional_ir.rst: Fix typo 2025-01-06 14:30:55 +13:00
Krystine Sherwin
23fa9b2014
functional_ir.rst: Initial skeleton for Rosette 2025-01-06 14:30:29 +13:00