Hardware Simulation Partitioning for Multiprocessor Performance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional hardware simulation and verification solutions for complex integrated circuits face performance bottlenecks due to increasing size and complexity, as traditional methods like rewriting software or using parallelizing compilers are impractical and often degrade performance due to synchronization issues.
Innovation Solution
Partitioning the hardware simulation and verification solution into modules such as a simulation kernel, value change dump, functional coverage, toggle coverage, assertion engine, and testbench, allowing these modules to be executed in parallel across multiple processors with minimal communication and synchronization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If the hardware simulation and verification solution is executed on a single processor, then the software complexity is maintained at a manageable level, but the processing speed and performance are insufficient due to the increasing size and complexity of integrated circuits
Solution Approach 1:
The hardware simulation and verification solution is divided into multiple independent modules that can be executed in parallel on different processors. Each module handles a specific aspect of the simulation or verification process, allowing the system to scale across multiple processors without proportionally increasing inter-module communication complexity.
2Productivity
If the software is rewritten from scratch to enable parallel execution, then parallel processing capability is achieved, but the development cost and time are enormous
Solution Approach 1:
Rather than rewriting the entire software system, the invention segments the existing hardware simulation and verification solution into modular components that can be independently executed in parallel. This approach enables parallel processing capability while avoiding the enormous cost of complete software rewriting.
3Productivity
If a parallelizing compiler is used to improve performance, then some parallelization is achieved, but the performance improvement is limited because sophisticated parallelizing compilers often fail to exploit parallelization opportunities in complex software
Solution Approach 1:
The software is explicitly segmented into distinct modules that represent natural parallelization opportunities in hardware simulation and verification. This manual segmentation approach is more effective than automated parallelizing compilers because it leverages domain knowledge to identify and exploit parallelization opportunities that general-purpose compilers may miss.
4Productivity
If only a small portion of the software is parallelized, then implementation complexity is reduced, but performance improvement is negligible due to Amdahl's law
Solution Approach 1:
The software is comprehensively segmented into multiple parallelizable modules, maximizing the proportion of code that can execute in parallel. This extensive segmentation overcomes Amdahl's law by ensuring that the majority of the computation can be distributed across multiple processors, thereby achieving significant performance improvement.
5Productivity
If the software is partitioned into different pieces for parallel execution, then parallel processing is enabled, but performance degrades if the different pieces require large amounts of synchronization
Solution Approach 1:
The software is segmented into modules with well-defined interfaces and minimal shared state, reducing the need for synchronization. Each module operates relatively independently, allowing parallel execution with minimal coordination overhead between processors.
Solution Approach 2:
Synchronization requirements are extracted and minimized by designing modules that can operate independently. The invention identifies and removes unnecessary synchronization points, allowing modules to execute in parallel without requiring frequent coordination.
Data Source
AI summary
One embodiment of the present invention provides systems and techniques to execute a hardware simulation and verification solution on a multiprocessor system. The hardware simulation and verification solution can be partitioned into different modules which can include a simulation kernel to simulate changes in signal values, a value change dump module to store the changes in the signal values on a computer-readable storage medium, a functional coverage module to check functionality, a toggle coverage module to check signal toggling, an assertion engine to check complex behaviors, and a testbench module to generate test scenarios. Embodiments of the present invention can execute different modules on different processors, thereby improving performance.


