Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add JSON AST dumps #46

Closed
wants to merge 7 commits into from
Closed

Add JSON AST dumps #46

wants to merge 7 commits into from

Conversation

sgizler
Copy link

@sgizler sgizler commented Nov 21, 2023

Verilator's AST can currently be dumped into custom .tree representation for debug purposes. This PR adds a mostly equivalent JSON representation which is easier to process programmatically.

Example use cases

Tree diffing

An example of how this is useful is the astsee tool which can pretty-print and diff these JSON dumps.
diff

Tree navigation

An example HTML representation for easy navigation of the AST:
example.zip

GDB commands

astsee can also be used from within GDB. Useful for diffing the AST at runtime, even within a single Verilator stage.
gdb

@kbieganski kbieganski marked this pull request as draft November 22, 2023 08:43
docs/internals.rst Outdated Show resolved Hide resolved
docs/internals.rst Outdated Show resolved Hide resolved
docs/internals.rst Outdated Show resolved Hide resolved
src/.gdbinit Show resolved Hide resolved
src/.gdbinit Outdated Show resolved Hide resolved
src/.gdbinit.py Outdated Show resolved Hide resolved
src/.gdbinit.py Outdated Show resolved Hide resolved
src/.gdbinit.py Show resolved Hide resolved
Comment on lines +901 to +904
// --dump-json-tree will serve as alias to --dump-tree-json. Rationale is that:
// - It is easy typo to make (after all tool used for pretty printing is called jsontree)
// - Parsing of dump* options is very "forgiving" and does not report error when non-existing
// option is used

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// --dump-json-tree will serve as alias to --dump-tree-json. Rationale is that:
// - It is easy typo to make (after all tool used for pretty printing is called jsontree)
// - Parsing of dump* options is very "forgiving" and does not report error when non-existing
// option is used
// --dump-json-tree aliases --dump-tree-json, as it's an easy mistake

src/V3AstNodes.cpp Show resolved Hide resolved
sgizler and others added 2 commits November 22, 2023 13:37
Co-authored-by: Krzysztof Bieganski <[email protected]>
Co-authored-by: Krzysztof Bieganski <[email protected]>
@kbieganski kbieganski changed the title [DRAFT] Add dumps of AST in JSON Add Nov 22, 2023
@kbieganski kbieganski changed the title Add Add JSON AST dumps Nov 22, 2023
@kbieganski kbieganski closed this Nov 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants