• 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

Runtime Environment

Introduction


Typically an Origen application will contain source code to generate IP that can be applied to many different products, and/or which can run on many different test platforms. It is the job of the target and the environment to setup the runtime conditions that will define what combination of product and tester platform will be targeted by the generated output.

The target is normally used to define the product side of the runtime environment, with one target file existing for every product/device that the application supports. Target files are usually very short and normally just instantiate the model of the target device, assigning it to the global variable $dut.

For test engineering applications, the test platform selection is usually handled by environment files. These are very similar to target files and there is usually one per supported test platform. Each environment will typically instantiate the target tester model/driver, assigning it to the global variable $tester. For non-test engineering applications, the environment layer can either be omitted or else it can be used to define whatever other global state makes sense to be applied across multiple device targets.

Additionally, Origen has the concept of an operating mode and this can be considered a third component of the runtime environment.

How the Runtime Environment is Applied

Before compiling any template, or generating any pattern, test program or other source file, Origen will do the following:

  • Apply the active mode
  • Execute the active environment file
  • Execute the active target file

This means that the active environment can override the active mode, and that the active target can override both the mode and the environment.

This sequence will be repeated between jobs if multiple files are being compiled/generated by a given Origen thread of execution (each source files is an individual job). This prevents model state from a previous job from carrying over to the next one and ensures that the output is never affected by generation order.

This sequence of reloading the mode, environment and target is generally referred to as "reloading the target". No API exists within Origen to reload only one of these component, so anytime you see a reference to the target being re-loaded it means that all three of the runtime environment components will be refreshed.

Comments

Generated with the Origen Semiconductor Developer's Kit

Origen is released under the terms of the MIT license