• 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

Decompilation

Platform Specifics


Platform File Extension(s) Decompiled Pattern Class Module Name Vector Body Elements Vector Platform Nodes Additional Information
J750 .atp OrigenTesters::IGXLBasedTester::Pattern OrigenTesters::IGXLBasedTester :start_label, :global_label, :vector, :label opcode, opcode_arguments J750 & Ultraflex
Ultraflex .atp OrigenTesters::IGXLBasedTester::Pattern OrigenTesters::IGXLBasedTester :start_label, :global_label, :vector, :label opcode, opcode_arguments J750 & Ultraflex
V93K .avc OrigenTesters::SmartestBasedTester::Pattern OrigenTesters::SmartestBasedTester :sequencer_instruction, :vector N/A V93K

Teradyne J750 and Ultraflex

Both supported Teradyne platforms share the same decompiler. It’s assumed, at this early stage, that the differences in decompiling are negligible, but future enhancements will most likely split the two at some point.

Although all opcodes and arguments, including match loops, should decompile correctly, they are not yet supported for execution and are simply ignored. In fact, all opcodes (except repeat) are ignored, including end_module.

Platform Nodes

Frontmatter
Platform Node Description Return Class Default Value Example Output Additional Information
variable_assignments Any global variable assignments or settings Hash {} {'opcode_mode' => 'extended'} N/A
imports Imported attributes, e.g., timesets Hash {} {'tp0' => 'tset'} In the source, the imports are written as type of import then name of import. In the retuned Hash, the keys are the name of the imports and the values are the import types.
Vector
Platform Node Description Return Class Default Value Example Output Additional Information
opcode The opcode, if present in the vector. String, NilClass nil "repeat" N/A
opcode_arguments Any comman-separated, opcode arguments, if present. Array [] ['5'] N/A

Note that repeat is actually an opcode for this platform. Many, many vectors will have opcode and opcode_arguments that simply duplicate the generic repeat accessor.

Vector Body Elements

Vector Body Element Description Type Platform Nodes Additional Information
Start Label Label that signifies the start of the vector body. Required by .atp sources. :start_label
Platform Node Description Return Class Default Value Example Output Additional Information
start_label Name of the pattern's start label String, NilClass nil "pattern_st" N/A
N/A
Global Label Defines a global label. :global_label
Platform Node Description Return Class Default Value Example Output Additional Information
label_type Type, or function, of the label. String, NilClass nil "subr" N/A
label_name Name of the label. String, NilClass nil "global_label_1" N/A
N/A
Label Defines a label internal to the current pattern. :label
Platform Node Description Return Class Default Value Example Output Additional Information
label_name Name of the label String, NilClass nil "label1" N/A
N/A

Advantest V93K

Similarly to the Teradyne platforms, sequencer instructions, other than repeat, are not supported and are ignored.

Platform Nodes

This decompiler does not provide any platform nodes.

Vector Body Elements

Vector Body Element Description Type Platform Nodes Additional Information
Sequencer Instruction Inter-pattern call to the V93K sequencer. :sequencer_instruction
Platform Node Description Return Class Default Value Example Output Additional Information
instruction Instruction code String, NilClass nil "MACT" N/A
arguments Arguments for the instruction. Array, NilClass nil ['1737'] N/A
N/A

No First Vector

The V93K supports patterns of just sequencer instructions (see the approved simple.avc pattern), which does not contain a first_vector. In such cases, calls to many of the methods will raise an exception. For example, calls to #add_pins, #execute, and anything on the Pinlist will fail. As only vector support is available at the moment, there is not much that can be done with these types of pattern anyway.

That said, these patterns can still be decompiled, with full EnumerableExt functionality. Any custom execution or conversion implementations, or custom processing methods, can still be used.


Comments

Generated with the Origen Semiconductor Developer's Kit

Origen is released under the terms of the MIT license