Cp is the potential process capability index. It compares the width of your specification window to the width of your process variation. Cp tells you the best Cpk you could achieve if your process were perfectly centered between the spec limits.
The Formula
Cp = (USL - LSL) / 6σ
Where:
- USL is the upper specification limit
- LSL is the lower specification limit
- σ is the within-subgroup (sample) standard deviation
The numerator is the spec window. The denominator is 6σ, which covers 99.73% of a normal distribution. A Cp of 1.0 means your process variation exactly fills the spec window. Above 1.0, there's room to spare. Below 1.0, variation exceeds the spec range.
What Cp Values Mean
| Cp | Interpretation |
|---|---|
| < 1.0 | Process variation exceeds spec window. Even if perfectly centered, some units fall outside limits. |
| 1.0 | Variation exactly matches spec width. No margin for drift. |
| 1.33 | Process uses 75% of the spec window. Standard production target. |
| 1.67 | Process uses 60% of the spec window. Safety-critical target. |
| 2.0 | Process uses 50% of the spec window. |
Why Cp Alone Isn't Enough
Cp ignores where the process mean sits. A process with Cp = 1.5 could be perfectly centered (great) or shifted so far that units are failing on one side (bad). That's why Cp is always read alongside Cpk.
| Scenario | Cp | Cpk | What It Tells You |
|---|---|---|---|
| Centered, capable | 1.5 | 1.5 | Ideal state. |
| Off-center, capable spread | 1.5 | 0.8 | Enough spread margin, but the mean drifted. Re-center it. |
| Centered, too much variation | 0.8 | 0.8 | Variation is the problem. Reduce σ. |
When Cp is good but Cpk is low, the fix is a centering adjustment (calibration, tool offset, recipe change). When Cp itself is low, you need to reduce fundamental process variation.
Cp Requires Both Spec Limits
Cp needs USL and LSL. For one-sided specs (like maximum leakage current or maximum response time), Cp can't be calculated. TofuPilot shows "--" for Cp when only one limit is defined, and reports Cpu or Cpl instead.
Reading Cp in TofuPilot
Open the Process Control page, select a numeric measurement, and switch to the Capability tab. Cp appears in the top KPI row alongside Cpk, Cpl, and Cpu. Click the Cp card to toggle its line on the daily trend chart.
Hover over the Cp value to see the formula and a plain-language explanation. If Cp is significantly higher than Cpk, the tooltip confirms that re-centering the process would improve capability.
import openhtf as htf
from openhtf.util import units
from tofupilot.openhtf import TofuPilot
@htf.measures(
htf.Measurement("resistance")
.in_range(minimum=95, maximum=105)
.with_units(units.OHM),
)
def measure_resistance(test):
test.measurements.resistance = 100.3
def main():
test = htf.Test(measure_resistance)
with TofuPilot(test):
test.execute(test_start=lambda: "UNIT-0101")
if __name__ == "__main__":
main()Both minimum and maximum are set, so TofuPilot can compute Cp. If you only set one, you'll get a one-sided index instead.