RUE Logo

Module 1.1 - General Schematic Quality

Ensuring schematic readability, consistency, and correctness before moving to layout

1. Hierarchical Structure Major

What It Is

Hierarchical schematic structure means the design is organized into logical functional blocks using sub-sheets or hierarchical sheets. Each sheet represents a distinct function (e.g., Power Supply, MCU Core, Communications Interface) with clearly defined ports connecting them.

This organizational approach mirrors how modern systems are designed - modular, testable, and maintainable.

Why It Matters

A flat schematic with hundreds of components on a single sheet is nearly impossible to review, debug, or maintain. Without hierarchy, signal tracing becomes a nightmare, design reuse is impossible, and collaboration between engineers is severely hampered. In production, poorly organized schematics lead to missed review items and manufacturing errors.

How to Check - Step by Step

  1. Open the top-level schematic sheet and verify it shows the system block diagram with hierarchical sheet symbols.
  2. Confirm each hierarchical sheet has a descriptive name matching its function (e.g., "Power_Supply", "USB_Interface", not "Sheet1", "Sheet2").
  3. Verify that each sheet contains 50-100 components maximum - split oversized sheets.
  4. Check that hierarchical pins on sheet symbols match the actual ports inside the sub-sheet.
  5. Ensure signal flow is logical: inputs on the left, outputs on the right of sheet symbols.
  6. Verify that power connections pass correctly between hierarchy levels.
  7. Check that the hierarchy depth is reasonable (2-3 levels for most designs, up to 4 for complex SoC designs).

Top-level sheet shows: Power_Supply -> MCU_Core -> USB_Interface -> Debug_JTAG -> Sensors

Each sub-sheet has clear port labels like VCC_3V3, USB_DP, USB_DM, SPI_MOSI. The MCU sheet contains only the microcontroller and its immediate support (decoupling, crystal, reset). Peripheral interfaces live on separate sheets.

Single sheet with 300+ components: Everything on one page - STM32, power regulators, USB, CAN, sensors, connectors all mixed together. Net labels jump randomly across the page. Power symbols are scattered. An engineer reviewing this has to zoom to 400% and scroll endlessly to trace any signal.

KiCad: Use Place > Hierarchical Sheet. Right-click sheet symbol > Edit Sheet Properties to set name. Use Hierarchical Labels inside sub-sheets to create ports.

Altium: Project > Add New Schematic to Project. Use Sheet Symbols and Sheet Entries. Design > Create Sheet From Selection to refactor.

OrCAD: Place > Hierarchical Block. Use Hierarchical Ports inside sub-designs. Navigate with hierarchy browser in Capture CIS.

  • Over-hierarchy: Creating a sub-sheet for just 3-4 components adds navigation overhead without benefit.
  • Naming mismatch: Hierarchical port named "DATA" on parent but "SPI_DATA" inside the sub-sheet causes connectivity issues in some tools.
  • Power net isolation: Forgetting to propagate power nets through hierarchy levels, causing unconnected power pins in sub-sheets.

2. Sheet Numbering & Title Blocks Minor

What It Is

Every schematic sheet must have a properly filled title block containing: project name, sheet title, sheet number (e.g., 3 of 12), revision, date, designer name, and approval signatures. Sheet numbering follows a logical order matching the hierarchy.

Title blocks serve as the formal documentation header for each page, enabling traceability through the product lifecycle.

Why It Matters

During manufacturing, assembly houses reference sheet numbers for questions and ECOs (Engineering Change Orders). Missing or incorrect title blocks cause confusion in production, make revision control impossible, and fail audits in regulated industries (medical, automotive, aerospace). A printed schematic without title blocks is essentially an uncontrolled document.

How to Check - Step by Step

  1. Open each schematic sheet and locate the title block (typically bottom-right corner).
  2. Verify the project name/number is consistent across all sheets.
  3. Check that sheet numbers are sequential and total count is correct (e.g., "Sheet 3 of 12" - confirm there are indeed 12 sheets).
  4. Verify the revision field matches the current design revision and revision history document.
  5. Confirm the date field shows the last modification date, not a stale date from months ago.
  6. Check that the designer and reviewer/approver fields are filled.
  7. Ensure the sheet title describes the functional content of that specific sheet.

Title Block: Project: "Smart Sensor Hub v2.1" | Sheet: "3 of 8 - Power Management" | Rev: C | Date: 2024-03-15 | Designer: J. Smith | Approved: M. Lee

Each sheet has a unique descriptive title. Revision "C" matches the ECO log showing three design iterations.

Title Block: Project: "Project1" | Sheet: "1 of 1" (but design has 6 sheets) | Rev: (blank) | Date: 2022-01-01 | Designer: (blank)

Generic project name, incorrect sheet count, no revision tracking, stale date from two years ago.

KiCad: File > Page Settings to edit title block. Fields auto-populate with ${REVISION}, ${DATE}. Custom title block templates in .kicad_wks files.

Altium: Design > Document Options > Parameters tab. Use .SchDot template files for company-standard title blocks.

OrCAD: Options > Schematic Page Properties. Use Title Block symbols from library. Automate with TCL scripts for batch updates.

  • Stale dates: Forgetting to update dates after modifications - use auto-date features where available.
  • Sheet count drift: Adding/removing sheets without updating "X of Y" on all existing sheets.
  • Template mismatch: Using different title block templates across sheets in the same project.

3. Net Naming Convention Major

What It Is

Net naming convention defines a consistent, descriptive naming scheme for all signals in the schematic. Good net names communicate function, direction, voltage level, and active state. They follow a documented standard applied uniformly across all sheets.

Examples of conventions: VCC_3V3, nRESET (active low), SPI1_MOSI, UART2_TX.

Why It Matters

Net names propagate to the PCB layout where they become the primary reference during routing. Inconsistent or meaningless names (Net001, N$5) make layout review impossible, complicate debugging with an oscilloscope, and cause errors when multiple engineers work on the same design. During bring-up, clear net names on the PCB silkscreen or assembly drawing save hours of probing.

How to Check - Step by Step

  1. Export or review the complete netlist and sort by name to spot inconsistencies.
  2. Verify all power nets follow the same pattern (e.g., VCC_3V3, VCC_1V8, VCC_5V - not mixing VDD/VCC randomly).
  3. Check that active-low signals are clearly indicated (prefix 'n' or suffix '_N' or '_B' - pick ONE convention).
  4. Confirm bus signals use consistent numbering: DATA[0], DATA[1]... or DATA_0, DATA_1...
  5. Verify that auto-generated net names (Net-C1-Pad1) have been replaced with meaningful names on all important signals.
  6. Check that interface signals include the peripheral instance: SPI1_MOSI, not just MOSI (important when multiple SPI buses exist).
  7. Ensure no duplicate net names are used for different signals (would create shorts).

Consistent naming:

VCC_3V3, VCC_1V8, VCC_5V     (power rails)
GND, AGND, PGND              (ground domains)
nRESET, nCS_FLASH, nIRQ      (active-low with 'n' prefix)
SPI1_MOSI, SPI1_MISO, SPI1_SCK  (bus with instance number)
USB_DP, USB_DM               (differential pair)
LED_STATUS_RED                (descriptive function)

Inconsistent naming:

3.3V, Vcc, VDD3V3, +3V3      (four different names for same rail!)
RESET, reset_n, RST_BAR      (three conventions for active-low)
Net-(U1-Pad5), N$23          (auto-generated, meaningless)
MOSI                          (which SPI bus? ambiguous)
D+                            (special characters cause netlist issues)

KiCad: Edit > Global Label or Net Label. Use Inspect > Net Inspector to review all nets. ERC flags single-pin nets.

Altium: Reports > Net Status to list all nets. Use Name parameter in Net Label properties. Project Options > Net Identifier Scope controls naming.

OrCAD: Use Analysis > Cross Reference to find all net occurrences. DRC can flag unnamed nets with custom rules.

  • Special characters: Using +, -, /, or spaces in net names causes issues with some netlist formats and PCB tools.
  • Case sensitivity: Some tools treat "Reset" and "RESET" as different nets - always use consistent case.
  • Implicit connections: Relying on same net name across sheets without verifying the tool's net scope settings (local vs. global).

4. Reference Designators Minor

What It Is

Reference designators (refdes) are unique identifiers assigned to every component in the schematic (R1, C15, U3, etc.). They must be unique across the entire design, follow standard prefixes (per IEEE 315 or IPC-2612), and be logically grouped by function or sheet.

The numbering scheme should aid assembly and debugging - components in the same functional block should have sequential numbers.

Why It Matters

Duplicate reference designators cause BOM errors - you might order 50 capacitors when you need 100. During assembly, technicians reference components by designator; if R12 appears twice, which one gets which value? During debugging, "check R47" is only useful if R47 is unique and findable on the board.

How to Check - Step by Step

  1. Run the ERC/DRC to check for duplicate reference designators - this is the fastest check.
  2. Verify all components have assigned designators (no "R?" or "U?" remaining).
  3. Check that prefixes follow standards: R=Resistor, C=Capacitor, L=Inductor, U=IC, Q=Transistor, D=Diode, J=Connector, Y=Crystal.
  4. Verify numbering is logical: sheet 1 components start at 100 (R100-R199), sheet 2 at 200 (R200-R299), etc.
  5. Confirm that no designator gaps exist that might confuse assembly (R1, R2, R5 - where are R3, R4?).
  6. Check test points have designators (TP1, TP2) and are included in the BOM.

Power Supply sheet (Sheet 2): U201 (regulator), C201-C210 (decoupling), R201-R204 (feedback divider), D201 (Schottky), L201 (inductor). All grouped in 200-series matching sheet 2.

Random numbering: Power supply has R3, R47, R112, C5, C89 scattered across different sheets. Two instances of C22 exist (one is 100nF, other is 10uF). Component U? still unassigned. Connector labeled "P1" instead of "J1".

KiCad: Tools > Annotate Schematic. Choose "Sort by X/Y position" or "Sort by sheet". Use "Reset existing" carefully.

Altium: Tools > Annotate Schematics. Configure with "Order of Processing" and sheet-based numbering offset.

OrCAD: Tools > Annotate in Capture. Use "Unconditional reference update" for re-annotation. Check with BOM report.

  • Re-annotation disasters: Running global re-annotation after layout is started destroys component-to-footprint mapping.
  • Copy-paste duplicates: Copying circuits between projects without re-annotating creates duplicate designators.
  • Missing fiducials/mounting holes: These need designators too (FID1, MH1) for BOM and placement files.

5. No Floating Pins Critical

What It Is

A floating pin is any IC input pin that is not connected to a defined logic level (VCC, GND, or a driven signal). Floating inputs pick up noise and oscillate between logic states, causing excessive current draw, erratic behavior, and potential latch-up that can destroy the IC.

Every input pin must be driven. Every unused output should be documented as intentionally unconnected.

Why It Matters

A single floating CMOS input can cause the input buffer to sit in its linear region, drawing 10-100x normal current. This causes overheating, intermittent operation, and field failures. In safety-critical systems, a floating reset pin could cause unexpected device resets. This is one of the most common causes of "works on the bench but fails in production" issues.

How to Check - Step by Step

  1. Run ERC and review all "unconnected pin" warnings - do not dismiss these without investigation.
  2. For every IC, open the datasheet and check the "Unused Pins" or "Application Information" section.
  3. Verify all unused inputs are tied to appropriate levels (VCC or GND per datasheet recommendation).
  4. Check that unused op-amp inputs are properly configured (non-inverting to mid-rail, output to inverting input).
  5. Confirm unused outputs are marked with "No Connect" flags (X symbol) intentionally, not accidentally left open.
  6. For multi-function pins (GPIO), verify the default state after reset is safe.
  7. Check pull-up/pull-down resistors on critical signals during power-up before firmware initializes.

STM32 unused pins: Unused GPIO pins configured as inputs with internal pull-downs enabled in firmware, AND external 10k pull-downs added for safety during boot. Unused analog inputs tied to AGND through 1k resistors. BOOT0 pin tied to GND through 10k to ensure boot from flash.

74HC14 Schmitt trigger: Only 4 of 6 inverters used. Remaining 2 inputs left floating (pins 9 and 11 unconnected). These inputs oscillate at ~50MHz, causing EMI failures and 40mA excess current draw. The IC runs hot and eventually fails.

KiCad: ERC will flag unconnected pins. Use "No Connect" flag (Place > No Connect Flag) on intentionally unused pins. Check pin types in symbol editor.

Altium: Compile project for ERC. Use "No ERC" directive on intentionally unconnected pins. Reports > Component Cross Reference shows all pins.

OrCAD: DRC flags unconnected pins. Use "NO CONNECT" marker from Place menu. Check DRC report under "Unconnected Pins" section.

  • Blind no-connect flags: Placing "X" markers on every warning without actually checking if the pin should be connected.
  • Reset pins: Assuming internal pull-ups are sufficient - many have weak internal pulls that are susceptible to noise.
  • Analog inputs: Leaving ADC inputs floating when not used - they couple noise into the ADC reference and affect other channels.

6. Power/Ground Symbols Consistent Major

What It Is

All power and ground symbols throughout the schematic must use the same symbol style and net name for the same electrical net. Different ground domains (digital, analog, power) should use visually distinct symbols. Power symbols should clearly show the voltage level.

This checkpoint ensures that what appears to be the same power rail actually IS the same electrical net everywhere in the design.

Why It Matters

If one sheet uses "GND" symbol and another uses "DGND" symbol for what should be the same net, those pins will be unconnected in the PCB layout. This creates a floating ground plane situation that causes massive EMI and non-functional circuits. Similarly, mixing VCC symbol variants can create separate power islands.

How to Check - Step by Step

  1. List all unique power net names in the design using the net inspector or netlist export.
  2. Verify that each power rail has exactly ONE net name (not VCC_3V3 on some sheets and +3.3V on others).
  3. Check that ground symbols are consistent: GND for digital, AGND for analog, PGND for power - or whatever convention you chose.
  4. Verify that split ground domains are intentionally separate and connected at a single point (star ground).
  5. Confirm power symbols are the same library symbol everywhere (not one custom and one default).
  6. Check that power flag symbols are placed on nets driven by connectors or regulators (to suppress ERC warnings correctly).

Consistent power scheme: Every 3.3V rail uses the same power symbol labeled "VCC_3V3" with an arrow-up style. Ground uses a standard 3-bar symbol labeled "GND" everywhere. Analog ground uses a triangle symbol labeled "AGND" with a single connection point to GND near the ADC.

Mixed symbols: Sheet 1 uses "+3V3" power symbol. Sheet 3 uses "VCC_3V3" label. Sheet 5 uses "3.3V" as a net label (not a power symbol). These are THREE SEPARATE NETS that never connect! The PCB has isolated 3.3V islands and nothing works.

KiCad: Use only power symbols from the "power" library. Check symbol net names in Symbol Properties. Place > Power Port. PWR_FLAG on connector-driven rails.

Altium: Use Power Port objects (not net labels) for power. Properties > Style and Net set correctly. Verify in Net List panel.

OrCAD: Power symbols from CAPSYM library. Check that power pin types are set to "Power" in symbol editor. Cross-reference power nets in netlist.

  • Global vs. local scope: Some tools treat power symbols as global and net labels as sheet-local - mixing them creates disconnected nets.
  • Library variants: Different engineers using different power symbol libraries that look the same but have different net names internally.
  • Hidden power pins: IC symbols with hidden VCC/GND pins connecting to unexpected net names from the symbol definition.

7. Off-Sheet Connectors Match Major

What It Is

Off-sheet connectors (also called off-page connectors, net labels, or hierarchical ports) are used to continue signals between schematic sheets. Every off-sheet connector on one sheet must have a matching connector with the identical name on at least one other sheet. Orphaned connectors indicate missing connections.

This is the inter-sheet "wiring" that holds a multi-sheet schematic together electrically.

Why It Matters

An unmatched off-sheet connector means a signal goes nowhere - it is effectively an open circuit. If UART_TX is labeled on the MCU sheet but misspelled as UART_Tx on the connector sheet, those signals never connect. The board will be fabricated with broken signal paths that cannot be fixed without a respin.

How to Check - Step by Step

  1. Generate a cross-reference report of all off-sheet connectors/global labels.
  2. Verify that every off-sheet connector appears on at least two sheets (source and destination).
  3. Check for case-sensitivity issues (RESET vs Reset vs reset).
  4. Verify no trailing spaces or invisible characters in net names (common copy-paste issue).
  5. Cross-check hierarchical ports with their parent sheet symbol pins.
  6. Look for "almost matching" names that might indicate typos (SPI_MSOI vs SPI_MOSI).

Sheet 2 (MCU): Off-sheet label "I2C1_SDA" with arrow pointing right (output from this sheet). Sheet 4 (Sensors): Off-sheet label "I2C1_SDA" with arrow pointing left (input to this sheet). Both use identical naming and appear in cross-reference report as connected.

Sheet 2 (MCU): Label "I2C_SDA" (missing instance number). Sheet 4 (Sensors): Label "I2C1_SDA" (with instance number). Net inspector shows these as TWO DIFFERENT NETS with one connection each - both floating. The I2C bus is broken.

KiCad: ERC checks for single-connection nets. Use Inspect > Net Inspector to find nets with only one connection. Hierarchical labels are checked against sheet symbol pins.

Altium: Compile > Messages shows unmatched net labels. Project Options > Net Identifier Scope must be set correctly (Automatic or Global).

OrCAD: DRC checks for single-pin nets. Use cross-reference report (Tools > Cross Reference) to verify all off-page connectors have matches.

  • Scope settings: Tool set to "sheet-local" net scope means same-name labels on different sheets do NOT connect.
  • Direction arrows: Some tools enforce directionality - an "input" off-sheet on both sheets means neither drives the net.
  • Renaming signals: Changing a net name on one sheet but forgetting to update the matching label on other sheets.

8. ERC Clean Critical

What It Is

Electrical Rules Check (ERC) is the automated verification that checks for common schematic errors: unconnected pins, conflicting pin types (two outputs driving the same net), missing power connections, and other electrical violations. A "clean" ERC means zero errors and all warnings either resolved or documented as intentional.

ERC is your first line of automated defense against schematic errors before committing to a PCB layout.

Why It Matters

An ERC with 50 suppressed warnings likely contains 2-3 real errors hidden among the noise. Engineers who ignore ERC routinely ship boards with open connections, shorted outputs, and undriven inputs. Fixing these after fabrication costs $10,000-$50,000 per board respin, plus weeks of schedule delay. ERC takes 30 seconds to run but can save months of debugging.

How to Check - Step by Step

  1. Run ERC with ALL checks enabled (do not disable categories before first run).
  2. Address every ERROR immediately - these are always real problems.
  3. Review each WARNING individually - do not bulk-dismiss them.
  4. For intentional violations (e.g., bidirectional bus), add specific ERC exclusions with comments explaining why.
  5. Verify that suppressed warnings are documented (not just silently ignored).
  6. Re-run ERC after any schematic modification to catch newly introduced issues.
  7. Cross-check ERC pin types: verify that power pins are typed as "Power Input", outputs as "Output", etc. in symbol definitions.

ERC Report: "0 Errors, 2 Warnings" - Warning 1: Bidirectional I2C SDA connected to bidirectional I2C SDA (expected, documented). Warning 2: Output pin U3-7 connected to output pin U5-3 (documented: U5 is tri-state, directly controlled via OE pin, never active simultaneously).

ERC Report: "3 Errors, 47 Warnings - suppressed" - Engineer says "ERC doesn't work well with this design." Hidden among suppressed items: Pin 12 of MCU (UART_RX) is unconnected, two regulators driving the same net with no OR-ing diodes, 8 input pins floating.

KiCad: Inspect > Electrical Rules Checker. Configure pin type conflict matrix in ERC Settings. Use ERC exclusions sparingly with right-click > Exclude Violation.

Altium: Project > Compile. Check Messages panel. Configure rules in Project Options > Error Reporting. Use specific "No ERC" directives.

OrCAD: Tools > Design Rules Check. Configure in DRC Settings dialog. Review report file (.DRC). Use "No DRC" markers for documented exceptions.

  • Bulk suppression: Turning off entire categories of warnings instead of addressing each individually.
  • Wrong pin types: Setting all pins to "passive" in custom symbols to avoid ERC errors - this defeats the purpose of ERC entirely.
  • Stale exclusions: ERC exclusions remaining after the circuit was modified, now hiding new real errors.

9. Component Values Displayed Minor

What It Is

Every passive component must have its value clearly displayed on the schematic (resistance, capacitance, inductance). Active components should show part numbers. Additional critical parameters (voltage rating, tolerance, power rating) should be visible for components where these are design-critical.

The schematic must be self-contained - an engineer should be able to understand the design without opening the BOM.

Why It Matters

A resistor symbol without a value is meaningless - is it 100 ohms or 100k ohms? During review, missing values make it impossible to verify calculations (voltage dividers, current limits, filter frequencies). During assembly, if values are only in the BOM and not on the schematic, cross-checking is impossible and errors go undetected.

How to Check - Step by Step

  1. Visually scan each schematic sheet for components showing only a reference designator without a value.
  2. Check that resistor values include units (10k, 4.7R, 1M - not just "4700").
  3. Verify capacitor values show capacitance AND voltage rating for any cap above signal-level (e.g., "10uF/25V").
  4. Confirm inductor values show inductance, current rating, and DC resistance if critical.
  5. Check that IC part numbers are visible (full MPN like STM32F407VGT6, not just "MCU").
  6. Verify that component values match between schematic display and component properties/BOM.

Voltage divider: R1=10k 1% 0402 and R2=3.3k 1% 0402 shown with values visible. Notes indicate "VOUT = 3.3V * 3.3k/(10k+3.3k) = 0.82V (ADC reference)". Capacitor C15 shows "22uF/16V X5R 0805".

Filter circuit: R23 shows no value (hidden field). C44 shows "C" only. L5 shows "INDUCTOR". Engineer must open properties dialog on each component or cross-reference BOM to understand the circuit. No reviewer can verify the filter cutoff frequency at a glance.

KiCad: Edit > Field Visibility to show/hide value fields. Use bulk edit (Edit > Change Symbol Fields) to display values for all components.

Altium: Right-click component > Properties > Parameters tab > visible checkbox. Use Inspector panel for bulk visibility changes.

OrCAD: Display Properties on components. Use Property Editor (Edit > Properties) for spreadsheet-style bulk editing of visible fields.

  • Hidden fields: Values exist in properties but are set to "invisible" - looks clean but is unusable for review.
  • Ambiguous units: "100" could mean 100 ohms, 100k ohms, or 100pF depending on context - always include units.
  • Overlapping text: Value labels overlapping other elements because positioning was never adjusted after placement.

10. Junction Dots & Wire Clarity Major

What It Is

Junction dots must appear at every T-junction or crossing where wires are electrically connected. Wires that cross without a junction dot are NOT connected. All wires must be clean, orthogonal (horizontal or vertical), and not overlapping. Wire stubs (short dead-end segments) indicate unfinished connections.

This is the visual grammar of schematics - ambiguity in connections equals ambiguity in the circuit.

Why It Matters

A missing junction dot at a T-intersection means the connection does not exist in the netlist - even though it looks connected visually. Conversely, an accidental junction where wires overlap creates unintended shorts. These are among the most insidious schematic bugs because they look correct on screen/paper but are electrically wrong. A single missing junction can mean a power rail is disconnected from half the board.

How to Check - Step by Step

  1. Zoom in to each wire junction point and verify a dot is present at T-connections and 4-way crosses.
  2. Check that wires crossing at right angles without a junction dot are intentionally NOT connected.
  3. Look for wire stubs - short segments that end without connecting to anything (indicates incomplete editing).
  4. Verify all wires are on-grid (snap to grid) to ensure proper electrical connections.
  5. Check that no wires overlap (two wires on top of each other look like one but may create double connections or confusion).
  6. Verify bus entries are properly formed where individual signals branch from buses.
  7. Run ERC to catch connectivity issues caused by off-grid wires that appear connected but aren't.

Clear T-junction: VCC_3V3 power rail runs horizontally. Three vertical wires drop down to IC power pins. Each connection point has a visible junction dot. One wire crosses over a signal wire at 90 degrees WITHOUT a dot - clearly not connected. No ambiguity.

Ambiguous crossing: Two wires cross at a point where a T-junction also exists, but no junction dot. It's impossible to tell if this is a 4-way connection, a T-connection, or just two crossing wires. The engineer "assumed" it was connected. The netlist says otherwise. Board fails.

KiCad: Junctions auto-placed in KiCad 7+. Check Place > Junction for manual placement. Edit > Cleanup Schematic to find off-grid wires. Use View > Grid to verify alignment.

Altium: Auto-junction on T-connections. Use Edit > Toggle Cross-Over to differentiate crossing wires. Reports > Net Status for connectivity verification.

OrCAD: Junction dots auto-placed at T-connections. Verify with DRC. Use Place > Wire to redraw suspicious connections. Check View > Zoom to verify dots are present.

  • Off-grid placement: Moving components off-grid causes wire endpoints to not align with pins, creating false connections that ERC might miss.
  • 4-way junctions: Avoid 4-way crossings entirely - always offset to create two T-junctions for absolute clarity.
  • PDF/print artifacts: Junction dots may be invisible when printed at certain scales - verify on printed copies used in reviews.

11. Bus Notation Correct Minor

What It Is

Bus notation groups related signals (like data buses, address buses) into a single thick-line symbol on the schematic, with individual signals branching off via bus entries. The bus name and member naming must follow the tool's specific syntax (e.g., DATA[0..7] in KiCad, DATA[7:0] in Altium) and all bus members must be explicitly connected.

Buses simplify the visual representation of parallel interfaces without reducing electrical connectivity.

Why It Matters

Incorrect bus notation can silently drop signals - if the bus is defined as DATA[0..7] but a branch label says DATA[8], it is NOT part of the bus and may become floating. Bus syntax errors can cause the entire bus to fail connectivity checks or, worse, create incorrect connections between mismatched signals.

How to Check - Step by Step

  1. Verify bus names follow the tool's required syntax exactly (brackets, colons, dots vary by tool).
  2. Check that every bus member signal that branches off has a label matching the bus definition.
  3. Verify bus width matches on both ends (8-bit bus on one sheet cannot connect to 16-bit bus on another without explicit mapping).
  4. Confirm bus entries (angled line segments) are properly oriented and connected to the bus wire.
  5. Check that bus-to-bus connections between sheets use matching names and widths.
  6. Verify that individual net labels on bus branches match the expected pin connections.
  7. Run ERC to check for bus membership errors and unconnected bus members.

Memory data bus: Bus drawn as thick line labeled DATA[0..7]. Eight bus entries branch off with labels DATA[0], DATA[1], ... DATA[7] connecting to MCU port pins PA0-PA7 and SRAM D0-D7. All 8 signals verified in netlist.

Mismatched bus: Bus labeled "DATA[0:7]" (colon notation) but tool requires "DATA[0..7]" (dot notation). Tool treats it as a single net named literally "DATA[0:7]" instead of expanding to 8 individual nets. All 8 MCU pins connect to one net (massive short). Or: Bus has 8 members but only 6 branch labels exist - 2 signals are floating.

KiCad: Bus syntax is {SIGNAL1 SIGNAL2 SIGNAL3} for named buses or DATA[0..7] for vector buses. Place > Bus. Use Bus Member tool (Place > Wire to Bus Entry).

Altium: Bus syntax is DATA[7..0]. Use Place > Bus. Net labels on branches must match: DATA0, DATA1... or DATA[0], DATA[1]... depending on configuration.

OrCAD: Use Place > Bus. Bus names like DATA[0:7]. Bus entries connect with Place > Bus Entry. Verify in DRC that all bus members have connections.

  • Syntax variations: DATA[0..7], DATA[0:7], DATA[7:0], DATA<0:7> are all DIFFERENT depending on tool - using wrong syntax breaks the bus silently.
  • Bit ordering: Connecting DATA[0] to the MSB pin instead of LSB because bus notation order was misunderstood (big-endian vs little-endian confusion).
  • Mixed buses: Putting SPI signals on a "DATA" bus for visual convenience - this confuses reviewers and can cause naming conflicts.