3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-24 09:35:32 +00:00
Commit graph

14907 commits

Author SHA1 Message Date
Krystine Sherwin
ebd6d5f85b
cmdref: Drop optiongroups
Linking to optiongroups doesn't add *that* much, and is kind of a pain; meanwhile having the optiongroups adds an extra level of indentation.
Instead of options needing to be in an option group, they instead go in either the root node or nested in a usage node.  Putting them in a usage node allows for more-or-less the previous behaviour but without making it the default.
2025-03-21 10:28:48 +13:00
Krystine Sherwin
a2433ba34b
cmdref: Format help_script() output as yoscrypt
Or at least all of the synth commands, because they have the same preceding text.
Except `synth_fabulous`, because that has unconditional `read_verilog`s at the start.  Which seems like a bad idea and and not compatible with `-run`?
2025-03-21 10:28:48 +13:00
Krystine Sherwin
b1c9097a12
cmdref: codeblock language now works
Add `options` map for setting `ContentListing` options with key:val pairs; currently only used with `ContentListing::codeblock()` language arg.
Fix generated codeblock rst to print each line of code with indentation, and change it to use explicit an `code-block` so we can set a language on it.
2025-03-21 10:28:48 +13:00
Krystine Sherwin
fb944ca0fb
cmdref: Drop pmgen index 2025-03-21 10:28:47 +13:00
Krystine Sherwin
435e3d5fc1
cmdref: Split passes/status from passes/cmds
Rename passes/cmds from "General passes" to "Design modification".
More `yosys.h` includes.

cmdref: Split passes/status from passes/cmds

Rename passes/cmds from "General passes" to "Design modification".
More `yosys.h` includes.
2025-03-21 10:28:47 +13:00
Krystine Sherwin
40b207d625
cmdref: Assign rmports to greenpak group
Also tidy `#include`s.
2025-03-21 10:28:47 +13:00
Krystine Sherwin
6f96f9c373
Docs: Title for index_internal 2025-03-21 10:28:47 +13:00
Krystine Sherwin
753b418a8b
Docs: Skeleton documentation for writing command help
Use `chformal` as example, comparing the `autocmd` output with `ChformalPass::formal_help()`, the json dump from the `ContentListing`, the command line output, and the RST generated (using `autocmd_rst`).
Includes bullet points on each step for more information.
Should eventually end up in `yosys_internals/extending_yosys/contributing.rst`, but it currently lives in `cmd/index_internal.rst` to avoid merge conflicts since cell help documentation is still WIP.
Also exports chformal source and help output to `docs/source/generated` during `make docs/prep`.
2025-03-21 10:28:47 +13:00
Krystine Sherwin
b4ccaf8c08
autocmd_rst: autodoc for generated RST
Adds `autocmd_rst` directive, which effectively calls `autocmd` for the same command, but wraps it in a code-block in order to render the raw RST generated.
2025-03-21 10:26:13 +13:00
Krystine Sherwin
97b9a4c095
cmd_documenter: Fix option_spec
Need to copy parent class `option_spec` to retain default options (e.g. `:noindex:`).
2025-03-21 10:26:13 +13:00
Krystine Sherwin
07b6a35553
Docs: Option lists have yoscrypt highlights 2025-03-21 10:26:13 +13:00
Krystine Sherwin
d1d419cb51
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-03-21 10:26:12 +13:00
Krystine Sherwin
a74aeb1301
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-03-21 10:26:12 +13:00
Krystine Sherwin
598b41406c
Docs: Don't force READTHEDOCS on local
readthedocs detection should only trigger on actual readthedocs builds.
2025-03-21 10:26:12 +13:00
Krystine Sherwin
024bfcdc53
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-03-21 10:26:12 +13:00
Krystine Sherwin
a898ade473
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-03-21 10:26:12 +13:00
Krystine Sherwin
b9485ce094
register.h: Add internal_flag to Pass
Update experimental pass warnings to use a shared function.  Reduces repetition, and also allows all of the warning flags to be combined (which at present is just experimental and the new internal).
Update `test_*` passes to call `internal()` in their constructors.
2025-03-21 10:26:12 +13:00
Krystine Sherwin
f4ad934542
log_help: Refactor help content adding
Content is now added to the `ContentListing` rather than the `PrettyHelp`.
`open_*` methods return the `ContentListing` that was added instead of leaving a hanging continuation.
This allows for (e.g.) options to be added directly to optiongroups, instead of requiring that groups be closed before continuation.
This also means that all `PrettyHelp`s are a listing, with the actual log being called by the default `Pass::help()`; making the mode field redundant.
Added `PrettyHelp::log_help()` which replaces the `PrettyHelp::Mode::LOG` logic.
Added `ContentListing::back()` which just returns the last element of the underlying content vector.
Some of the content tracking was made redundant and removed, in particular `PrettyHelp::_current_listing` and `ContentListing::parent`.

Converted `ContentListing` to a class instead of a struct, adjusting constructors to match.
Added `ContentListing` constructor that accepts a `source_location`.

Update `HelpPass::dump_cmds_json()` for new log_help.
2025-03-21 10:26:12 +13:00
Krystine Sherwin
bce73af324
Docs: Show warning on experimental cmds 2025-03-21 10:26:12 +13:00
Krystine Sherwin
a3125ce892
cmdref: Add cmd titles
Display subheadings for each command.
Remove now redundant toc entry for `yosys> help <cmd>` line.
2025-03-21 10:26:11 +13:00
Krystine Sherwin
68cb02d9f3
Rename help_v2 to formatted_help
Also add comments to `help()` and `formatted_help()` to clarify usage.
2025-03-21 10:26:11 +13:00
Krystine Sherwin
34c514bf96
source_location: Try use __has_include 2025-03-21 10:26:11 +13:00
Krystine Sherwin
d244b4a101
register: Remove <filesystem>
Use `string::find_last_of()` instead.
Not sure how this works on windows, but it was already using '/' so at least it's not any worse.
2025-03-21 10:26:11 +13:00
Krystine Sherwin
2575f87381
source_location: Auto detect library
Drop `ENABLE_SOURCE_LOCATION` flag.
2025-03-21 10:26:11 +13:00
Krystine Sherwin
343758371d
Docs: docs/source/cmd is source only
i.e. we don't need to clean it, and we don't need to include it in the docs artifact
2025-03-21 10:26:11 +13:00
Krystine Sherwin
49907914c4
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-03-21 10:26:11 +13:00
Krystine Sherwin
11af1a275b
Docs: Downgrade missing cmdgroup warning
Log an info message, and put a warning for the content instead.
2025-03-21 10:26:11 +13:00
Krystine Sherwin
07c2666447
dump_cmds_json: Output groups
Also output `pass->location.{file_name,line,function_name}()`.
If no group is given (i.e. it is "unknown"), attempt to automatically apply a group.
If we have source locations, this is based on path to the source file.
If we do not have source locations, try to match on the pass name instead.
2025-03-21 10:26:10 +13:00
Krystine Sherwin
aedc13ab7f
log_help: Add manual group support
Sets `chformal` group to "formal" for testing purposes
2025-03-21 10:26:10 +13:00
Krystine Sherwin
1efd3aeb7d
Move source_location to register.h
Revert `PrettyHelp::get_current()` for no args since we can use `Pass::location` instead.
2025-03-21 10:26:10 +13:00
Krystine Sherwin
431cb2d1b9
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-03-21 10:26:10 +13:00
Krystine Sherwin
620dcd8a38
dump_cmds_json: Fix auto formatting
- Command list for script passes
- Check buffer after loop
- Close options properly
- Ignore mismatched sigs e.g. `fsm_detect` on `fsm`
- Require double blank line before new signature
2025-03-21 10:26:10 +13:00
Krystine Sherwin
35498ae3f6
docs: Working cmdref groups
Also adds note on source location if available.
2025-03-21 10:26:10 +13:00
Krystine Sherwin
a0da79981b
log_help: Better location tracking
Assign root location in call to `PrettyHelp::get_current()`.
Set default `source_file` to `"unknown"`, since that appears to be the default value rather than `nullptr`.
2025-03-21 10:26:10 +13:00
Krystine Sherwin
4e88f86414
Makefile: Drop cmds rst from docs/prep 2025-03-21 10:26:10 +13:00
Krystine Sherwin
59bcd7ce14
cmdref: Combine consecutive code blocks
Formatting is nicer when there is only one code block instead of multiple in a row, especially in pdf.
2025-03-21 10:25:46 +13:00
Krystine Sherwin
69fa0f9fef
Docs: Update cmdref domain
Compatible with `dump_cmds_json`.
2025-03-21 10:25:46 +13:00
Krystine Sherwin
0e1434ac0c
Docs: Fix dump_cmds_json for PrettyHelp 2025-03-21 10:25:45 +13:00
Krystine Sherwin
fd5e420edd
log_help: {add,push,pop}_content helpers 2025-03-21 10:25:45 +13:00
Krystine Sherwin
09dfbea6df
log_help: Json dumpable
Current modes are `LOG` and `LISTING`, which `log()` and store for conversion to json respectively.
Add `ContentListing` listing struct to (recursively) contain help data for conversion to a json object to be exported and used elsewhere (e.g. the docs).
Rather than formatting as rst we can just export with type information and do the conversion at the destination (i.e. in the python code which loads the domain for autodoc).
Implement `PrettyHelp::has_content()`.
Provide `PrettyHelp::get_content()` which returns a read-only list of the current content.
`PrettyHelp` constructor takes optional `Mode` enum to define format of help content.
Updates `PrettyHelp` methods to use a switch case for checking current mode, calling `log_abort()` in the default case (i.e. unsupported mode).
2025-03-21 10:25:45 +13:00
Krystine Sherwin
a7da7d3a56
log_help: Include source_location
Use `std::experimental::source_location` because clang support is `??`
Add `ENABLE_SOURCE_LOCATION` make variable and corresponding `YOSYS_ENABLE_SOURCE_LOCATION` define.
Dummy out the struct if disabled and check for null instead of using `#ifdef` blocks everywhere.
2025-03-21 10:25:45 +13:00
Krystine Sherwin
40e6fe8263
log_help: Options can have content
Refactor `PrettyHelp::endgroup()` -> `PrettyHelp::close(int levels = 1)`.
2025-03-21 10:25:45 +13:00
Krystine Sherwin
af9e0dd0f4
WIP docs: Proto log_help
Define `PrettyHelp` class with methods for declaring different parts of help message.
Currently able to produce standard help messages as expected.
Updates chformal to use (only) the new help_v2.
Currently makes use of a global static to track the current help context, allowing register.h to live in blissful ignorance and instead rely on help_v2 implementations calling `auto *help = PrettyHelp::get_current();` and `return true;` to minimise impact on rebuilds (i.e. not requiring every source file to be recompiled).
2025-03-21 10:25:45 +13:00
Krystine Sherwin
8607e3c537
Makefile: Add cmds.json to docs/prep 2025-03-21 10:25:02 +13:00
Krystine Sherwin
e289e32e61
Docs: Improve autoref
Fix `help $cell` type references, as well as actually implement the fallback to yoscrypt.
2025-03-21 10:24:28 +13:00
Krystine Sherwin
5d239204f2
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-03-21 10:24:28 +13:00
Krystine Sherwin
ac80755521
Docs: Test new pass help with chformal 2025-03-21 10:24:28 +13:00
Krystine Sherwin
63be4d3dd3
Docs: WIP dump_cmds_json 2025-03-21 10:24:28 +13:00
Krystine Sherwin
41a489f085
register: Add pass_usages and default help
Experimental new formatting for describing passes that can be rendered into the standard help format, as well as being more amenable to smarter formatting for web documentation.
2025-03-21 10:24:27 +13:00
Krystine Sherwin
31dba47521
json.h: Fix array template
Using `{begin|end}_object` inserts curly braces instead of square brackets, which can result in reordering (and may be syntactically incorrect?).
2025-03-21 10:24:27 +13:00