Finite state machines have long been a tool used by hardware designers while software designers have often overlooked this valuable method. One of the main reasons a software designer may not use finite state machines is that there has not been an easy way to implement them that is both fast and flexible.
This paper will introduce a new, decision-testing algorithm for software-based state machines which was co-developed by Kader Laroussi and John Wiese. Its main features include: fast state transitions where speed is not a linear function of the number of inputs but a function of the processor's word size; an easy-to-change state table; a small table size by using don't care terms; and centralized decision-making. which makes it easier to debug and maintain.
This paper will focus on the decision algorithm and its use as opposed to finite state machine design methods. Any design which can produce a state transition table can use this algorithm. A subsequent paper will present an algorithm with fast decisions for boolean equation based state machines.