In order to design a given system, we must decide on the level of abstraction at which we will work. The lowest level is transistor-level design, and requires the designer to be concerned with the connections of individual transistors. This is necessary for designing simple logic gates, but would be unnecessarily time-consuming for any more complex designs. Indeed, even the next step up in abstraction, logic-level design, which uses only the basic logic gates, is too low-level in most cases.

The logical progression from logic-level design is often the most appropriate for low-level circuit designs, and is known as register transfer level (RTL). This level concerns itself with the flow of signals between registers and simple combinatorial circuits, such as adders.

A design at RTL can be converted to a lower level representation using CAD Tooling.

In the context of RTL, a register is a component comprising one or more flip-flops used to hold a single value, such as a number.

Datapath

A design at RTL can be represented diagrammatically by a datapath. A datapath diagram visualises the flow of data between registers and combinatorial circuits. It can often be assumed that the data progresses (from left to right) to the next register in the datapath on each clock signal. A control block emits signals to alter the behaviour of the combinatorial blocks and registers depending on the current state of the system.

As such, a standard architecture comprises a Finite State Machine controller connected to a datapath, with the behaviour of the datapath dictated by the controller according to the state of the system.