Skip to content

GUI: Handle display controls for multiple loaded technologies (Web GUI)#10348

Open
openroad-ci wants to merge 7 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:multiple-tech-display-control
Open

GUI: Handle display controls for multiple loaded technologies (Web GUI)#10348
openroad-ci wants to merge 7 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:multiple-tech-display-control

Conversation

@openroad-ci
Copy link
Copy Markdown
Collaborator

fix #10209

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request implements a hierarchical layer management system, enabling the web interface to display and control layers organized by chiplet instances. It includes backend serialization of the chip hierarchy and a recursive frontend implementation for the layer tree and visibility controls. Feedback highlights the need for stable layer IDs based on instance names, the removal of redundant visibility checks, and a more consistent ID construction scheme to simplify fragile matching logic in the inspector.

Comment thread src/web/src/display-controls.js Outdated

if (hierarchyNode.instances && hierarchyNode.instances.length > 0) {
hierarchyNode.instances.forEach((inst, idx) => {
const instId = `${parentId}_inst_${idx}`;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

Using an index-based ID (inst${idx}) makes the layer visibility state dependent on the order of instances in the JSON and breaks compatibility with the instance_path used by the inspector. It is better to use the instance name provided in the hierarchy node to ensure stable and predictable IDs.

Suggested change
const instId = `${parentId}_inst_${idx}`;
const instId = parentId + "/" + (inst.name || idx);

Comment thread src/web/src/inspector.js Outdated
if (app.layerModel && layer_id) {
const nodeId = instance_path ? `layers_parent_${instance_path}_${layer_id}` : layer_id;
// Check layerModel visibility
if (app.layerModel.isVisible && !app.layerModel.isVisible(nodeId) && !app.layerModel.isVisible(`layers_parent/${instance_path}/${layer_id}`) && !app.layerModel.isVisible(`layers_parent_${instance_path}/${layer_id}`) && !app.layerModel.isVisible(`layers_parent_${instance_path}/${layer_id}`) && !app.layerModel.isVisible(instance_path ? `${instance_path}/${layer_id}` : layer_id)) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

This condition contains a duplicate check for layers_parent_${instance_path}/${layer_id}.

Additionally, the logic relies on multiple guesses for the layer ID format (using both _ and / as separators). This is fragile and suggests that the ID scheme is not unified across the application. It is recommended to use a consistent ID construction method (e.g., always using / as a separator) in both display-controls.js and inspector.js to avoid this complex and error-prone matching logic.

Comment thread src/web/src/display-controls.js Outdated
const id = name;
layer._nodeId = id;

const visible = !savedHiddenLayers.has(name) && !savedHiddenLayers.has(id);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

This check is redundant because id is already assigned the value of name on line 140.

Suggested change
const visible = !savedHiddenLayers.has(name) && !savedHiddenLayers.has(id);
const visible = !savedHiddenLayers.has(id);

@openroad-ci openroad-ci force-pushed the multiple-tech-display-control branch from b2bf1ca to 756c2e2 Compare May 7, 2026 01:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
@openroad-ci openroad-ci force-pushed the multiple-tech-display-control branch from 756c2e2 to 7e59f70 Compare May 14, 2026 00:06
@openroad-ci openroad-ci requested review from a team as code owners May 14, 2026 00:06
@github-actions github-actions Bot added size/XL and removed size/M labels May 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
@openroad-ci openroad-ci force-pushed the multiple-tech-display-control branch from 7e59f70 to e982c5e Compare May 14, 2026 01:26
@github-actions
Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@jorge-ferreira-pii
Copy link
Copy Markdown
Contributor

jorge-ferreira-pii commented May 14, 2026

  1. Native Multi-Tech Support

    Simultaneous DB Support: The Web GUI backend now supports multiple technologies (db tech) concurrently, allowing for cross-platform integration within a single session.

  2. New Hierarchical Display Controls

    Session Chiplets: Introduced a dedicated control panel for design blocks. Users can now toggle the visibility of each chiplet independently to focus on specific areas of the design.

    Layer Hierarchy: Enhanced the "Layers" panel to logically group layers under their respective technology headers, featuring intuitive expand/collapse controls for better organization.

  3. Intelligent Highlight and Inspection (DRC)

    Visual Feedback: Improved highlight animations with a subtle "pulsing" effect. The highlight now fills the entire chiplet or cuboid (in 3D) with a distinct yellow fill for better visibility.

    Integrated 3D Visualization: DRC (violation) markers in the 3D viewer now feature active hitboxes. Double-clicking a violation in the 3D environment automatically:

    Sends the marker details to the Inspector panel.

    Populates the navigation history for quick backtracking.

  4. "True Z" Visualization in 3D

    Added the "True Z" graphical overlay, which positions layers based on their absolute Z-axis coordinates. This removes artificial stacking and provides a realistic view of how chiplets from different technologies physically interface.

@jorge-ferreira-pii
Copy link
Copy Markdown
Contributor

fix #10208

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GUI: Handle display controls for multiple loaded technologies

2 participants