MNRL and MNCaRT An Open-Source, Multi-Architecture State Machine Research and Execution EcosystemReport
We present MNRL, an open-source, general-purpose and extensible state machine representation language. The rep- resentation is flexible enough to support traditional finite automata (NFAs, DFAs) while also supporting more complex machines, such as those which propagate multi-bit signals between processing elements. The specification is based on JSON, a data interchange format that is supported across general-purpose programming languages. We also provide Python and C++ APIs for direct reading and writing of MNRL files.
We also discuss MNCaRT, the software ecosystem built around MNRL. MNCaRT is an umbrella repository of previously- published tools, which have been adapted to support MNRL, as well as new tools, which were specifically designed for MNRL. Tool support includes manipulation of MNRL files, execution of complex machines, high-speed processing of simplified MNRL files, and compilation of regular expres- sions to MNRL. We support the execution of MNRL net- works on CPUs (with VASim and Intel Hyperscan), GPUs (with a custom DFA engine), and FPGAs (with a MNRL to HDL translator). As with MNRL, all of the tools in MNCaRT are open-source, allowing for development and use in both academia and industry.
automata processing, state machine, language design, software tools
All rights reserved (no additional license for public reuse)
Department of Computer Science, University of Virginia
Technical Report TR# CS-2017-01