Every algorithm decomposes into its data flow graph (DFG) and control flow graphs (CFGs). High-Level Synthesis (HLS) compilers try to generate efficient, fixed, CFG hardware. RTLs will allow you total freedom when designing each state machine you’ll need in your design, but RTL state machines are hard to program and hard to get right.
We used RTL to design the Hotstate machine, but it’s programmed using a subset of C. The code dictates the Hotstate machines’ resources used. If you only use a subset of the functionality, you get a subset of the Hotstate machine optimized to your code.
Uses for the Hotstate machine include, control data paths, bitbang controllers, parsers, low bit length neural networks, verification, instruction decoders, instruction sequencers, and many other tasks. If a softcore processor is overkill for your task then the Hotstate machine is for you.
Users of the Hotstate machine are HDL engineers that know a little C and want something done quickly, dependably, and of high quality. The Hotstate machine will save you time and money.
The Hotstate machine comes with published source hardware code, so it can be ported to any hardware tool chain. The compiler, hotstate, comes in an x86 as well as Arm64 versions that can be run on an Arm based SoC.
This is not a processor core. A processor core is always the same size which means that the program counter and register file are usually 32-64 bits. This slows down the hardware. If you have 256 lines of microcode, then you only need an 8-bit program counter. A processor core has a register file that might have 32 32-bit registers. A processor has an ALU packed with every opcode possible. With the Hotstate machine, you add just the right amount of data path RTL hardware and let the Hotstate machine(s) control that hardware. That might mean hundreds of adders and multipliers and registers or a single adder and FIFO controls, all controlled via software.
The Hotstate machine is a highly parameterized, microcoded, algorithmic state machine. The Hotstate machine is programmed using a subset of C called CommaC. The compiler extracts the parameters for the state machine directly from the code and generates the microcode to implement the program.
The Hotstate machine supports all the control statements in C and limited subroutines. If you use subroutines, the Hotstate machine has a stack size that can be set at compile time. Subroutines can call other subroutines. You can have recursive subroutines, although you should be careful about the stack size.
Your code drives the architecture and the size of the Hotstate machine. Smaller programs generate physically smaller state machines that run faster and use fewer resources. This means most hotstate programs can run fast, at 600+ MHz, and are very small, less than 50 LUTs.
Beaverton, Oregon 97008