Unified HDL and C++ Debugger for Simultaneous Simulation
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
Data Source
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.


