Skip to content

The window and live updates

The front end (src/gui/, feature gui) renders the model on the GPUI framework (docs/adr/0001-gui-toolkit.md) and forwards the user's actions to it. It holds no EDA state of its own.

Live updates

STUDIO-REQ-0160 While the workbench follows HEAD, a commit or a revert by any program is followed live: the watcher reports the replaced manifest (STUDIO-REQ-0001, STUDIO-REQ-0002), the workbench reads the new HEAD under the shared lock and, when it differs from the displayed revision, loads it; the revision panel is refreshed at every manifest change. Commits made while the workbench polls are all followed, ending at the last HEAD.

STUDIO-REQ-0161 Installing a loaded revision keeps the user's view: the open scopes (by their path of levels), the path filter and the cone depths stay; the selection and the focus move to the objects of the same names in the new revision (instances by name, paths by endpoint, corner and check), and what has no counterpart is dropped; a revision without paths focuses nothing; a search runs again on the new revision. The change is noted as U0082. A load that fails is the error U0081 and the displayed revision stays. ui_state.json is not rewritten (STUDIO-REQ-0147).

STUDIO-REQ-0162 A revision chosen in the revision panel (or with --rev) is pinned: the workbench shows it and does not follow commits, while the revision panel still lists them. "follow HEAD" loads HEAD and follows again.

The window

STUDIO-REQ-0163 One window shows: a top bar with the workspace, the displayed revision and whether it follows HEAD or is pinned, the command and tool that made it, its timing status and the progress of a load in flight; on the left the hierarchy explorer with its search field and the revision panel; in the middle the corner summary with the analysis scope and the path filters, the path table, and the logic cone with its depth controls; on the right the path detail and the RTL source with the hits of the cross-probe; and a status bar with the numbers of errors, warnings and notes, the latest warning or error, the shared selection and the poll interval.

STUDIO-REQ-0164 Interactions: a click on a path row selects it (STUDIO-REQ-0141) and focuses it; a click on a scope row opens or closes it, on an instance row selects and focuses the instance; typing edits the search query (backspace deletes, escape clears) and searches at once; a click on a search result scope opens it in the tree; the filter buttons set the family, the negative-slack filter and the corner; the depth buttons change the cone's fan-in and fan-out levels; on the cone, the mouse wheel zooms around the cursor, a drag pans, a click on a node cross-probes it, a double click makes it the cone's root and a click with control or shift adds it to the selection; a click on a point of the path detail cross-probes its instance; a click on a hit shows it in the source pane; a click on a revision pins it.

STUDIO-REQ-0165 The hierarchy tree, the search results, the path table, the path points and the source lines are virtualized lists: only their visible rows are built and drawn, so their cost does not grow with the design.

STUDIO-REQ-0166 The render thread never waits for a load: the watcher's poll runs on a timer of the window (two stat calls, and the small reads of the manifest or ui_state.json when they changed), and a revision is loaded on a background thread as an observable, cancellable run (STUDIO-REQ-0008) whose result is installed when it is ready. A load superseded by a newer revision is cancelled, and the newer one starts when it has stopped.