HDL Fork-Join Block Transformation via Synchronized Free-Running Processes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The simulation of parallel fork-join blocks in hardware description languages (HDLs) poses challenges due to the need for dynamic memory allocation and thread creation, leading to increased processing overhead and synchronization complexities.

Innovation Solution

Transforming fork-join blocks into synchronized concurrent processes by creating free-running processes with timing constructs controlled by a single synchronization variable, allowing for concurrent execution without thread creation and minimizing overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If threads are created for each sub-statement in fork-join blocks, then concurrent execution is achieved, but processing overhead and memory requirements increase

Engineering Contradiction:
Improveconcurrent execution capabilityVSAvoidprocessing overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a simplified copy of the parent process for each sub-statement, where each copy contains only the necessary sub-statement and synchronization variables. This avoids the need for full thread creation while maintaining concurrent execution capability. The copied processes share the same memory space and synchronization mechanism, reducing overhead compared to actual thread creation.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent segments the parent process into multiple independent copies, each responsible for executing a specific sub-statement. This segmentation allows concurrent execution without requiring full thread management infrastructure. Each segmented process can be independently scheduled and synchronized using shared variables, reducing the complexity of process management.

Inventive Principle:
Principle #1Segmentation

2Productivity

If threads are created for each sub-statement, then parallel execution is achieved, but memory requirements increase

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidmemory requirements
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent merges the memory spaces of all process copies by using shared synchronization variables. Instead of each thread having its own memory space, all processes share common memory for variables used in synchronization. This merging approach maintains parallel execution capability while significantly reducing memory requirements compared to separate thread stacks and memory spaces.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If simulation kernel is modified to dynamically allocate memory and time, then fork-join block execution is enabled, but kernel complexity increases

Engineering Contradiction:
Improvefork-join block execution capabilityVSAvoidkernel complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements self-service by allowing processes to manually manage synchronization through shared variables without requiring kernel intervention. Processes use wait-on-variable constructs to synchronize their execution, eliminating the need for complex kernel-level dynamic allocation and scheduling mechanisms. This approach enables fork-join block execution while keeping the simulation kernel simple and unchanged.

Inventive Principle:
Principle #25Self-service

4Duration of action of stationary object

If multiple threads are spawned for Always processes, then continuous execution is achieved, but processing overhead increases

Engineering Contradiction:
Improvecontinuous execution capabilityVSAvoidprocessing overhead
Core Design Contradiction:
Duration of action of stationary objectVSLoss of time

Solution Approach 1:

The patent introduces dynamic scheduling where process copies are created and activated only when needed, rather than maintaining persistent threads. The simulation kernel dynamically allocates time slices to process copies based on their completion status and synchronization requirements. This dynamic approach enables continuous execution of Always processes while minimizing processing overhead by avoiding unnecessary thread management operations.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8161436B1Method and system for transforming fork-join blocks in a hardware description language (HDL) specification
Publication Date: 2012.04.17 XILINX INC
  • US8161436B1 patent drawing
  • US8161436B1 patent drawing
  • US8161436B1 patent drawing

AI summary

The present invention provides a method, system and article of manufacture for the transformation of parallel blocks into synchronized parallel processes that can be simulated without incurring the overhead of creating extra threads or requiring code modifications in the simulation kernel. This transformation is done in such a way that the parallel behavior is retained in its entirety, and the same simulation time-relative results are produced. The concept of concurrency of processes inherent in HDL languages, including System Verilog, is utilized to achieve the same simulation results via the transformed HDL code, which uses the non-parallel block subset of System Verilog HDL.