In practice, the outputs of sequential logic elements connects to the inputs of other sequential elements.

For correct operations, timing constraints must be met.

A signal on input of a DFF must be stable during (before and after) the rising edge of the clock (so that the correct data gets read)

Metastability

If a signal is not stable around the rising clock edge, then a DFF will oscillate at a value between and , before settling on a random value.

For a circuit to meet those timing constraints, then all FF outputs to FF inputs must meet timing constraints. In order to do so, we:

  • Must have a stable signal for before and after the rising clock edge

A signal goes through a few steps:

Born as of the source FF

There can be a delay between and

Updating the output takes some clock-to- delay

Journey through combinational logic

It takes time of for the signal to be processed during the combinational logic.

During this time the signal outputted can be unstable

Arrives at the Destination FF

After a total time of , the signal arrives at the destination where it will be captured

Waits to be captured

It waits — in a stable manner — at the input of the next flip flop. This wait must at least be as long as the setup time

Gets captured on the clock edge

The destination takes the value on its input, and works through memorizing it. (Which can take some time)

Waits to be replaced

The clock edge that captured is passed. The wait must be at least as long as the hold time (And it must be stable!!).

Meeting time constraints

To setup the signal, we have the following:

For and , we must have the inequality given by

The worst case time constraint can be rewritten as

We have an algorithm to find this maximum frequency

Algorithm

  1. Identify all -to- paths
  2. For every path a. Compute its longest combinational delay b. Find the shortest clock period that satisfies this path’s setup-time constraint
  3. Find the shortest clock period that satisfies the setup-time constraints of all those paths
  4. Compute

To hold the signal, we have the following:

For and , we have:

The worst-case constraint is written as

To find hold-time violations, we have

Algorithm

  1. Identify all -to- paths
  2. For every such path a. Compute its shortest combinational delay b. Verify if the hold-time constraint is satisfied

Clock Skew

In real circuits, the clock signal may not arrive at all FFs at the same time, due to the wires

We call this delay clock skew — which is given by

This should not be neglected!!

We have both a negative and a positive clock skew

  • Negative:
  • Positive:

With clock skew, we see life of the D signal change slightly, as we need to account for the possible delays in clocks for the hold and the setup time

The expression that must hold has the skew added in:

And we have the worst-case scenario as

And to meet hold time constraints, we have

And the worst-case scenario as

Positive time skew INCREASES max frequency

05.2 Finite State Machines