Dynamic System-Level Simulation Loading
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
SystemC simulations using static linking are inconvenient for end users due to the need for recompilation when components are modified, and they expose namespaces, making it difficult to simulate systems with multiple subsystems due to variable and function name conflicts.
Innovation Solution
The system employs dynamic loading of component simulations at runtime, using netlist information to generate and load component dynamic libraries, interlibrary adapters, and simulation dynamic libraries, allowing for compatibility between different simulation libraries without recompiling existing components.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If static linking is used to generate SystemC simulations, then the simulation components are bound to fixed addresses, but when a component is modified, the entire simulation must be recompiled to relink references, resulting in significant time loss
Solution Approach 1:
The patent applies dynamic linking instead of static linking, allowing simulation components to be loaded and unloaded at runtime. This enables the system to adapt to component modifications without requiring full recompilation, as the dynamic linker can resolve addresses at runtime rather than compile time.
Solution Approach 2:
The patent segments the simulation into separate dynamically loadable modules. Each simulation component can be independently compiled and loaded, allowing modifications to individual components without affecting the entire simulation system. This segmentation enables selective recompilation rather than full system recompilation.
2Device complexity
If static linking is used, then all simulation components are compiled together, but this exposes the namespace of simulation components to other components, causing variable and function name conflicts when simulating systems with multiple subsystems
Solution Approach 1:
The patent uses dynamic linking to segment the simulation namespace into isolated modules. Each dynamically loaded component maintains its own namespace, preventing variable and function name conflicts between different subsystems while still allowing them to be integrated into a unified simulation system.
Solution Approach 2:
The patent introduces an intermediary layer (the dynamic linker and loading mechanism) that manages namespace isolation between components. This intermediary allows components to interact functionally while maintaining separate namespaces, resolving the conflict between integration and isolation.
Data Source
AI summary
A system-level simulation includes generating netlist information including component library information, which describes instances of the hardware components, and component instance information, which describes component dynamic libraries that include models of hardware components. The simulation is generated at simulation run-time based on the netlist information. Component dynamic libraries corresponding to the component library information are loaded based on the component library information. A simulation dynamic library referenced by the component dynamic libraries is loaded. One or more interlibrary adapters corresponding to the component dynamic libraries are loaded to provide compatibility between the component dynamic libraries and an application binary interface of the simulation dynamic library. Instances of hardware components are instantiated based on the component instance information, and the instantiated instances of the hardware components are connected to form the simulation. The simulation is performed at simulation run-time responsive to the simulation being generated.


