Verilog · Chapter 12.2.4 · Switch-Level Modeling
Resistive MOS Switches in Verilog — rnmos, rpmos, rcmos & rtran
The final switch-level primitive family is the resistive switches, including rnmos, rpmos, rcmos, and the bidirectional rtran, rtranif0, and rtranif1. Each behaves exactly like its non-resistive counterpart, with the same conduction conditions and the same direction, but with one difference. A resistive switch reduces the strength of the signal it passes, modeling a high-resistance transistor. A strong input becomes a pull, a pull becomes weak, and so on down the strength scale. This matters in drive-strength resolution, because a resistive switch's output is weaker than a non-resistive one, so where both drive a node the stronger one wins. Resistive switches model ratioed logic, charge-sharing structures, and circuits that deliberately weaken a signal. This page covers the variants and the strength reduction they apply.
Foundation11 min readVerilogResistive SwitchrnmosStrengthSwitch-Level
Chapter 12 · Section 12.2.4 · Switch-Level Modeling
1. The Engineering Problem
Some switch-level circuits need a device that passes a signal but weakens it — a high-resistance transistor whose output should lose to a stronger driver on a shared node. Verilog provides resistive switch primitives for exactly this:
The resistive switches (
rnmos,rpmos,rcmos,rtran*) behave like their counterparts but reduce the strength of the passed signal by one level. Their output therefore loses, in resolution, to a non-resistive driver of the original strength.
This short page drills the resistive variants and the strength reduction they apply.
2. Mental Model — Same Switch, Lower Strength
3. The Resistive Variants
rnmos (out, data, gate); // like nmos, output strength reduced
rpmos (out, data, gate); // like pmos, output strength reduced
rcmos (out, data, ng, pg); // like cmos, output strength reduced
rtran (a, b); // like tran, strength reduced
rtranif1 (a, b, ctrl); // like tranif1, strength reduced
rtranif0 (a, b, ctrl); // like tranif0, strength reducedSame syntax, same conduction, same direction as the non-resistive forms — only the passed strength is lowered. A strong 1 through an nmos stays strong (subject to the NMOS weak-1 caveat); through an rnmos it is reduced to a pull (or lower) strength.
4. Strength Reduction in Resolution
The point of a resistive switch is that its output loses to a stronger driver. On a node driven by both a resistive and a non-resistive switch carrying different values, the non-resistive (stronger) one wins; carrying the same value, the result takes the stronger strength. This is how ratioed circuits work — a weak (resistive) pull-up or keeper holds a node, but a strong driver overrides it. The full resolution mechanics are 12.3; here the takeaway is that resistive = weaker = loses.
Visual A — resistive reduces strength
Resistive switch lowers the passed strength
data flow5. Common Mistakes
- Expecting a resistive switch to pass full strength — it reduces strength by one level (§2/§3).
- Using a resistive switch where a strong driver is needed — its output loses to non-resistive drivers (§4).
- Confusing resistive with non-resistive in resolution — the strength difference decides the node (§4, 12.3).
6. Interview Q&A
7. Exercises
Exercise 1 — Strength reduction
A strong 1 is passed through an rnmos. What strength does the output have (one level lower on the strength scale)?
Exercise 2 — Who wins?
A node is driven by an nmos passing a 0 and an rpmos passing a 1. Which value wins, and why?
Exercise 3 — Choose the primitive
You need a weak keeper that holds a node but is overridden by any strong driver. Which kind of switch (resistive or non-resistive) fits, and why?
8. Summary
The resistive switch primitives behave like their counterparts but reduce signal strength:
rnmos/rpmos/rcmos/rtran*— same conduction and direction as the non-resistive forms, but the passed signal is one strength level weaker.- In resolution, resistive loses — a resistive output is weaker than a non-resistive one, so the non-resistive driver wins; this models ratioed and charge-sharing circuits.
This completes the 12.2 switch primitives. The chapter now turns to the mechanism that decides node values: Chapter 12.3 Drive Strength and Resolution explains how the strengths of multiple drivers combine to determine the value on a switch-level node — the heart of switch-level simulation.
Related Tutorials
- Switch Level Primitives — Chapter 12.2; the non-resistive counterparts.
- Signal Strengths — Chapter 5.1.2; the strength scale these switches reduce on.
- Transmission Gates — Chapter 12.2.3; the full-strength pass structure (contrast).
- Drive Strength and Resolution — Chapter 12.3; how strengths combine to decide a node.
Standards & specifications
- Governing standard
- IEEE Std 1364 (Verilog)(opens IEEE in a new tab)
Defines the Verilog language and its simulation semantics, including the event scheduling model. Synthesis support is defined by tools, not by this standard.
This page also covers RTL structure, verification approach and debugging technique. Those are engineering practice built on the standard, not requirements the standard itself imposes.
Where this fits
Part of the Verilog HDL curriculum.
