● UCI · High-frequency Integrated Electronics Lab
You give it a PLL specification. It gives back a sized netlist.
High-frequency Integrated Electronics Lab · EECS · University of California, Irvine
You state what the loop must do. Each block has candidate topologies, each with a trained model and a region it is valid in. The selector picks one, inverse design turns the target into a sizing, and Spectre checks it.
Verified blocks are composed with their uncertainty carried through — error bars on the whole loop, not on the parts. Out comes a sized netlist, run as one transistor-level circuit in Spectre. It locks, and it holds.
Four steps, and the fourth one is the reason the other three are worth doing.
Sizing one cell well is a solved-enough problem. Choosing which topology each block should be, sizing all of them so that the loop they form meets a specification, and knowing how wrong the answer might be once they are attached to each other — that is not.
- 01
You state the specification
What the loop has to do, as numbers inside published ranges: output frequency, phase noise, lock time, power budget, the reference you are locking to. Never a file and never code — nothing you supply is executed anywhere.
- 02
A topology is chosen, then its model is inverted
A block is not one circuit. Each has a library of candidate topologies, and each of those carries its own dataset, its own forward model trained on it, and its own validated region — so the choice between them is made on measured evidence rather than on habit, and outside a model’s validated region the answer is a refusal rather than a guess. Inverse design then runs the chosen topology’s forward model backwards, from the target specification to a sizing.
- 03
Each proposal is checked in Spectre, and the error feeds back
One block, one testbench, against a production foundry PDK. A proposal is not a result until the simulator has measured it, and the gap between what the model predicted and what the simulator measured goes back into the model rather than into a footnote.
- 04
The blocks are composed, and the assembled loop is run
This is the step that makes it a PLL and not a set of exercises. The verified blocks are combined — every boundary between two of them is itself a designed, characterised cell — and each model’s uncertainty is propagated through the composition, so what comes out carries error bars on the whole loop rather than on the parts. The result is a netlist for the whole PLL with every device sized, assembled and run as one transistor-level circuit in Spectre: it locks, and it holds.
The chain, and the seams between its links.
This is the object the method is applied to. Each block is a design problem with its own topologies, its own measurements and its own way of failing — and between every two of them sits another designed cell, which is why the feedback path is four blocks and not one wire.
| Block | Function in the loop |
|---|---|
| Reference | Squares the crystal into the clean edge everything else is timed against. |
| Phase detector | Compares the reference edge against the feedback edge, and says which one is early. |
| Charge pump | Turns that comparison into charge delivered onto the filter. |
| Loop filter | Holds the tuning voltage, and sets the loop bandwidth and the phase margin. |
| Oscillator | Turns that voltage into the output frequency. Everything else exists to steer it. |
| Coupler + buffer | A designed take-off: samples the oscillator for the feedback path without loading it. |
| Divider chain | Brings the output down to a rate the rest of the feedback path can work at. |
| Level converter | Carries edges between the supply and logic domains the two halves run in. |
| Feedback divider | Divides the rest of the way to the reference rate, ready to be compared again. |
The loop filter is a passive network, solved on paper and confirmed in simulation; there is nothing in it for a learned model to be wrong about. The rest of the die — bias and decoupling, the scan chain that carries the control bits, the output path and the top-level assembly — is designed and verified in the ordinary way.
A predicted number without a measured band is not a design input.
A digital block is compiled. An analog block is negotiated — sized by hand, checked, resized, until the corner that matters stops failing. Six blocks in one loop is six times that problem, plus the problem of making them agree at the interfaces.
A learned model can carry part of it, but only if its error is stated where the design actually sits. A band pooled over a whole operating range flatters the region the model found easy and libels the region it found hard, so a single figure of merit can be wrong in both directions at once.
So a band here is cut by operating point, and a region with too few points is recorded as unproven rather than allowed to borrow a wider one. Where a band cannot separate two candidates, the model is used to screen and not to select — recorded as such, rather than promoted because a headline accuracy looked good.
And every requirement is re-checked in the simulator before anything is reported. What comes back is a design the simulator has already agreed to, with the residual disagreement stated rather than smoothed over.
What a single run does, in six stages.
The stage names are the worker’s own — the strings it prints while a run is in flight — so the description here and the progress a signed-in visitor watches use the same words.
Specification
spec_inputThe quantities the block is asked to hit, as numbers inside published ranges — never a file, never code.
Inverse design
inverse_designA learned forward model is inverted under constraint to propose device sizing, then its own calibration moves the prediction by the error band measured for that operating bin.
Netlist render
netlist_renderA lab-authored template renders the deck. Parameters are bounds-checked numbers; nothing supplied from outside is interpolated into a simulator input.
Spectre verify
spectre_verifyThe candidate block is simulated on its own testbench against the real foundry PDK, under a CPU and wall-clock ceiling, one job at a time so the department’s licence seats are never contended.
Extract
extractHeads are measured from the simulation, not read back from the model. A head the loop cannot check is reported as unchecked.
Rank
rank_resultCandidates are ranked by measured margin against every gate. What returns to the browser is metrics and plots — nothing else.
Request a demo.
A demo is a real run, not a recording: you state a specification, the model proposes a sizing, and the simulator answers on the lab’s own machine while the six stages go by. Because that machine holds a production PDK under NDA, accounts are issued by the lab rather than by a form — there is no sign-up.
- Step 01
You ask
The request form records who you are and what you want to run. It creates nothing and grants nothing.
- Step 02
The lab clears you with the foundry
The demo runs against a real production PDK under NDA. Clearance is a manual, out-of-band conversation and takes days, not minutes.
- Step 03
The lab issues an account
Only after clearance. Sign-in is an emailed link — there is no password, and there is no way to register yourself.