Skip to content
STIMSMITH

AMD

Organization WIKI v1 · 5/26/2026

AMD is represented in the provided evidence through an AMD-authored technical article on microcode-stimulus generation for microprocessor verification. The article describes a constrained-random SystemVerilog methodology using the Synopsys VCS constraint solver, contrasting a single-class opcode model with a hierarchical multi-class approach intended to reduce memory requirements and improve generation performance.

Technical context

The provided evidence documents AMD in the context of microprocessor verification methodology. In the article “Generating AMD microcode stimuli using VCS constraint solver,” Gregory Tang and Rajat Bahl are identified as authors from AMD, Inc., alongside Alex Wakefield and Padmaraj Ramachandran from Synopsys Inc. [C1]

Microcode-stimulus generation

The article states that increasing microprocessor-design complexity has reduced reliance on hand-written directed verification tests and increased use of automated random test generators. These generators create microcode test sequences intended to cover meaningful opcode and instruction-attribute values more efficiently. [C2]

The described AMD microcode-stimulus approach uses a hierarchical constrained-random method with the Synopsys VCS constraint solver. The stated goals are to accelerate generation, reduce memory consumption, improve distribution control, and bias generation toward corner cases. [C3]

SystemVerilog constraint modeling

The article describes SystemVerilog constraint-language constructs as a concise way to express legal combinations of microcode-instruction attributes and to control value distributions for individual fields. An initial prototype used a single class containing constraints for all opcodes, which addressed limitations of sequential field randomization. [C4]

Generator architecture

The opcode generator is described as a two-layer architecture:

  • An upper layer implemented with a SystemVerilog random-sequence construct and weighted knobs to control high-level item distribution.
  • A lower layer consisting of an opcode class randomized with additional constraints and weights supplied by the upper layer.

The tests provide weighted values that guide the instruction mix, and the constraint solver applies those weights to control opcode-type distribution. [C5]

Single-class randomization

The article identifies a single opcode class containing all opcodes as the simplest instruction-generation style. This structure is flexible because constraints can be applied across any data members in the opcode class, but it can slow randomization because the constraint solver must handle many random variables and a large constraint set. The cited opcode class contained approximately 100 random variables and 800 constraint equations. [C6]

Hierarchical and multi-class randomization

To reduce the randomization problem size, the article describes splitting the opcode class into multiple smaller classes. It also describes an object-oriented structure in which a base class contains global constraints shared by all opcodes, while subclasses define related opcode groups with similar constraints. Partitioning constraints hierarchically into smaller opcode groups is reported to have drastically reduced memory requirements and increased performance. [C7]

CITATIONS

7 sources
7 citations
[1] C1: Article authorship identifies Gregory Tang and Rajat Bahl as AMD, Inc. authors and Alex Wakefield and Padmaraj Ramachandran as Synopsys Inc. authors. Generating AMD microcode stimuli using VCS constraint solver
[2] C2: The article states that increasing microprocessor-design complexity has reduced hand-written directed tests and encouraged automated random test generators for microcode sequences. Generating AMD microcode stimuli using VCS constraint solver
[3] C3: The described approach uses a hierarchical constrained-random method with the Synopsys VCS constraint solver to improve generation speed, memory use, distribution, and corner-case biasing. Generating AMD microcode stimuli using VCS constraint solver
[4] C4: SystemVerilog constraints are described as a concise way to model instruction attributes and distributions, and an initial single-class prototype held constraints for all opcodes. Generating AMD microcode stimuli using VCS constraint solver
[5] C5: The opcode generator architecture has an upper SystemVerilog random-sequence layer with weighted knobs and a lower opcode-class layer randomized with constraints and weights. Generating AMD microcode stimuli using VCS constraint solver
[6] C6: The single-class opcode model is flexible but can slow randomization; the cited class contained approximately 100 random variables and 800 constraint equations. Generating AMD microcode stimuli using VCS constraint solver
[7] C7: The article describes splitting opcode constraints into smaller hierarchical classes, using a base class plus subclasses, to reduce memory requirements and improve performance. Generating AMD microcode stimuli using VCS constraint solver