Skip to content
VLSI Mentor

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

Azvya Education Pvt. Ltd.VLSI Mentor
resistive.v
   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 reduced

Same 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 flow
Resistive switch lowers the passed strengthstrong inpute.g. strong 1rnmos / rpmos / …reduce one levelweaker outpute.g. pull 1loses to non-resistive driverloses tonon-resistive…in resolution (12.3)
A resistive switch passes the signal but drops its strength by one level, so its output is weaker than a non-resistive switch's. Where both drive a node, the non-resistive (stronger) driver wins. This models deliberately-weak devices in ratioed and charge-sharing circuits.

5. Common Mistakes

  1. Expecting a resistive switch to pass full strength — it reduces strength by one level (§2/§3).
  2. Using a resistive switch where a strong driver is needed — its output loses to non-resistive drivers (§4).
  3. 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.

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.