Skip to content

devtools improvements#657

Open
desmonddak wants to merge 25 commits into
intel:mainfrom
desmonddak:devtool_utilities
Open

devtools improvements#657
desmonddak wants to merge 25 commits into
intel:mainfrom
desmonddak:devtool_utilities

Conversation

@desmonddak
Copy link
Copy Markdown
Contributor

Description & Motivation

Our devtools implementation has significant gaps, even as a shell, and this PR is to prepare it to support more functionality by making at least the shell work properly.

Currently, it would not run using Open DevTools in Browser because of a service worker problem (waiting for one that never gets started). It also would only connect to the first isolate running at top level (say in an example) and not be able to connect to an isolate in a test function inside a main().

So now the shell can at least connect to the first available debugger session using Open DevTools in Browser.

I added some basic widget utilities that will be used in upcoming enhancements to devtools: a Help widget and a Snapshot widget (allowing for screenshots of widget panes).

So, the shell is now workable; it can connect to a ROHD debug session, load its design into the module tree widget, and show the details pane with other functionality stubbed out but plumbed.

Related Issue(s)

Testing

Ran the build_web.sh
Ran a debug session in the test area on a simulation.
Ran a devtools session and connected to the debugger, displayed the details pane, took snapshots.

Backwards-compatibility

Is this a breaking change that will not be backwards-compatible? If yes, how so?

Some ambiguity on the service worker connection (we don't seem to need it after extensive testing in a more complex devtools implementation)

Documentation

Does the change require any updates to documentation? If so, where? Are they included?

No update required.

Introduces a singleton service registry (ModuleServices) that provides a
unified query surface for DevTools and inspection tools. Module.build()
now registers the root module with ModuleServices.instance.

Also adds SvService which wraps SystemVerilog synthesis and registers
with ModuleServices for DevTools access to SV metadata.

This is a clean separation: no netlist code is included. The netlist
branch will later extend ModuleServices with a netlistService field.
DevTools now evaluates ModuleServices.instance.hierarchyJSON instead of
ModuleTree.instance.hierarchyJSON. ModuleServices delegates to ModuleTree
internally, so behavior is unchanged.
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.

1 participant