Simulator’s Serial Processing
Simulators are event-driven. Due to the complex nature of the designs, with endless dependencies and complex rules, and since most simulators were developed before multi-core processors were available, the common simulators process Verilog code in a single thread, managing a single active queue of events and handling them one at a time. The serial method in which simulators operate means that each run may take a significant amount of time to complete. This cannot be alleviated by adding more computing power as it is not paralleled. In order to accelerate the simulation, a solution that can break the dependency barrier and offer parallel processing of the expressions is needed.
Rocketick Solves the Parallel ChallengeRocketick’s patent-pending technology analyzes the Verilog design and maps the dependencies among the expressions into an elaborate dependency graph. It then partitions the dependency graph into many semi-independent threads, each consisting of a series of processing elements. The threads and their processing elements are organized in an efficient manner, allowing optimized continuous parallelization with minimal synchronization among threads.
Massive Parallel Computing Although CPUs support parallel processing, GPUs offer much greater efficiency and performance when it comes to the processing of independent threads. Originally designed to handle 3D graphics, GPUs contain hundreds of parallel computational elements that are designed to handle a large amount of independent threads that run in parallel. Rocketick has developed an efficient virtual machine that runs on the GPU and executes the threads. This unique architecture schedules the threads in a way that utilizes the power and unique nature of the GPU to accelerate the simulation by over 10X.
Click here to learn more about Harnessing the power of GPUs.