matlab-model-serdes-systems
Model, simulate, and optimize Serializer/Deserializer (SerDes) systems — serial and parallel links — using MATLAB SerDes Toolbox.
Install / Use
npx skills add matlab/matlab-agentic-toolkit --skill matlab-model-serdes-systemsInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of matlab-model-serdes-systems
matlab-model-serdes-systems scores 86/100 on our quality scale, 2058th of 4,646 Development & Engineering skills we index (top 45%).
Its SKILL.md is 16 KB long, well organised into 23 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 1,098 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 18 days ago, so matlab-model-serdes-systems is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
matlab-model-serdes-systems compared with similar skills
All 4 of these similar skills score higher than matlab-model-serdes-systems; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| matlab-model-serdes-systems (this skill)by matlab | 86 | 1.1k | 18d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 44.9k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 3d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install matlab-model-serdes-systems?
- Run
npx skills add matlab/matlab-agentic-toolkit --skill matlab-model-serdes-systems. The install tabs above show the steps for each supported agent. - Which AI agents does matlab-model-serdes-systems work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is matlab-model-serdes-systems safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is matlab-model-serdes-systems still maintained?
- The repository was last updated 18 days ago, so matlab-model-serdes-systems is actively maintained.
Skill content
View source on GitHubname: matlab-model-serdes-systems description: > Model, simulate, and optimize Serializer/Deserializer (SerDes) systems — serial and parallel links — using MATLAB SerDes Toolbox. Design NRZ and PAM-N links (PAM3 through PAM16) — explore equalization architectures (FFE, CTLE, DFE), sweep or optimize parameters with genetic algorithms, and characterize channels from loss models, S-parameter files, or crosstalk scenarios. Process captured waveforms through equalization chains, build eye diagrams, and decompose jitter. Deliver IBIS-AMI models for Tx, Rx, Redriver, or Retimer by exporting to Simulink and compiling .ami/.ibs/.dll/.so files. Covers the full arc from initial design exploration and parameter optimization to compliance testing and compiled model validation, including custom datapath blocks for nonstandard equalization. license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.0"
Modeling and Simulating SerDes Systems
Design, analyze, and deliver high-speed serial link models using SerDes Toolbox. From architecture exploration through IBIS-AMI model generation, covers the full workflow for NRZ and PAM-N links (PAM3 through PAM16).
When to Use
System design and architecture exploration
- Designing SerDes links for a target data rate, signaling scheme (NRZ, PAM4, PAM-N), and channel loss
- Evaluating equalization architectures (FFE, CTLE, DFE) and optimizing tap settings
- Sweeping design parameters to find optimal configurations
- Using industry reference designs (PCIe, USB4, DDR5, CEI, UCIe) as starting points
- Characterizing Tx/Rx analog effects (parasitic capacitance, rise time, termination impedance)
- Building custom datapath blocks for nonstandard equalization
Channel modeling and characterization
- Loading S-parameter Touchstone files into SerdesSystem
- Modeling channels with loss profiles, crosstalk (FEXT/NEXT), and aggressors
- Fitting CTLE transfer functions from measured data via
ctlefit
IBIS-AMI model generation
- Building IBIS-AMI models for Tx, Rx, Redriver, or Retimer configurations
- Exporting to Simulink, configuring AMI parameters, and compiling
.ami/.ibs/.dll/.so - Scripting Simulink simulations and parameter sweeps with
sim/parsim
Analysis and validation
- Running statistical and time-domain simulations
- Processing eye diagrams (eye height, eye width, COM, VEC, bathtub curves)
- Decomposing jitter (TJ, RJ, DJ, DDJ, DCD, ISI)
- Validating compiled AMI models against behavioral baselines
- Running compliance checks with eye masks and jitter budgets
When NOT to Use
- RF/microwave circuit design, antenna modeling, or baseband DSP filter design
- General Simulink model scripting unrelated to SerDes
Must-Follow Rules
System Setup
- SymbolTime / SampleInterval must yield an integer SamplesPerSymbol — fractional ratios cause silent errors
TxModel/RxModelareTransmitter/Receiverobjects — not cell arrays. Construct withTransmitter('Blocks', {block1, block2}).Transmitterrequires single-quoted property names —Transmitter("Blocks", ...)throws anismembererror.Receiverand all other classes accept double quotes- Signal conversion functions require column vectors —
impulse2pulse,pulse2stateye, etc. error on row vectors - Include
AnalogModelandJitterAndNoisefor realistic results — bareTransmitter/Receiverwithout analog models produce optimistic COM (1-2 dB higher). Seereference/equalization-tuning.mdfor parameter guidance (rise time, parasitic C, termination R)
Equalization
- Set
WaveTypeexplicitly when using datapath blocks directly in MATLAB — Simulink sets this automatically, but MATLAB defaults to"Sample" - Adapted DFE/CTLE parameters are in
results.outparams— NOT on the block object. Afteranalysis(),sys.RxModel.Blocks{k}.TapWeightsstill holds initial values. In system objects chains, adapted taps are the second output:[y, taps] = dfecdr(x) - DFECDR Mode=0 is passthrough in Sample mode — DFE only applies with Mode≥1. Pre-load adapted taps from
outparamswith Mode=1 for instant convergence, or use Mode=2 with 10xEqualizationGain(9.6e-04) for self-converging chains - Set
Modulationon DFECDR for PAM-N in system objects chains — Simulink inherits it from the model workspace, but MATLAB defaults to 2 (NRZ). Without this, PAM4 DFE adaptation fails silently
Metrics and Waveforms
Metrics.summary.EWis in picoseconds (already scaled) — do NOT multiply by 1e12.EHis in volts. PAM-N returns N-1 values per metric (e.g., PAM4 → 3 eyes, PAM8 → 7 eyes)- Channel impulse from
analysis()is in V/s — when usingfilter()for time-domain convolution, multiply bydt:filter(impulse * dt, 1, wave). Without scaling, amplitudes blow up by ~10^11 pulse2waveoperates on the stimulus provided — the output modulation depends on the input pattern (NRZ or PAM-N)
AMI and Simulink
- Init-Only models cannot adapt — if DFE taps or CDR converge at runtime, you need a Dual model (both Init and GetWave)
- AMI validation requires Signal Integrity Toolbox —
serdes.AMIrunner and the AMI Simulink block need both SerDes Toolbox and Signal Integrity Toolbox - AMI GetWave: call in a chunked loop —
serdes.AMIpassesBlockSize(default 1024) toAMI_GetWave, so onlyBlockSizesamples are processed per call. You must call the object in aforloop withBlockSize-length chunks. State is preserved between calls via the DLL memory handle - AMI GetWave: set
SkipFirstBlock = falsewhen calling from MATLAB — the default (true) is for Simulink's internal signal buffering and causes the first block to pass through unprocessed - AMI Init:
RowSizemust match impulse length —serdes.AMIcrashes MATLAB (process termination, no error) ifRowSizedoesn't matchnumel(impulse) - AMI generation requires Simulink model — use
IbisAmiManagerGUI orserdes.AMIExportwithexport()programmatically (see Programmatic AMI Generation)
Workflow
Design Exploration
Most projects start here. The goal is to find the right equalization architecture and settings for your channel.
- Design — Create a
SerdesSystemwith Tx/Rx blocks and channel (loss model or S-parameters) - Analyze — Run
analysisfor statistical results,plotStatEyefor eye diagrams,analysisReportfor metrics - Sweep — Vary channel loss, FFE taps, CTLE gain, DFE taps, or jitter to map the design space
- Compare — Evaluate architectures (FFE-only vs FFE+CTLE vs FFE+CTLE+DFE) using COM, eye height, eye width
- Select — Choose the configuration that meets margin targets, then freeze equalization settings
Use SerdesSystem for programmatic exploration; serdesDesigner for interactive GUI work.
Waveform Processing
When you have a captured or imported waveform (e.g., from an oscilloscope or simulation) and want to equalize and analyze it directly:
- Load — Import the waveform and define timing (
SampleInterval,SymbolTime) - Equalize — Stream through datapath blocks (FFE, CTLE, DFECDR) with
WaveType = "Sample" - Analyze — Build an eye diagram with
eyeDiagramSI, extract metrics (eye height, COM, VEC) - Decompose jitter — Run
jitter()on the equalized waveform for TJ, RJ, DJ, DDJ, ISI breakdown
DFECDR and DFE require a sample-by-sample for loop in Sample mode; FFE and CTLE accept full vectors. See reference/waveform-processing.md for the Direct Equalization pattern.
IBIS-AMI Model Delivery
When you need compiled models (.ami/.ibs/.dll/.so) for EDA tools or IP delivery:
- Export — Call
exportToSimulink(sys)to generate a Simulink model from the frozen design - Configure — Set AMI parameters, IBIS component/pin data, and model type via
IbisAmiManagerorserdes.AMIExport - Generate — Build
.ami/.ibsand compile.dll/.soviaserdes.AMIExportwithexport() - Validate — Load compiled DLL/SO with
serdes.AMI, compare against behavioral reference (Init for impulse, GetWave for waveform) - Cross-check — The Simulink path (
simwith Rx WaveOut) is the preferred time-domain reference. Compare against: statisticalanalysis(), system objects direct chain, and compiled AMI DLLs. Seereference/simulink-serdes-simulation.md - Iterate — Fix discrepancies, re-export, re-validate until all paths agree
AMI Model Types
Choose the model type based on which equalization blocks need to adapt at runtime:
| Type | Init_Returns_Impulse | GetWave_Exists | Use For | |------|---------------------|----------------|---------| | Init-Only | true | false | LTI equalization (fixed FFE, CTLE). Supports statistical analysis | | GetWave-Only | false | true | Time-domain only. No statistical analysis | | Dual | true | true | Adaptive equalization (DFE, CDR). All analysis types |
Every IBIS-AMI model implements AMI_Init (required), AMI_GetWave (optional), and AMI_Close (required) per the IBIS standard.
Key Classes
| Class | Purpose |
|-------|---------|
| SerdesSystem | Top-level system. Methods: analysis, plotStatEye, plotImpulse, plotPulse, plotAlignedPulse, plotWavePattern, analysisReport, exportToSimulink |
| Transmitter | Tx container. Construct: Transmitter('Blocks', {serdes.FFE(...)}) |
| Receiver | Rx container. Construct: Receiver('Blocks', {serdes.CTLE(...), serdes.DFECDR(...)}) |
| ChannelData | Channel spec. Props: ChannelLossdB, ChannelLossFreq (default 5 GHz — must override to Nyquist), ChannelDifferentialImpedance, or Impulse/dt |
| JitterAndNoise | IBIS 7.0 jitter/noise. 4 groups: Tx jitter (Rj/Dj/DCD/Sj), Rx jitter, Rx clock recovery (5 params, active with RxClockMode='clocked', 'convolved', or 'normal'), Rx noise. Values in seconds (default) or UI. See reference/serdes-api-reference.md |
| serdes.AMI | Run compiled AMI DLLs/SOs. Call: [waveOut, impulseOut] = ami(waveIn, impulseIn, clockIn) |
| serdes.AMIExport | Programmatic AMI export (R2026a+). Methods: export, getExportSettings. Props: ModelTypeTx, DLLFiles, LinuxCrossCompile |
| SParameterChannel | S-parameter to impulse response. Handles .s4p through .s16p (multi-port returns Nx(K) matrix: col 1=thru, cols 2+=aggressors). Props: FileName, SampleInterval, StopTime, PortOrder |
| eyeDiagramSI | Waveform eye diagram (R2024a+). Step: eyeObj(wave) — no output. Metrics: eyeHeight, eyeWidth, com, vec, margin |
| ctlefit | CTLE pole/zero fitter. Import: ctlefit.readcsv. Output: GPZ matrix for serdes.CTLE("Specification", "GPZ Matrix") |
Datapath Blocks
| Block | Role | Mode Values | Key Properties |
|-------|------|-------------|----------------|
| serdes.FFE | Feed-forward equalizer | 0, 1 | TapWeights, TapSpacing, Normalize |
| serdes.CTLE | Continuous-time linear EQ | 0, 1, 2 | Specification, DCGain, ACGain, PeakingGain, GPZ |
| serdes.DFECDR | DFE + clock recovery | 0, 1, 2 | TapWeights, CDRMode, PhaseDetector, Count |
| serdes.DFE | Standalone DFE | 0, 1, 2 | TapWeights, EqualizationGain, EqualizationStep |
| serdes.CDR | Standalone CDR | 0, 1 | CDRMode, Count, Step, Sensitivity. Mode is deprecated |
| serdes.AGC | Auto gain control | 0, 1 | TargetRMSVoltage, MaxGain, AveragingLength |
| serdes.VGA | Variable gain amplifier | 0, 1 | Gain |
| serdes.SaturatingAmplifier | Limiting amplifier | 0, 1 | Limit, LinearGain, Specification |
| serdes.PassThrough | No-op placeholder | — | — |
Mode values: 0 = Fixed (not exported), 1 = Fixed (exported as AMI parameter), 2 = Adaptive (GetWave). Only CTLE, DFECDR, and DFE support Mode=2.
Set CTLE Specification before setting gain properties — using ACGain with the default spec triggers a warn
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
44.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
