Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • RTL Foundations36
  • Combinational Design25
    • Combinational Timing Overview
    • Muxes, Decoders and Encoders
    • Arithmetic Blocks
    • Comparators and Shifters
    • Tri-State and Shared Buses
      • Tri-State Basics
      • Bus Holders, Floating Nets and Wired Logic
      • When Not to Use Internal Tri-State in ASIC RTL
    • Latch Inference
    • Arithmetic Datapaths
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Combinational Design
  1. Topics
  2. RTL Design
  3. Combinational Design
  4. Tri-State and Shared Buses

Part 2 · Combinational · Intermediate

Tri-State and Shared Buses

Many drivers, one wire: when to share it, when to mux it, and what a clash really costs.

  • 3topics
  • 3lessons

Topics in this section

  1. 1Tri-State Basics1 lesson
  2. 2Bus Holders, Floating Nets and Wired Logic1 lesson
  3. 3When Not to Use Internal Tri-State in ASIC RTL1 lesson
On this page

    A tri-state driver can output 0, 1, or nothing (high impedance, z). Only one driver may speak at a time.

    Pads use this sharing; the core uses muxes.

    Two tri-state drivers connected to a shared net feeding receivers.
    Two drivers on one net. Correct operation requires that at most one output enable is active.

    Lessons in this topic

    3 lessons, about 13 min

    1. 1Tri-State BasicsYou can use the four net values, write a tri-state driver and a bidirectional pin, and read the resolution table.3 min
    2. 2Bus Holders, Floating Nets and Wired LogicYou can choose a pull-up, pull-down, keeper or default driver for a floating net, and model open-drain lines with tri1 and wand.5 min
    3. 3When Not to Use Internal Tri-State in ASIC RTLYou can give four reasons to avoid internal tri-state in an ASIC, convert a tri-state bus to an AND-OR mux, and say where tri-state still belongs.5 min
    Check yourself A bus has no active driver. What value does a receiver read in simulation and in hardware?

    Simulation: z (and downstream logic usually turns it into x). Hardware: a floating, undefined voltage that can sit in the middle region and draw extra current. That is why a floating net needs a pull-up, pull-down or bus keeper.

    Interview

    “What is high impedance, and what happens if two drivers fight?” A clean answer: z means undriven; conflicting drivers produce x in simulation and a real short-circuit current in hardware.

    Revision sheet

    The whole topic on one page, taken from each lesson's Remember box. Read it before an interview, or print it.

    Tri-State Basics

    • A net has four values: 0, 1, z (nobody drives) and x (clash or unknown).

    • Two drivers that disagree on a bit give x; two that agree give that value.

    • Keep the output enable glitch-free, because a glitch while another device drives is a brief short.

    Rule of thumb: enable one driver at a time, and make the enables one-hot.

    Bus Holders, Floating Nets and Wired Logic

    • tri1 resolves to 1 and tri0 to 0 when undriven; drivers of 1 and 0 together still give x.

    • An open-drain device drives 0 or z, never a hard 1. The pull-up makes the 1.

    • A bare wand reads z when every driver releases, so it needs a pull-up too.

    Rule of thumb: give every shared net a resting value.

    When Not to Use Internal Tri-State in ASIC RTL

    • Reasons: timing analysis, scan test, contention, and tool or library support.

    • An AND-OR mux gives a known value when enables overlap (the OR of the words), so assert that at most one enable is active.

    • Tri-state belongs at the pads, in a small wrapper that gives the core separate data_in, data_out and data_oe.

    Rule of thumb: keep tri-state at the pad ring and use muxes inside the core.

    Practise it

    • Mini project: a 32-bit leading-zero counter and normaliser

    • Practice question: Tri-state buffer and ASIC versus FPGA differences

    • Interview: run a mock interview on this topic

    PreviousNext: Tri-State Basics

    Up next

    Up nextTri-State Basics

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Combinational Timing Overview
    • Muxes, Decoders and Encoders
    • Arithmetic Blocks