Home














































The original ASM concept models an algorithm using three basic objects:

The rectangular block represents a state object. A state object describes one state of the synchronous sequential digital system being depicted. It is similar to the bubble representing the state in the traditional finite state machine model. However, state objects can only have only 1 exit point as opposed to multiple in the finite state machine bubble object
The condition object, which is represented by a diamond shape, models a decision in the design. Binary/logical conditions can be tested using this object. In the programming context, condition object models if-then-else behavior. In the context of hardware context, a condition object models a multiplexer.
The last object, the conditional output, is represented by an oval. The conditional output models the conditional outputs in Mealy-type sequential circuits. The conditional output is sometimes annotated with the register operations that occur with the state transition in more general machines that have datapath registers as well as a state register.

The ASM Methodology


The ASM (Algorithmic State Machine) method, originally introduced in 1973 by Clare [C. R. Clare, Designing Logic Systems Using State Machines, McGraw-Hill, New York 1973], is a systematic, step-by-step design procedure.

Especially interesting is the fact that it is intended to be used to convert "algorithms" into hardware, as also implied by its name.

Since algorithms are the basis for software programs, the ASM method can be more generally used as a software-to-hardware conversion method. The formal definition of an algorithm is a step-by-step procedure for solving a problem that is correct and has a termination point.

More commonly, the term "algorithm" is simply used to describe a program-like description for the solution of a problem.

The ASM method is interesting because it permits an algorithm to be described in a format that enables direct conversion to hardware.

Using the ASM method, the algorithm is first described using a flowchart-like notation referred to as an "ASM chart". Once an algorithm has been presented in this manner, it is possible to perform direct one-to-one conversions from ASM chart components to digital logic hardware structures. This can be done in a highly systematic manner.

The ASM method is a significant advancement over the FSM (Finite State Machine) method typically taught in introductory digital logic design courses. Exsedia's ASM has these additional constructs to make the ASM chart more powerful.


The case object, represented by a hexagon, represents a case construct. This object is introduced to support multi-way branching of bit vectors. The case object can be replaced by nesting the condition objects (in the same way that case statements can be modeled by if-elseif-else statements). However, for multiple branches (i.e. 8 bit opcode decoder requires 256 branches), a case statement is more intuitive.
The A subflowdiagram object is represented by a parallelogram. The subflowdiagram object is used to represent a macro or a function that a design typically calls.
Input and Output object represent connectivity between sheets (logical partition of a design) and state objects. Typically, the ASM objects in Nimbus are connected via a transition line, an arrow shaped object representing the flow of the design. However, input and output objects can also be used for state connectivity to improve readability of the ASM representation.
The objects shown on the left is called transition line. This object is used to model the connectivity or flow of the design from state to state.

The ASM and FSM methods are described in detail in digital logic textbooks such as [M. Morris Mano, Digital Logic Design, 3rd Ed., Prentice-Hall, Upper Saddle River, 2003]. The use of the ASM method for hardware design is dealt with in more depth in[S. Lee, Design of Computers and Other Complex Digital Devices, Prentice-Hall, Upper Saddle River, 2000]