Dynamic System-Level Simulation Loading

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveaddress binding stabilityVSAvoidrecompilation time
Core Design Contradiction:
ReliabilityVSLoss of time

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.

Inventive Principle:
Principle #15Dynamics

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.

Inventive Principle:
Principle #1Segmentation

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

Engineering Contradiction:
Improvesimulation integrationVSAvoidnamespace isolation
Core Design Contradiction:
Device complexityVSAdaptability or versatility

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10331824B2Dynamically loaded system-level simulation
Publication Date: 2019.06.25 SYNOPSYS INC
  • US10331824B2 patent drawing
  • US10331824B2 patent drawing
  • US10331824B2 patent drawing

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.