## Thought it looks better without the breadcrumbs bar, and kinda redunant since we have the sidebar nav
Origen v2
:

Table Of Contents

Contents

Previous topic

Development Environment Setup

Next topic

Documentation Generation Architecture

Architecture Overview

The Origen framework exists in two parts within a single package: a Python-based frontend, which users will build their applications upon, and a compiled backend, which maintains the device, tester, and other models. This is reminiscent of the Model-View-Controller Design Pattern where the Rust-based backend functions as the model, the user-facing Origen API API as the view, and the hidden _origen API module as the controller, bridging the two.

Development APIs

Not disclosed to the end users is the _origen API which functions as a controller connecting the frontend Origen API to the Rust-powered backend and includes the actual device modeling and generation.

This API should not be used by end users directly and is entirely derived from the Rust backend. Rather, functions are exposed to them through the origen module and should encapsulate all calls to _origen. This includes simple getters, such as origen.application.Base.output_dir, whose implementation is merely a call to _origen.output_directory().

The backend is split into two Rust libraries: PyAPI and Origen. PyAPI utilizes PyO3 which creates the Python module _origen.

APIs