UCIe PHY Modeling with XMODEL
UCIe PHY Modeling with XMODEL
Chiplets
• A new way of building IC systems is to package
multiple dies from different sources, fabs, tech, …
• Intel mobile P packaged with AMD GPU and HBM
• To facilitate integration, each die must have standardized
interfaces – called "chiplet"
Source: [Link]
3
UCIe Overview
• UCIe has multiple layers: PHY, D2D, Protocol, …
• Physical layer (PHY) defines the specs for electrical signaling
(mainband/sideband), clocking, link training, etc.
• Supporting two package types: standard & advanced
LOGICAL LAYER
ELECTRICAL LAYER
VREF
/N DESKEW
PI TX Phase
PLL DLL + RX
TX Gen
DCC
SPEED PHASE
7
Today's Webinar
• Using UCIe PHY as an example, we will show that
XMODEL is the best way to model and simulate
complex analog+digital systems in SystemVerilog
• Outlines:
• Brief introduction to XMODEL
• UCIe electrical layer modeling and simulation
• Mainband (MB) and sideband (SB) transceivers
• Analog simulations measure DC/AC transfer functions, BER, …
• UCIe logical layer modeling and simulation
• FSMs calibrating Vref, phase, skew, and link speed
• Digital verification with coverage checks
9
Disclaimer
• We don't represent UCIe and claim ourselves to be
experts in UCIe; our understandings of the UCIe
specifications may not be accurate or fully up-to-date
• Also, our UCIe PHY models are provided "AS-IS",
without any warranties for completeness, correctness,
or merchantability
10
Event Markers
12
SPICE XMODEL
1-e-ωt -0.5+1.4e-ωt
t1 t2
Accuracy relies on fine time step Events occur only when the
coefficients are updated
13
ωp
1 p 1 1
−
s p + s s p +s
14
endmodule
15
XMODEL Primitives
Simulate
with XMODEL
18
Getting Started
• XMODEL Release 2025.02 or later is required
• Decompress the package file:
$ tar zxvf UCIe_model_20250215.[Link]
$ cd UCIe_model
Source: Universal Chiplet Interconnect Express (UCIe) Specification Revision 1.0, February 2022.
20
Source: Universal Chiplet Interconnect Express (UCIe) Specification Revision 1.0, February 2022.
21
TX Clock Generation
• Generates a set of clocks for data, valid & clock drivers
• Phase-Locked Loop: generates adjustable frequency clock
• Duty-Cycle Corrector: maintains 50% duty-cycle of the clock
• Delay-Locked Loop: generates multiple clock phases
PI To Data
Drivers
8 PI To Valid
clk_ref PLL DCC DLL Drivers
N PI To Clock
Drivers
Phase Interpolators
22
CKIN
PFD VCO CKOUT
÷N
Verilog Models
24
UCIe.PLL_vco:schematic
26
Top-level module
Generate netlists
View netlists
Run simulation
Plot waveforms
31
frequency
phase
Locked!
lock
33
Testbench tb_meas_phasestep
• Measures the PLL's response to an input phase step
• UCIe.PLL_top:tb_meas_phasestep
input phase
output phase
34
Testbench tb_meas_freqstep
• Measures the PLL's response to an input frequency step
• UCIe.PLL_top:tb_meas_freqstep
input frequency
output frequency
35
Testbench tb_meas_jhist
• Measures the output clock noise at steady states and
plots its jitter histogram and phase noise
• UCIe.PLL_top:tb_meas_jhist
Jitter Histogram Phase Noise
36
Testbench tb_meas_jtran
• Measures the PLL's jitter transfer function (JTRAN)
• UCIe.PLL_top:tb_meas_jtran
Jitter Transfer Function with N=8
DC gain at 8
(=18dB)
n at ~20MHz
37
Testbench tb_meas_tfac
• Measures the PLL's JTRAN using probe_ac primitive
• Confirming that n and stay constant with N
• UCIe.PLL_top:tb_meas_tfac
DC gain is
equal to N
N=8
N=4
N=2
n at ~20MHz N=1
38
UCIe.DCC_top:schematic
39
vc
in_slew
out
UCIe.DCC_dutyadj:schematic
Slew Generator
• Generates a signal with a slew rate equal to Icp/Cint
by charging a capacitor (Cint) with a fixed current (Icp)
+0.5Vsw
• Scaling Icp = 5CintVsw fin
Icp/Cint
so that transition time
-0.5Vsw
Tslew = CintVsw/Icp Tslew is kept at 0.2Tp,in
• vlimit primitive limits
the output between
-0.5~0.5Vsw
vlimit
UCIe.DCC_slewgen:schematic
41
Testbench tb_DCC_dutyadj
• Checks the DCA operation with a 16GHz input while
gradually varying vc from -0.5 to 0.5V
clk_gen
clk_to_duty
pwl_gen dump
UCIe.tb_DCC_dutyadj:schematic
42
in_slew
vc
UCIe.DCC_cpfilter:schematic
44
Testbench tb_check_lock
• Checks the locking transients and steady-state duty-
cycle of the output clock with clk_to_duty primitive
• At multiple operating frequencies with --sweep option
UCIe.DCC_top:tb_check_lock UCIe.tb_DCC_top:tb_check_lock
46
vctrl
2GHz Convergence is faster
with higher clock frequency
16GHz
Testbench tb_meas_tfdc
• Measures the DC transfer function between the duty-
cycles of the input and output clocks
• Using probe_dc primitive
UCIe.DCC_top:tb_meas_tfdc UCIe.tb_DCC_top:tb_meas_tfdc
probe_dc
duty_to_clk clk_to_duty
48
Testbench tb_meas_tfac
• Measures the AC transfer function between the duty-
cycles of the input and output clocks
• Using probe_ac primitive
UCIe.DCC_top:tb_meas_tfac UCIe.tb_DCC_top:tb_meas_tfac
probe_ac
duty_to_clk clk_to_duty
50
n ~ in /200
2GHz 8GHz
Loop bandwidth indeed
4GHz 16GHz scales with in!
51
CKIN CKOUT
Multiphase Clocks F[0] F[4] F[1] F[5] F[2] F[6] F[3] F[7]
52
UCIe.DLL_cpfilter:schematic
56
UCIe.DLL_vcdl:schematic
57
vctrl
2GHz
delay
4GHz
8GHz
16GHz
lock Locked!
59
n ~ in /50
2GHz 8GHz
4GHz 16GHz
61
digitally-adjustable phase
• By selecting two from 8
multiphase clocks and
• Interpolating between the two
• A digital encoder controls the
selection & interp. weights
based on ctrl[5:0]
• Find more details from the
XMODEL High-Speed I/O
Interface Tutorial
62
interpolates between
ck_e & ck_o
• Its delay must be greater
than the spacing between
the two input clocks
• To support a frequency
range of 2~16GHz, this
delay is made to scale
with the clock period
Producing delay value Tp,in
63
en
clk
en_sync
decrementing
ctrl[5:0]
incrementing
phase
The output phase keeps
changing without bounds!
65
decrementing
ctrl[5:0]
incrementing
phase
The output phase keeps
changing without bounds!
66
TX Clock Control
• TX clockpath produces clocks for the TX drivers
• Adjustable-phase clocks for TX data and valid drivers
• Fixed-phase clocks for TX clock/track drivers
Synchronizing
Clock Buffers
PI To Data
Drivers
variable
8 PI To Valid
clk_ref PLL DCC DLL Drivers
variable en_sync
N To Clock
PI
Drivers
fixed ctrl_txclk
67
PI To valid
drivers
Variable
Variable
PI To clock
drivers
Synchronizing
Fixed (=63) Clock Buffers
68
PI=0
PI=35
PI=1
PI=36
Clk for
..., 61, 62, 63 0, 1, 2, ...
Data Driver
PI=33
PI=62
PI=63
PI=34
69
UCIe.CLK_clkbuf:schematic
70
clk_txcp
UCIe.TX_clkgen:schematic
71
Testbench tb_check
• Checks the phases of clk_txcp & clk_txdp while varying
the PI code from 0 to 63
clk_txcp
ctrl_pi = 0
clk_txdp
ctrl_pi = 8
ctrl_pi = 16
ctrl_pi = 24
ctrl_pi = 32
ctrl_pi = 40
ctrl_pi = 48
ctrl_pi = 56
ctrl_pi = 63
72
Clock Deskewer
• Digitally adjusts the input-to-output delay of a clock
• A 5-bit DCDL modeled with dac and delay_to_clk primitives
UCIe.CLK_deskew:schematic
73
Testbench tb_meas_tfdc
• Measures the Dctrl vs.
delay DC transfer of
the clock deskewer
• Using probe_dc primitive
• UCIe.CLK_deskew:
tb_meas_tfdc
TX Datapath
• TX datapath serializes and drives data thru channels
• With FIFO, serializers, and driver stages
Source: Universal Chiplet Interconnect Express (UCIe) Specification Revision 1.0, February 2022.
75
TX Serializer Stages
• A tree-type serializer that performs 4:1, 8:1 & 16:1
serialization by cascading basic 2:1 serializer stages
• More details in the XMODEL High-Speed I/O Interface Tutorial
UCIe.SER_ser2to1:schematic UCIe.SER_ser4to1:schematic
76
UCIe.SER_ser8to1:schematic UCIe.SER_ser16to1:schematic
77
UCIe.CLK_freqdiv2:schematic
78
Testbench tb_SER_ser16to1
• Checks the functionality of the 16:1 serializer by
measuring the BER of the serialized data stream
Checking the BER of the
serialized data stream
prbs_gen meas_ber
Feeding 16 parallel
PRBS data streams
UCIe.tb_SER_ser16to1:schematic
79
Simulation Results
• Zero BER confirms that the serializer works correctly
80
UCIe.tb_SER_ser2to1_fir:schematic
81
in0 D0 D2 D4
in1 D1 D3 D5
clk
out · · D0 D1 D2 D3
82
in0 D0 D2 D4
in1 D1 D3 D5
clk
out · · · D0 D1 D2
83
Testbench tb_SER_ser16to1_fir
• Compares two outputs with sel_post=0 and 1
• out[0] with sel_post = 1 (selecting 1-bit delayed & inverted data)
• out[1] with sel_post = 0 (selecting present data)
• Testbench UCIe.tb_SER_ser16to1_fir:schematic
• Simulation results:
out[0]
out[1]
84
To 16 segmented
TX drivers
D[n] or D[n-1]
D[n] only
UCIe.SER_ser16to1_fir:schematic
85
TX Datapath Model
• Combining the 16:1 serializer with FFE control and the
TX driver stages
UCIe.TX_datapath:schematic
88
Testbench tb_check_clkpat
• Checks the functionality of TX FFE while transmitting
11110000 data pattern
• Sweeping ctrl_ffe[1:0] value from 0 to 3
• Testbench UCIe.TX_datapath:tb_check_clkpat
89
Testbench tb_check_prbs
• Checks the functionality of TX FFE while transmitting
PRBS pattern
• Sweeping ctrl_ffe[1:0] value from 0 to 3
• Testbench UCIe.TX_datapath:tb_check_prbs
90
Testbench tb_check_ber
• Checks if TX datapath can transmit PRBS data correctly
• Testbench UCIe.TX_datapath:tb_check_ber
91
valid valid
Delaying Clock Bits
clock clock
94
reset
95
r_ptr
r_ptr+1
shift
15 3
r_ptr 000
2 0 15 3
r_ptr+1
96
valid 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
5 shifts
clock 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
shift_valid = -5 [15:0]
valid 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0
clock 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0
-5 shifts
97
Channel Model
• A transmission line channel with frequency-dependent
characteristics extracted from an S-parameter file
• Using sparam_to_tf or sparam_to_tline utilities
• Find details from XMODEL High-Speed I/O Interface Tutorial
[Link]:schematic
100
Testbench tb_check_output
• Checks TX functionality transmitting PRBS pattern
• Testbench UCIe.MB_tx_x1:tb_check_output
101
Clock
Data
Testbench tb_meas_eye
• Measures the eye diagram of channel output signal
• TX FFE improves
the eye opening
• Testbench
UCIe.MB_tx_x1:
tb_meas_eye
103
Receiver (RX)
• RX clockpath recovers clock
and generates quarter-rate
clocks from it
• RX datapath recovers data
and deserializes them
• Note:
• Track signal is used as clock
when the forwarded clocks
are unavailable
Source: Universal Chiplet Interconnect Express (UCIe) Specification Revision 1.0, February 2022.
104
RX Data Path
• Made of quarter-rate sampling front-end with clock
deskewers and 4:16 deserializer
To
FIFO
UCIe.RX_datapath:schematic
105
Retiming
FF's & latches
Generates digitally
adjustable Vref
Rx Reference Generator
• A 4-bit DAC generating Vref ranging 0~0.625Vsw
• 30Ω of TX driver impedance and 50Ω of termination set the
nominal TX voltage swing level at 0.625Vsw
• Vref is calibrated during link training
UCIe.RX_refgen:schematic
107
4:16 Deserializer
• A tree-type deserializer
cascading basic 1:2 stages
• Each stage is a half-rate
receiver with a retimer
UCIe.DES_des1to2:schematic UCIe.DES_des4to16:schematic
108
RX Clock Path
• Generates a set of full-swing, quarter-rate clocks from
the clk or track signals forwarded by TX
UCIe.RX_clkpath:schematic
109
Limiting Amplifiers
• Full-swing clocks are UCIe.RX_diffamp:schematic
recovered from:
• Differential forwarded
clock inputs, or
• Single-ended track
input
UCIe.RX_limitamp:schematic
• A single-ended
limiting amp needs
a reference level
110
UCIe.RX_phasegen:schematic
111
Testbench tb_meas_ber
• Checks RX functionality deserializing PRBS pattern
• Testbench UCIe.MB_rx_x1:tb_meas_ber
114
UCIe.tb_MB_top_x1:schematic
115
Testbench tb_meas_ber
• Checks the correct data transmission between TX & RX
• Testbench UCIe.tb_MB_top_x1:tb_meas_ber
116
Testbench tb_meas_eye
• Measures the eye diagram of the transmitted signal
• Testbench UCIe.tb_MB_top_x1:tb_meas_eye
w/o FFE
enabled
w/ FFE
enabled
117
Testbench tb_meas_bathtub_tm
• Measures BER while varying PI control code over 0~63
• Testbench UCIe.tb_MB_top_x1:tb_meas_bathtub_tm
Testbench tb_meas_bathtub_vm
• Measures BER while varying Vref control code 0~15
• Testbench UCIe.tb_MB_top_x1:tb_meas_bathtub_vm
Source: Universal Chiplet Interconnect Express (UCIe) Specification Revision 1.0, February 2022.
120
UCIe:SB_tx:schematic
121
UCIe.SB_rx:schematic
122
UCIe.UCIE_ELECTRICAL_top
UCIe.SB_top:schematic
UCIe.MB_top:schematic :schematic
123
Main Band
Module1 Module2
Side Band
UCIe.UCIE_ELECTRICAL_pair:schematic
124
Getting Started
• The models and testbenches for the UCIe logical layer
are located in the sub-directory "logical":
$ tar zxvf UCIe_model_20230629.[Link]
$ cd UCIe_model
$ cd logical
$ source etc/[Link] or etc/[Link]
ctrl
en
rst
UCIE_PHY_top
ctrl vld
data clk
Logical Electrical
layer clock layer data
127
UCIE_LOGICAL_top
rst rst
LFSR LTFSM LFSR dout
din en en
Pattern Pattern vldout
Generator done done Comparator
128
RESET
Enable Enable
MBINIT SPEEDIDLE DATATRAIN Repair Repair
Link
Training
LTFSM MBTRAIN TXSELFCAL VREF CLK
Done
FSM
Done basic
TRAINERROR
129
MB
FSM TX RX FSM
SB
Result
130
MB
FSM RX TX FSM
SB
Request
131
SPEED
INIT VALVREF DATAVREF TXSELFCAL
IDLE
DATATRAIN DATATRAIN
RXDESKEW LINKSPEED
VREF CENTER2
134
PASS
Fail Fail
Control
min bdry0 center bdry1 max Code
PASS
Fail Fail
Control
min bdry0 center bdry1 max Code
136
DATAVREF Waveforms
• Finds the optimal ctrl_vref via two search steps
Optimal ctrl_vref
Exchanges Exchanges
SB messages SB messages
Exchanges Exchanges
SB messages SB messages
Vref voltage
138
DATAVREF Coverages
• All the bins for states and transitions are covered
140
2 UI
Find the center of this opening
141
PASS
min_c max_c
min_c-7 max_c+7
142
DATATRAIN_CENTER Waveforms
• Finds the optimal center via coarse & fine searches
DATATRAIN_CENTER Coverages
• All the bins for states and transitions are covered
145
RXDESKEW FSM
• Calibrates the per-lane skews to further improve the
timing margins
• Can use the same search algorithm with Vref training
• All the lanes can be calibrated individually at the same time
Dout[0]
data[0] lane0
clk[3:0]
ctrl_rxdeskew[5:0]
Dout[1]
data[1] lane1
clk[3:0]
ctrl_rxdeskew[11:6]
146
RXDESKEW Waveforms
• The skews of all the lanes are calibrated simultaneously
Delay for
lane0
Delay for
lane4
Delay for
lane8
Delay for
lane12
147
RXDESKEW Coverages
• All the bins for states and transitions are covered
148
Testbench tb_MBTRAIN
• Checks the operation of MBTRAIN FSM
• Simulation ends when the LTFSM enters the ACTIVE state
after MBTRAIN is finished
• Measures the state & transition coverages of the FSMs
by binding the coverage measuring modules
tb_MBTRAIN.sv:
Cross-Coverage Checks
meas_MBTRAIN.sv:
• To make sure all the states
and transitions are covered
at each data rate
• By defining cross-coverage
between states & data rates
meas_DATATRAIN_CENTER.sv:
150
Coverage Graph
Reached 100%
153
Testbench tb_eyevref
• Plots the eye diagrams before and after Vref training
Before training:
ctrl_vref = 0
vref: ~0mV
After training:
ctrl_vref = 7
vref: 350mV
154
Testbench tb_eyepi
• Plots the eye diagrams before and after PI training
Before training:
ctrl_pi = 0
After training:
ctrl_pi = 41
Testbench tb_lockvref
• Measures the trained Vref value while varying the
deliberate voltage offset applied to the received data
Testbench tb_lockpi
• Measures the trained PI code and UI shift value while
varying the clock-to-data delay offset
157
Testbench tb_bathtub_tm
• Checking the timing margin after the calibration
Timing Margin of
~0.6UIpp
158
Testbench tb_bathtub_vm
• Checking the voltage margin after the calibration
Voltage Margin
of ~225mVpp
159
Summary
• Presented SystemVerilog models of UCIe PHY
• Electrical layer: analog circuits are modeled with XMODEL
• Logical layer: digital FSMs are modeled in Verilog RTL
To Learn More
• To learn more about XMODEL,
visit Scientific Analog's website:
[Link]
Appendices
• Measuring Coverage with Cadence Xcelium
• Measuring Coverage with Synopsys VCS
162
② Click
① Click
165
Group:
SCORE INSTANCES WEIGHT GOAL AT LEAST PER INSTANCE AUTO BIN MAX PRINT MISSING COMMENT NAME
66.67 100.00 1 100 1 1 64 64 tb_txpo
[Link].FSM2.cov_main::cg Coverage of main FSM
-------------------------------------------------------------------------------
VARIABLE EXPECTED UNCOVERED COVERED PERCENT GOAL WEIGHT AT LEAST AUTO BIN MAX COMMENT
cp_common 22 0 22 100.00 100 1 1 0
cp_main 5 0 5 100.00 100 1 1 0
cp_partner 1 1 0 0.00 100 0 1 0
167
Click