Commit Graph

369 Commits

Author SHA1 Message Date
Krystine Sherwin 2e5b029ba5
Docs: Option lists have yoscrypt highlights 2025-07-21 10:35:56 +12:00
Krystine Sherwin 92ab125113
cmdref: Assigning cmds to formal group
Give formal index a proper title.
Use `Pass::formatted_help()` to assign the group, but still return `false` because the help text still comes from `Pass::help()`.
Tidy up some of the affected files' includes to make use of the shared `yosys.h` includes.
2025-07-21 10:35:56 +12:00
Krystine Sherwin 37782cb92b
Docs: Grouping changes
Keep techlibs folder hierarchy.
techlibs/* and passes/* groups are now nested under index_techlibs and index_passes respectively, with most (all?) of the passes/* pages getting proper headings, as well as backends/frontends/kernel.  `index_passes_techmap` also references `index_techlibs`.
Split command reference toc in twain, one with maxdepth=2 and one with maxdepth=3, since passes and techlibs now have an extra level of nesting.
Move the `cmd_ref` link to the command reference, instead of top of the page.
Remove `index_internal` and `index_other` from the toc, and mark the pages as orphan. Internal commands get a note callout after the command reference toc (although this doesn't work for the pdf build), while other commands are linked in the warning for missing `source_location` (since that *should* be the only time when there are any commands in the "unknown" group).
Update autodoc extension versions, and mark the directives extension as not `parallel_read_safe` (it might be, but I'm not sure about how the xref lookups work if it is parallel so better to be safe).
2025-07-21 10:35:56 +12:00
Krystine Sherwin 0ec336ba23
Docs: Add :cmd:title: directive
Calling :cmd:title:`<cmd>` will generate a cross reference to `<cmd>`, but unlike :cmd:ref: which displays a literal block and puts the title (short_help) in the hovertext (the title field of an a-ref), :cmd:title: will display "<cmd> - <short_help>" as plain text.
Thus replacing the previous use case of referring to :doc:`cmd/<cmd>`.
Also refactor util py scripts to have more descriptive names.
2025-07-21 10:35:19 +12:00
Krystine Sherwin 14fdc9e76c
cmdref: Export internal_flag to json
Commands flagged as internal will display a warning, just like experimental commands.
Drop `passes/tests` group in favour of `internal` group, which is automatically assigned for any command without an assigned group which is flagged as internal.
2025-07-21 10:35:19 +12:00
Krystine Sherwin 7647d2c741
Docs: Fix warnings
Changes a bunch of :doc:`/cmd/*` to :cmd:ref:`*` with the intention of changing it later to something that replicates the previous effect of displaying the commands `short_help`.
2025-07-21 10:34:32 +12:00
Krystine Sherwin 929c437b26
Docs: Group commands
Removes group parsing from command ref domain, instead relying on a 'groups' object in the cmds.json file.
`docs/source/cmd` is no longer ignored or cleaned.
2025-07-21 10:34:13 +12:00
Krystine Sherwin f5ace20bf6
Docs: Improve autoref
Fix `help $cell` type references, as well as actually implement the fallback to yoscrypt.
2025-07-21 10:33:31 +12:00
Krystine Sherwin 714790c70b
Docs: Proto doc_string approach for cmd help
Add `doc_string` field to `Pass` constructor
Add `docs/util/newcmdref.py` to contain command domain
Update `docs/util/cmdref.py` with `cmd:usage` and `cmd:optiongroup` for describing commands.
Functional, but WIP.
2025-07-21 10:33:31 +12:00
Martin Povišer 9ab1946799
Merge pull request #5209 from povik/hieropt
Start `opt_hier` to enable hierarchical optimization
2025-07-17 14:12:18 +02:00
KrystalDelusion 1a215719e5
Merge pull request #5192 from garytwong/multiline-string
verilog: support newline and hex escapes in string literals
2025-07-08 10:27:01 +12:00
Miodrag Milanovic 60f126cd00 Release version 0.55 2025-07-07 11:26:04 +02:00
Martin Povišer 62067cd6cb Update docs after addition of new pass 2025-07-05 16:45:52 +02:00
Gary Wong 5feb1a1752 verilog: add support for SystemVerilog string literals.
Differences are new escape sequences (including escaped newline
continuations and hex escapes) and triple-quoted literals.
2025-07-03 20:51:12 -06:00
KrystalDelusion 82888580ac
Merge pull request #5152 from garytwong/unique-if
verilog: implement SystemVerilog unique/unique0/priority if semantics.
2025-06-13 09:56:53 +12:00
Miodrag Milanovic db72ec3bde Release version 0.54 2025-06-09 07:23:54 +02:00
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
KrystalDelusion 06db8828b2
abc.rst: Clarify larger-but-slower 2025-05-31 09:10:27 +12:00
Gary Wong 7a9d727bd0 docs: several small documentation fixes. 2025-05-29 21:26:28 -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
Krystine Sherwin ef7734d610
functional_ir.rst: Formatting
Line breaks.
Put intro under sub-heading.
2025-01-06 12:01:21 +13:00
KrystalDelusion 9e039095e9
Docs: Remove restructure note
It's been almost a year since the restructure, so it's not recent anymore and doesn't need to link back to the old version.
2025-01-06 11:08:00 +13:00
Emil J. Tywoniak b9b9515bb0 hashlib: hash_eat -> hash_into 2024-12-18 15:09:25 +01:00
Emil J. Tywoniak 0a525f38c2 hashlib: declare YS_HASHING_VERSION = 1 2024-12-18 15:09:25 +01:00
Emil J. Tywoniak 4e29ec1854 hashlib: acc -> eat 2024-12-18 15:09:25 +01:00
Emil J. Tywoniak 79acc141d5 hashlib: add deprecated mkhash function to prevent plugin breakage 2024-12-18 14:58:53 +01:00
Emil J. Tywoniak 6d53454bf5 docs: move hashing-based container details into internal docs from guidelines 2024-12-18 14:58:53 +01:00
Emil J 1401906d81 docs: formatting and fixes
Co-authored-by: KrystalDelusion <93062060+KrystalDelusion@users.noreply.github.com>
2024-12-18 14:58:53 +01:00
Krystine Sherwin 0454787443 Docs: Formatting and fixes 2024-12-18 14:58:51 +01:00
Emil J. Tywoniak ad0dc17711 docs: document the ideas behind the hashing interface 2024-12-18 14:58:31 +01:00
Miodrag Milanovic aaa5347494 Release version 0.48 2024-12-11 08:35:36 +01:00
Krystine Sherwin 40af327cb6
Docs/installation: Drop resolved todos 2024-12-05 09:21:13 +13:00
Krystine Sherwin 6b3f2fdc8d
Docs: Installation instructions
Add warning for Cygwin.
Add commented out instructions for MSYS2 that I tried to get to work but ran into build errors.
2024-12-05 09:21:13 +13:00
Krystine Sherwin b9d73d0a8e
Docs: Note on releases 2024-12-05 09:21:13 +13:00
Krystine Sherwin a7ea375cfc
Docs/installation: Fix code indentation
Update FreeBSD line to include CXX as well as CC.
Drop unneeded todo.
2024-12-05 09:21:13 +13:00
Krystine Sherwin 0aef78245e
Moving primary build instructions to docs
Also drop visual studio instructions.
2024-12-05 09:21:13 +13:00
Krystine Sherwin c1f42f725b
Docs: Formatting recent md -> rst converts 2024-12-05 09:21:12 +13:00
Krystine Sherwin 9925b27432
Goodbye guidelines (except GettingStarted)
Drop the parts that are being dropped.
Move the things that are being moved.
Also move the verilog stuff out of README and into the docs.
GettingStarted is less cut and dry, so hold off on that one.
2024-12-05 09:21:12 +13:00
Krystine Sherwin f0da1cc67f
Start removing guidelines folder
Disable the export to docs and remove any references to the guidelines folder.
2024-12-05 09:18:56 +13:00
KrystalDelusion 6f3376cbe6
Merge pull request #4730 from YosysHQ/krys/downstream-docs
Improvements for downstream-distro maintainability.
2024-11-28 14:35:16 +13:00
George Rennie 8148ebd1ad docs: document that assigns must come before switches in case rules 2024-11-21 22:41:13 +01:00
Krystine Sherwin e649c1a8e1
Docs: Accept empty string for release envvar 2024-11-20 12:31:12 +13:00
Krystine Sherwin 44b68fb498
Docs: Add check for envvar to disable todos 2024-11-20 12:18:17 +13:00
KrystalDelusion 22e214ec6d
Merge pull request #4705 from YosysHQ/docs-preview-lintonly
Emphasise that read_verilog doesn't lint
2024-11-19 03:57:01 +13:00
Krystine Sherwin 1476eaba00
Docs: Add fallback for missing furo_ys
This is mainly intended for (latex)pdf builds which do not use the furo-ys html theme, where the yosys script syntax highlighting can safely fallback to plaintext.  This effectively makes `furo-ys` an optional dependency to simplify distro-package maintainability.
See also #4725.
2024-11-12 16:23:12 +13:00
KrystalDelusion 4343c791cb
Merge pull request #4704 from YosysHQ/krys/drop_ilang
Remove references to ilang
2024-11-08 11:28:06 +13:00
Miodrag Milanovic 647d61dd92 Release version 0.47 2024-11-05 07:59:25 +01:00
Krystine Sherwin e4994554fd
Docs: Fix nested list 2024-11-05 13:48:48 +13:00
Krystine Sherwin b14a651142
Docs: Mention verilator for linting
Link to verilator in the introduction.
Include `verilator --lint-only fifo.v` in the example synth doc.
Fix linter warnings in fifo.v.
2024-11-05 13:29:45 +13:00
Krystine Sherwin ee73a91f44
Remove references to ilang 2024-11-05 12:36:31 +13:00
Krystine Sherwin 4ea6119734
cmdref: Move html only section inside cmd:def
Fixes missing links in body and `??` in tag/command index.
Update synth.rst to match.
2024-10-17 06:06:57 +13:00
Krystine Sherwin e9d9e92804
Docs: Make code_examples/extensions parallel safe 2024-10-17 04:40:21 +13:00