MNRL and MNCaRT: An Open-Source, Multi-Architecture State Machine Research and Execution Ecosystem
We present MNRL, an open-source, general-purpose and extensible state machine representation language. The representation 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 expressions to MNRL. We support the execution of MNRL networks 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.