Skip to main content
Signal Integrity Course

Signal Integrity Course

This course is for electrical engineers who are new to tscircuit. It takes you from a voltage divider to an eye diagram on a routed DDR3 trace. Each lesson adds one new idea and ends with a check you can do on paper.

You don't need to know React. A tscircuit file is a function that returns your circuit as tags. <resistor> is a resistor, <trace> is a connection, and tsci simulate runs the analysis you declare.

Route​

Part 1 · Simple: schematic circuits​

Engine: ngspice. Traces are ideal wires.

#LessonYou learnCheck by hand
1Voltage dividerSources, probes, DC operating point, reading the outputVout = V·R2/(R1+R2)
2Diode I–V curveDC sweepKnee near 0.6–0.7 V
3RC step responseTransient analysis63 % at τ = RC
4RC Bode plotAC sweep−3 dB at fc = 1/(2πRC)
5Parameter sweepsanalog.sweepparameterτ scales with R
6Real circuitsRectifiers, switches, convertersDatasheet behaviour

Part 2 · Medium: the trace is real​

#LessonYou learnCheck by hand
7A trace is an RLCFast edges ring on a lumped tracef ≈ 1/(2π√LC)
8Transmission lineZ0, delay, reflectionsOpen end doubles the step
9TerminationSeries vs parallel terminationClean when R = Z0
10Your first pcb_spice runThe board supplies the R, L and CMicrostrip Z0 formula
11Bits and eyesBit patterns, UI, eye diagrams, ISIEye closes once a round trip exceeds a bit
12Real buffers (IBIS)<ibismodel>, drive strengthBest drive ≈ Z0, not the strongest
13The return pathPlane distance sets L and Z0L grows with distance to the plane
14Changing layersVias and stubsA dip at the via
15CrosstalkSeveral lanes, aggressor vs victim, sanity-checking a modelShould fall with spacing

Part 3 · Hard: DDR3 on the AM3352 board​

#LessonYou learn
16One DQ laneSimulate the real board, find routed pins, vendor IBIS models, the DQ0 eye
17Add the strobeDQS/DQSn, centre-aligned writes, quiet vs switching
18Corners and settingsIBIS corners, drive strength, ODT
19The full byte laneEight DQ bits, DM and DQS with coupling, worst bit
20Routed copperReal curves, planes and vias
21Timing checkSetup/hold, VREF thresholds, reads
22PowerVDDQ impedance, simultaneous switching noise

Lesson status​

Each lesson starts with a status badge:

  • ✅ Runs today. We ran the code with tsci simulate, and the numbers on the page come from that run.
  • 🟡 Not run yet. The code uses elements tscircuit already has, but nobody has run this exact example yet. Expect to adjust it.
  • 🚧 Not supported yet. This is the setup we're aiming for. The page says what's missing today.

How every lesson is laid out​

  1. Goal: one sentence.
  2. Build: one *.circuit.tsx file.
  3. Run: bunx tsci simulate <file>.
  4. What you see: the real output.
  5. Check by hand: the paper calculation it should match.
  6. Try this: one change to make on your own.

Example files​

Every runnable lesson has a file in tutorial/course of the AM3352 repo. That folder also has the synthetic teaching IBIS model used in Part 2. Clone the repo and run them from its root.

Before you start​

bun install -g tscircuit     # or use bunx tsci in a project
brew install ngspice # Part 1 onwards
# Part 2 onwards (pcb_spice): fasthenry and FasterCap on your PATH

Reading tsci simulate output​

The ngspice engine prints a table. Columns are node voltages (v(n1), v(n2), …) and source currents, not your probe names. In a small circuit, find your node by its value. Lesson 1 shows how.