• 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

Test Program Generator

Introduction


Origen provides a powerful object-oriented test program generator which has a unique architecture which fully separates an application’s test flow logic from its implementation on a given test platform.

This architecture offers many advantages but most notably:

  • It is extremely efficient. Adding additional tests is very quick after you have initially bootstrapped your program generator, in many cases only requiring one line to be added to your source code.
  • It keeps you sane. As test flows and programs get larger and larger it really helps to be able to use object-oriented programming techniques to keep everything organized.
  • It eliminates bugs. The architecture encourages you to write the least amount of code possible to create a new test, this maximizes the re-use of working code and reduces the number of moving parts and opportunities for bugs to occur.
  • It supports multi-platform and documentation. The same test flow source file can be used to generate the program on different platforms, including creating documentation of the test program.
  • Dynamic custom code is supported. Custom VB/C++ code can be compiled through Origen, this eliminates the need to keep DUT configuration information in your test program code - write it to support a single device, then modify it later to work with another configuration with Origen.

Architecture

An overview of the program generator architecture is shown below:

Origen provides a rich generator for each supported platform, this takes care of all formatting concerns and tries to automate some details of the platform API which can be particularly error prone - for example flow control logic.

The application then provides a Flow file which contains a behavioural description of each test and the order that they should be executed in. Note that there should be no consideration given to the underlying platform implementation of the test at this level, the job of the flow is to describe the electrical properties of each test and pattern dependencies, but should not worry about things like test instances, interpose functions, test methods, etc.

The application must then provide an interface which has the job of translating the flow definition to the one or more of the target test platform APIs. For example the interface may say “ok when the flow asks for a functional test then create a new patset, create a new functional test instance which will reference that patset, setup the instance based on the electrical properties of the test, and then finally add an entry in the flow sheet”.

In this way the tedium of having to create a test instance, then a pattern set, then a flow entry, then go back to the test instance because you named the pattern set wrong, etc, etc…is eliminated along with many opportunities for errors.


Comments

Generated with the Origen Semiconductor Developer's Kit

Origen is released under the terms of the MIT license