NLDM tables work well, but they rest on one simplification: the load of a cell is a single capacitor. In a real chip, the output of a cell drives a wire, and a wire has resistance as well as capacitance. For long or thin wires in small process nodes, this simplification costs accuracy. Current source models, called CCS and ECSM, were created to fix this. This article explains the problem and the idea behind the solution, without the full detail of the formats.

Think of filling a bucket through a long, thin hose. The tap sees a small load at first, because the water has not reached the far end yet. NLDM pretends the bucket is right at the tap. For short hoses that is fine, and for long thin ones it is not. Current source models describe the tap more carefully so that the hose can be taken into account.

6 min read | Intermediate

What You'll Learn

  • Explain the assumption that NLDM makes about the load of a cell
  • Describe what a current source model stores and how it differs from NLDM
  • Name the extra data a CCS library adds: receiver capacitance and output current
  • Check which delay model a library uses, and what that means for the lab

What NLDM Assumes

An NLDM table gives the delay for a given input slew and a given output capacitance. The cell is modeled as a driver charging one lumped capacitor.

That is exact for a net that behaves like a single capacitor, such as a short wire. When the wire has noticeable resistance, the capacitance is spread along it, and the far end charges later than the near end. The cell no longer sees one capacitor.

Delay calculators handle moderate cases by finding an effective capacitance: one capacitor value that gives the same delay at the output of the cell as the real resistive net would. They then look up that value in the NLDM tables. A later chapter covers it. As process nodes shrink and wire resistance grows, the waveforms become more irregular, and this approximation loses accuracy.

The Idea of a Current Source Model

Instead of storing the final delay, current source models store how the output stage of the cell behaves. The output of a gate is modeled as a current source that charges whatever is connected to it. The tool can then drive the actual wire network with that current and compute the voltage waveform at every point, with the resistance included.

The two best-known models are:

  • CCS, the Composite Current Source model
  • ECSM, the Effective Current Source Model

Both follow the same idea, a time-varying, voltage-dependent current source for the output driver, with different file formats and details. In the rest of this article we use CCS as the example.

What a CCS Library Adds

A CCS library keeps the NLDM tables and adds two kinds of data.

  • Receiver pin capacitance. In NLDM, an input pin has one capacitance value, or one for rising and one for falling. In CCS, the capacitance can differ between the first part and the last part of the transition, because the input stage of a cell does not act as a constant capacitor. The library has four tables: receiver_capacitance1_rise, receiver_capacitance1_fall, receiver_capacitance2_rise and receiver_capacitance2_fall.
  • Output current. For each arc, and for each combination of input slew and output load, the library stores a waveform: the output current as a function of time. A group such as output_current_fall contains these waveforms.
output_current_fall () {
  vector ("template_name") {
    reference_time : ...;     /* when the input crosses its threshold */
    index_1(...);             /* input transition, one value */
    index_2(...);             /* output capacitance, one value */
    index_3(...);             /* time points */
    values(...);              /* output current at each time point */
  }
  ...  /* one vector for each combination of slew and load */
}

The waveforms need many points for every arc, so a CCS library is much larger than an NLDM library of the same cells, and the tool needs more calculation per arc. The gain is accuracy for resistive wires and unusual waveform shapes.

Which Model Does the Lab Use?

You can tell from the library. The header line delay_model : "table_lookup" means NLDM tables. A CCS library also contains output_current_rise and output_current_fall groups. The sky130 libraries of ChipVerify Lab have none of them, so every delay in the lab is an NLDM lookup. That fits the lab's pre-layout analysis, where the nets have no resistance at all and a lumped capacitor is exactly right.

The NLDM Table Edge

NLDM tables are only characterized up to a certain load. For the OR gate used on the path to z, the largest column is 0.1007 pF, which is also the max_capacitance of its output. A load heavier than that is outside the characterized range, and the tool has to extend the table beyond its last point. Even inside the table, delay and slew rise steeply for a weak cell. The exercise below pushes the cell toward this edge.

Common Mistakes

Mistake #1: Assuming a CCS library is always needed for accurate timing

For a pre-layout run, and for any net that behaves like a lumped capacitor, NLDM is exact enough. CCS or ECSM matters when wire resistance becomes significant. The choice depends on the process node and the stage of the flow, not on a rule that more detail is always better.

Mistake #2: Confusing the effective capacitance with the real capacitance of a net

The effective capacitance is a calculated value that reproduces the delay of a resistive net with a single capacitor. It is usually smaller than the total capacitance of the wire, because the far part of the wire is shielded by its resistance.

Quick Check: A library has delay_model "table_lookup" and no output_current groups. Which model is it?

NLDM only. A CCS library adds output current and receiver capacitance data to the tables.

Practice Exercise

Challenge: Push a Weak Cell to the Edge of Its Table

The output z is driven by a small OR gate, or2_0. With no load its delay is 0.1674 ns and the slew at z is 0.0297 ns. Run STA with each of these loads on z, one at a time, and write down the delay and slew of the OR gate output each time:


set_load 0.02 [get_ports z]
set_load 0.05 [get_ports z]
set_load 0.1 [get_ports z]

Predict how the delay and the slew grow, and whether the shape of the growth is a straight line.

Open the ready-made example in the lab, run synthesis, and then run STA. Editing constraints.sdc and re-running only STA, and choosing another library or corner, are PRO features.

Hint

The table has seven load columns that are not evenly spaced. At low loads the entries are close together, and they spread out for heavy loads. Also look at the transition symbol on the OR gate row: is it still v?

Solution

The OR gate delay and slew are 0.1674 ns and 0.0297 ns with no load, 0.3153 ns and 0.1725 ns with 0.02 pF, 0.5655 ns and 0.7542 ns with 0.05 pF, and 1.0730 ns and 1.4914 ns with 0.1 pF. The delay grows roughly linearly with the load, and the slew grows even faster. From 0.05 pF on, the worst edge is no longer the falling one but the rising edge (^), because for this cell the rising output is slower than the falling one under a heavy load. At 0.1 pF you are at the last column of the table, which is also the max_capacitance of the cell. The setup slack of z falls from 1.0326 to 0.8847, 0.6345 and 0.1270 ns.

Summary

  • NLDM models the load of a cell as one capacitor, which is accurate for short, low-resistance nets.
  • Resistive wires break that assumption. Delay calculators apply an effective capacitance to keep using NLDM tables.
  • CCS and ECSM model the driver as a time-varying current source and store output current waveforms.
  • A CCS library adds receiver capacitance tables and output current data, so it is larger and slower to use.
  • delay_model : "table_lookup" without output current groups identifies an NLDM-only library, as in the lab.
Did you find what you were looking for?

Quiz

No quiz questions available for this article.