• Guides
  • Videos
  • Publications
  • API
  • Github
  • Community
  • Release Notes
  • Plugins
Installing Origen
  • Introduction
  • How to Install
  • How to Install (Windows)
  • Company Customization
  • Understanding Gems
  • Invoking Considerations
  • Workspace Management
Getting Started with Origen
  • Core concepts
  • Creating a New App
  • Directory Structure
  • The Initial Commit
  • Creating New Files
  • Understanding Blocks
  • Application Architecture
Runtime Environment
  • Introduction
  • Mode
  • Environment
  • Target
  • Production Targets
  • Global Setup
  • Load Order
  • Programming
Models
  • Introduction
  • Naming
  • Definition & Hierarchy
  • Adding Attributes
  • Versioning
  • Bugs & Features
  • Package, Mode & Configuration
  • Registers
  • Pins
  • Power Domains
  • Hardware Attributes
  • Parameters
  • Specifications
  • Fuses
  • Generic Components
  • Creating Your Own Components
Compiler (Views)
  • Introduction
  • Creating Templates
  • Using Sub-Templates
  • Helpers
  • Running The Compiler
  • Inline Compiler
Controllers
  • Introduction
  • Shadow Controllers
  • Direct Controllers
Pattern Generator
  • Introduction
  • Creating Patterns
  • Pins
  • Timing and Waiting
  • Registers
  • Documenting Patterns
  • Generating by Name
  • Common API
  • J750 API
  • V93K API
  • UltraFlex API
  • STIL & Other Formats
  • Custom Testers
  • Running The PatGen
  • Concurrent Patterns
Test Program Generator
  • Introduction
  • Philosophy
  • Creating Flows
  • Managing Flow Control
  • Creating an Interface
  • Additional Resources
  • Dynamic Custom Code
  • Characterization API
  • J750 API
  • V93K Common API
  • V93K SMT7 API
  • V93K SMT8 API
  • UltraFLEX API
  • Documenting the Program
  • Creating Custom Testers
  • Running the ProgGen
Decompilation
  • Overview & Example
  • Decompiling, Adding Pins, & Executing
  • Working with Decompiled Patterns
  • Platform Specifics
Simulation
  • Introduction
  • How It Works
  • Compiling the DUT
  • AMS Support
  • Environment Setup
  • Application Setup
  • Simulating Patterns
  • Simulating Flows
  • Direct DUT Manipulation
  • Simulator Log Output
  • Artifacts
  • Debugging
Documentation Generator
  • Introduction
  • Markdown
  • Linking
  • Styling
  • Testing
  • API Generation
  • Deploying
Plugins
  • Introduction
  • Using a Plugin
  • Creating a Plugin
  • Current & Default Plugins
  • Dev Environment
  • Dev Considerations
  • Paths & Origen.root
  • Config & Origen.app
Miscellaneous
  • Revision Control
  • Origen Remotes
  • Lint Testing
  • Session Store
  • LSF API
  • Users, Emails & Maillists
  • Utilities & Helpers
  • Ruby Extensions
  • Logger
  • Adding Commands
  • Overriding Commands
  • Callbacks
  • Application Callbacks
  • Miscellaneous Topics
Advanced Topics
  • Introduction
  • Invocation Customization
  • Custom App Generators

Pattern Generator

V93K API


All of the Common Pattern API can be used to target the V93K.

This page is used to document any additional V93K-specific APIs related to pattern generation, however the goal is to have as few of these as possible so that Origen pattern source code can re-target automatically to any supported platform.

Driving Custom Waveforms

The V93K has a very powerful waveform generator and it is common to use many more pin state codes than other platforms in order to select particular waveforms.

Say for example that we have various waveforms defined to drive a clock pin, where a ‘1’ on the pin will drive a single pulse and a code of ‘P’ will select a different waveform which will create 4 pulses per cycle.

The ‘P’ code (or any other letter) can be driven very easily as shown below:

                        #      Example vectors
pin(:clk).drive!(1)     #     1 X XXXX 10100001
1.cycle                 #     1 X XXXX 10100001
pin(:clk).drive!('P')   #     P X XXXX 10100001
1.cycle                 #     P X XXXX 10100001
pin(:clk).drive!(1)     #     1 X XXXX 10100001

The above vectors would produce the following waveform per the earlier description of ‘P’:

            _______         _______   _   _   _   _   _   _   _   _         _______
clk _______|       |_______|       |_| |_| |_| |_| |_| |_| |_| |_| |_______|       |

SmarTest 8

The Origen V93K driver supports generating patterns into both SMT7 and SMT8 pattern formats.

To enable SMT8 format, set the smt_version: attribute to 8 when instantiating the tester in your application environment as shown here:

# environment/v93k_smt7.rb
OrigenTesters::V93K.new

# environment/v93k_smt8.rb
OrigenTesters::V93K.new smt_version: 8

SMT8 patterns can either be in a zipped/binary format, or an ASCII file format. Zipped is the default, but the ASCII format can sometimes be useful when visually inspecting patterns or when comparing them via a difftool. To enable ASCII format patterns, configure your environment like this:

# environment/v93k_smt8.rb
OrigenTesters::V93K.new smt_version: 8,
                        zip_patterns: false

Comments

Generated with the Origen Semiconductor Developer's Kit

Origen is released under the terms of the MIT license