Welcome to Styx’s documentation!

The styx software emulation suite exists to provide a viable, easy to use emulation platform for non-standard architectures. Current approaches cobble together tooling from mainstream architectures and hand rolled application-specific implementations that differ wildly from emulator to emulator.

styx seeks to change the status quo of turning software emulation of DSP, embedded and non-standard processors from a research task into a much simpler software engineering task.

What is styx

styx is a monolithic rust project built in a workspace and is intended to be consumed as a library. Styx packages many in-tree processor, peripheral, and device implementations that anyone can use to create their own new processor definition, or a machine definition that packages multiple processors together in a heterogeneous system-of-systems emulation to create a real digital twin.

The goal is to have a demo template application that you can use to quickly get off the ground with cargo-generate.

styx approaches the problem of emulating a new target as a system emulation problem instead of just a processor emulation problem, with a decision tree that any engineer can follow and fill out the checklist to create a fully supported emulation that the styx tool suite can instrument, analyze and debug automatically.

The biggest difference is that the targets styx is intended to emulate often require many peripherals and external devices emulated properly to run let alone boot. The styx approach utilizes the Rust type-system and metaprogramming capabilities to create building-block style emulation pieces that can be individually implemented, tested and verified before integrating into an emulation solution.

Documentation Contents

Developer Documentation

Indices and tables