Unified HDL and C++ Debugger for Simultaneous Simulation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional debugging environments for designs involving both Hardware Description Languages (HDL) and general purpose programming languages, such as C++ or SystemC, face challenges in simultaneous debugging, where interrupting the HDL simulator to debug the software portion makes the HDL portion inaccessible, preventing users from accessing HDL signal values or exploring the HDL design structure.

Innovation Solution

A method and mechanism for simultaneous debugging of HDL and general purpose programming languages, which involves using a unified debugging environment where the C/C++ debugger can call an external function to process pending simulator requests, allowing the HDL simulator to remain operational and accessible even during software debugging, by utilizing tools like SimVision and NC-Sim for simulators and 'gdb' for debuggers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If an external C++ debugger is used to debug the C++ portion of the design, then the C++ code can be debugged effectively, but the HDL simulator is interrupted and the HDL portion becomes inaccessible

Engineering Contradiction:
Improvedebugging capabilityVSAvoidHDL code accessibility
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The system is divided into separate debugger processes for different languages (HDL debugger and C++ debugger) that can operate independently and simultaneously. Each debugger has its own process space, allowing one to debug C++ code while the other maintains access to HDL simulation data without interference.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A unified debugging environment acts as an intermediary layer that coordinates between the HDL simulator and external C++ debugger. This mediator manages the interaction between different debuggers and the simulator, ensuring that HDL data remains accessible even when the C++ debugger is active.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If the simulator is interrupted to debug C++ code, then software debugging can proceed, but it is not possible to operate the simulator interface to retrieve values from the simulator

Engineering Contradiction:
Improvesoftware debugging efficiencyVSAvoidsimulator interface operation
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The debugging functionality is segmented into language-specific debugger processes. The C++ debugger handles software debugging tasks independently, while the HDL debugger maintains control of the simulator interface, allowing both operations to proceed simultaneously without one blocking the other.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The HDL debugger process continues to operate and maintain access to the simulator throughout the C++ debugging session. This ensures continuous availability of HDL simulation data and simulator interface operations, even while external C++ debugging activities are performed.

Inventive Principle:
Principle #20Continuity of useful action

3Adaptability or versatility

If a unified debugging environment is implemented to allow simultaneous debugging of HDL and C++, then both languages can be debugged at the same time, but the system complexity increases

Engineering Contradiction:
Improvemulti-language debugging capabilityVSAvoiddebugging system structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The unified debugging environment is implemented as multiple independent debugger processes rather than a monolithic complex system. Each language-specific debugger is a separate, manageable component that can be developed, maintained, and operated independently, reducing overall system complexity while providing integrated functionality.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7617084B1Mechanism and method for simultaneous processing and debugging of multiple programming languages
Publication Date: 2009.11.10 CADENCE DESIGN SYST INC
  • US7617084B1 patent drawing
  • US7617084B1 patent drawing
  • US7617084B1 patent drawing

AI summary

Disclosed is a method, mechanism, and computer usable medium for simultaneous processing or debugging of multiple programming languages. A particularly disclosed approach provides a method and mechanism for resolving the issue of simultaneous debugging of hardware represented by an HDL, e.g., Verilog or VHDL, and software, e.g., represented by C, C++, SystemC code. This approach overcomes the problem of the HDL portion of the design being inaccessible when C, C++ or SystemC code is debugged.