Restricted Randomization for Hardware Design Verification Test Cases

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing design verification processes for hardware designs are inefficient due to the generation of invalid test cases caused by naive randomization approaches that do not consider variable dependencies, leading to an overinclusive set of test cases that are not supported by the design, thus wasting simulation resources and engineering time.

Innovation Solution

A restricted randomization process is implemented in the design verification system, where a set of restrictions representing dependencies between variables is used to exclude infeasible scenarios, and algorithms resolve conflicts between variable pairs based on these restrictions, ensuring only valid test cases are generated.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a naïve randomization approach is used to generate test cases by assigning random values to each variable, then the quantity of test cases increases, but the validity of test cases decreases due to generation of infeasible combinations

Engineering Contradiction:
Improvequantity of test casesVSAvoidvalidity of test cases
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The patent applies preliminary action by pre-defining validity rules and constraints for variable combinations before generating test cases. The system establishes a set of rules that specify which variable combinations are valid, and these rules are applied during test case generation to filter out invalid combinations before they are created, thus ensuring high validity while maintaining quantity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameters of the randomization process by introducing constraint-based selection instead of pure random assignment. The system modifies how variable values are selected by incorporating validity checks that adjust the parameter selection based on previously assigned variables, transforming the naive randomization into a constrained randomization that maintains diversity while ensuring validity.

Inventive Principle:
Principle #35Parameter changes

2Quantity of substance

If invalid test cases are generated and included in the regression test suite, then the coverage of test scenarios increases, but the waste of simulation resources increases

Engineering Contradiction:
Improvecoverage of test scenariosVSAvoidwaste of simulation resources
Core Design Contradiction:
Quantity of substanceVSLoss of energy

Solution Approach 1:

The patent converts the potential harm of generating invalid test cases into a benefit by using the validity rules to guide the generation process. Instead of generating invalid cases and then discarding them (which wastes resources), the system uses the same validity rules to directly generate only valid cases, transforming the filtering step into a guiding principle for efficient generation.

Inventive Principle:
Principle #22Blessing in disguise (Convert harm into benefit)

Solution Approach 2:

The system implements self-service by having the test case generation process automatically enforce its own validity constraints without requiring external validation. The generation algorithm inherently produces valid cases by respecting the predefined rules, eliminating the need for separate validation steps and reducing resource waste.

Inventive Principle:
Principle #25Self-service

3Reliability

If a restricted randomization process with conflict resolution is implemented, then the validity of test cases improves, but the complexity of the generation process increases

Engineering Contradiction:
Improvevalidity of test casesVSAvoidcomplexity of generation process
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent applies segmentation by dividing the test case generation process into distinct phases: variable assignment, conflict detection, and conflict resolution. Each phase handles a specific aspect of the generation process, making the overall complex task manageable through modular organization. The conflict resolution itself is segmented into identifying conflicting variables and then resolving individual conflicts.

Inventive Principle:
Principle #1Segmentation

4Measurement precision

If pre-assigned values are provided for some variables, then the focus on specific features improves, but the number of possible test case combinations decreases

Engineering Contradiction:
Improvefocus on specific featuresVSAvoidnumber of test case combinations
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The patent applies local quality by allowing different variables to have different levels of constraint. Pre-assigned values provide fixed constraints for specific variables that are critical to the feature being tested, while other variables maintain full randomness to preserve diversity. This localized application of constraints ensures focus on important features while maintaining overall test case versatility.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10984158B1Generating design verification test cases using a restricted randomization process based on variable dependencies
Publication Date: 2021.04.20 FORTINET INC
  • US10984158B1 patent drawing
  • US10984158B1 patent drawing
  • US10984158B1 patent drawing

AI summary

Systems and methods for generating design verification test cases using a restricted randomization process are provided. According to one embodiment, a processor of a hardware design verification system receives a set of restrictions and defines a scenario involving the values that is to be excluded from the test case. The processor also receives pre-assigned values for one or more variables. For each variable other than the one or more variables, the processor assigns a first random value to the variable that is within a valid range for the variable. The processor then identifies a conflict between a first pair of variables, and resolves the conflict by assigning a second random value to a first variable or a second variable of the first pair of variables within their respective valid ranges.