ONNX to Synthesizable HDL
Develop a model in Python, MATLAB, or other tools. Export it as an ONNX model, and hand it to SNOW ANGEL. It comes back as synthesizable HDL, ready to run on LACE or another FPGA platform. No hand-written hardware in between!
Build the model or algorithm in the tools you already use (Python, MATLAB, etc.) and export it as an ONNX model. At this stage the model is hardware agnostic.
Hand the ONNX model to SNOW ANGEL. It produces synthesizable HDL for the network, with minimal user input.
Synthesize the HDL with vendor tools and load it onto the LACE hardware or another FPGA-based platform. Retrain and redeploy at any time, even after launch.
A common way to run a model on an FPGA is to build a general-purpose accelerator and schedule the network’s layers onto it one after another. SNOW ANGEL takes a different approach. It reads the model as ONNX and builds hardware shaped like the network itself. SNOW ANGEL fits the model to the fabric you have.
The model’s operations are chained through on-board cache, so data streams from one operation to the next as soon as it is produced, with minimal round trips through external memory between layers. SNOW ANGEL converts the trained model to hardware, and its built-in quantization tools give you control over speed and performance.
If your platform is reprogrammable, a retrained network is a recompile and an upload rather than a hardware revision. A mission can launch with one model, learn from flight data, and replace it over your command link.
Deployment is where we work most closely with a team: choosing the model, fitting the design to the fabric’s resources, and seeing it through to a unit running on the bench. SNOW ANGEL is the toolchain behind our own deployments, and the same one we use on yours.
BRISC is our tool for defining packet structures without writing code or VHDL. Lay out your telecommand and telemetry packets in Excel or in a web interface, and BRISC generates the encoding and decoding for them automatically.
SNOW ANGEL is integrated directly with BRISC. Every solution it generates comes with matching packet handling, so getting data into a deployed model and results back out takes a few clicks in a web interface instead of custom code, packet routing, and VHDL on either end.
Supported inputs and targets describe the toolchain as used on our own deployments and may change. Ask us about your model.
Tell us what you have (a trained network, a MATLAB algorithm, an idea) and where it needs to run. We’ll walk through what compiling it with SNOW ANGEL would take and what it would look like on LACE or another platform.