Introduction
Recently I saw a question about pull-up and pull-down resistors and whether they can enhance drive strength. Many people asserted that pull resistors can increase drive capability. After discussing with several colleagues, we agreed that, except for special output structures such as open-collector, pull-up and pull-down resistors act as loads and only reduce drive strength.
However, experience often has a basis. Following an investigative approach, I traced where this idea might come from. The problem itself is simple, and the reasoning is instructive.
Diode-Logic Example
Diode logic circuits are rare today and have limited practicality, but their simplicity makes them useful for understanding basic concepts.
A basic diode AND gate is shown below. The AND implements Y = A & B: if either A or B is low, the output Y is low; only when both A and B are high is Y high.

In this circuit, assuming ideal diodes with no forward drop, the diodes act as one-way switches. When A and B equal VDD, the diodes are reverse biased and Y is pulled up to VDD by the resistor, so Y is high. If either A or B is at GND, the corresponding diode conducts and, because the diode's conduction resistance is much smaller than the pull-up resistor, Y is pulled to GND, producing a logic low.
For a diode OR gate, reverse the diodes and change the resistor to pull down to GND. The concept is straightforward.

Basic Principle
Even in these primitive logic circuits, pull-up and pull-down resistors appear. The principle is simple: use switches that are either closed (zero resistance) or open (infinite resistance) together with resistors to realize two distinct output voltages. A variant replaces the resistor with a current source. In integrated circuit processes, current sources are often easier to implement than resistors and can offer better drive.

The relative positions of switch and resistor determine the circuit behavior and the drive strength in each state. The switch's on resistance can be approximated as zero, implying very strong drive, whereas a resistor or current source can only provide limited drive determined by VDD/R or a fixed current. This leads to output asymmetry: the drive capability when outputting high can differ from when outputting low, i.e., the output impedance differs between states.
Another issue with the single-switch-plus-resistor style is static power consumption: whenever the switch is closed, current flows regardless of external load, causing static dissipation.
If the resistor is replaced by another switch, the modern CMOS logic cell is obtained: two complementary switches. Then both high and low outputs have strong drive. The pull resistors disappear.
Complementary switches also introduce a third state: when both switches are off, the output is floating (high impedance, Hi-Z), and the external signal determines the state. This yields tri-state logic gates.

Can Pull Resistors Enhance Drive?
Many empirical observations are not groundless, but they often omit important preconditions. Some logic families have markedly asymmetric output drive.
TTL families (70xx, 74Fxx, 74Sxx, 74LSxx, etc.) are one example. The simplified 7404 inverter schematic shows an asymmetric output stage: the high-side drive capability can be as low as 0.4 mA, whereas the low-side drive can reach 16 mA. The datasheet specifies output currents up to a point where the output voltage may no longer meet logic-level requirements.

Adding a pull-up resistor at the output can effectively improve the output voltage under certain high-state load conditions, at the cost of degrading low-state drive. If the chip's low-side drive is sufficiently strong, trading some low-side capability for improved high-side behavior can be acceptable.

Simulation results of load current versus output voltage, with and without pull-up resistors, show that pull-up resistors can improve output voltage under certain loads. However, when the load current increases, the effect diminishes. There are diminishing returns: once the pull-up is reduced below a certain resistance, the improvement is marginal and static power consumption increases significantly.
Why Not Design Symmetric Drivers?
If asymmetric output stages are problematic, why not make symmetric outputs? Historically, P-type transistors had inferior performance compared to N-type devices in terms of speed, power, and cost, so many older chips had few P-type devices. Also, TTL inputs draw little current when high but significant current when low, placing stricter requirements on low-side drive. These factors led designers to tolerate asymmetric output stages.
Another practical consequence is that pull-down resistor values in TTL must be quite large to avoid overloading the high output, but very large pull-downs can prevent the output from reaching the required high-level voltage. Therefore, TTL designs generally avoid pull-downs when possible.
Simulations for an inverter show that pull-down resistances larger than about 1.8 kΩ cannot meet the TTL-defined minimum high level, while pull-up resistances as large as 20 kΩ still have negligible effect on the output high level.
CMOS Circuits
Most designers now use CMOS families (HC, HCT, LVC, CD4000, etc.). CMOS uses symmetric complementary structures, so the pull-up or pull-down resistor generally does not help drive strength and only adds load. In most cases it is unnecessary.
A basic CMOS inverter requires only a complementary MOS pair, though practical inverters often cascade multiple pairs to increase gain.

However, CMOS inputs left floating will remain in an indeterminate state. To ensure a defined idle level, pull-up or pull-down resistors are commonly used on pins that may be left unconnected, such as removable external interfaces (for example, JTAG) or tri-stated buses. Most CMOS circuits do not require additional pull resistors.

Because CMOS inputs are voltage-controlled with very high impedance, pull resistors can be large; in theory, megaohm-level resistors could work. In practice, input protection structures such as ESD diodes inject leakage currents that increase with temperature. Therefore pull resistors for CMOS inputs are typically below 100 kΩ, and for advanced processes with larger I/O leakage the pull values are often in the kiloohm range. Always consult the datasheet for input currents when choosing pull resistor values.

Other Situations Requiring Pull Resistors
Open-collector (OC) and open-drain (OD) outputs typically require pull-up resistors. Push-pull outputs have both pull-up and pull-down transistors. OC and OD outputs only have the pull-down device, so they can only drive low or float. The floating state must be converted to a valid logic high with an appropriate pull-up resistor.

Although OC/OD outputs are somewhat old-fashioned and require external resistors, their advantage is wired-AND capability: multiple OC or OD outputs can share a line, and if any device drives low, the bus is low. This is useful for shared interrupts and power sequencing.

I2C is an OC/OD-style bus that enables bidirectional data transfer on a single line without extra direction control signals. The CAN bus uses wired-AND arbitration similarly.
When designing with OC or OD outputs, evaluate bus capacitance, pull-up resistance, and required speed. The larger the bus capacitance or the faster the speed, the smaller the required pull-up resistor. For example, with only one slave device on an I2C bus, a 4.75 kΩ pull-up may support 400 kHz. With 10 slaves and the same pull-up, 100 kHz may not be achievable, and bus load isolation or reduced speed may be necessary.
Below are waveforms with a 200 pF load and pull-up resistances of 500 Ω, 1 kΩ, 2 kΩ, 4.75 kΩ, and 10 kΩ. Larger pull-up values slow the charging of the capacitance, producing slower rising edges and potential waveform deformation that can break communication.

As a side note, logic inverters can sometimes be used as crude amplifiers. Although not ideal, some products have exploited inverters as inverting amplifiers, with very limited linear performance.
