100 MHz PLL
The public GDS is an abstract; ChipFoundry substitutes protected full geometry at tapeout.
This package ships an SRAM-style PG wrap CF_PLL_100M around analog leaf
CF_PLL_100M_core.
CF_PLL_100M is a SkyWater 130 nm hard-macro PLL that synthesizes a system
clock up to 100 MHz from a lower-frequency reference. Instantiate CF_PLL_100M.
Macro size is 453.405 × 384.06 µm (15 µm halo around analog leaf
423.405 × 354.06 µm). Customer PG for chip PDN is vpwr / vgnd. Analog
supply vpwr_int stays a wrap port and is routed as a signal. N-well nwl
and substrate sub are tied inside the wrap.
pip install cf-ipm
ipm install CF_PLL_100M --version 0.2.1Use hdl/gl/CF_PLL_100M.v as the customer blackbox, layout/lef/CF_PLL_100M.lef
for P&R, and layout/gds/CF_PLL_100M.gds / layout/mag/CF_PLL_100M.mag for the
public wrap. CF_PLL_100M_core is the analog leaf (empty Verilog, pin-only
abstract). ChipFoundry substitutes vault GDS into CF_PLL_100M_core at tapeout.
P&R uses the wrap LEF (vpwr / vgnd for chip PDN).
Functional sim compiles verify/beh_model/CF_PLL_100M_core.v instead of the empty hdl/gl/CF_PLL_100M_core.v stub. See verify/beh_model/README.md.
- Reference input
refand system clock outputpll_out - Feedback divider
p[7:0]and reference dividerq[3:0] - Lock flag
lock_out, divider monitorsp_ctr_out/q_ctr_out - Power-down
pd/pd_vddandreset - Charge-pump select
icpsel[2:0], biasi_in, and VCO gainvco_gain[1:0] - Analog control
VctrlIO, delaydelay[1:0], lock waitlock_wait[1:0], testtest[2:0], trimtrim_b, and buffered setsetb_buf - Analog supply
vpwr_int(wrap signal port) - Ideal Verilog behavioral model under
verify/beh_model/for functional sim - Customer cell
CF_PLL_100M453.405 × 384.06 µm (15 µm halo around analog leaf 423.405 × 354.06 µm) - Chip PDN is
vpwr/vgnd
Customer documentation includes a pinout of the integration cell only. Internal schematics and architecture block diagrams are not published.
Pin names and directions match the public wrap (layout/lef/CF_PLL_100M.lef)
and the blackbox stub (hdl/gl/CF_PLL_100M.v).
Directions and widths are taken from the shipped Verilog in hdl/gl/CF_PLL_100M.v.
| Name | Direction | Width | Description |
|---|---|---|---|
p |
input | 8 | Feedback divider code. |
q |
input | 4 | Reference divider code. |
ref |
input | 1 | Reference clock. |
test |
input | 3 | Test mode. |
reset |
input | 1 | Reset. High holds the clocks and lock low in the ideal model. |
pd |
input | 1 | Power-down. |
pd_vdd |
input | 1 | Supply power-down. |
icpsel |
input | 3 | Charge-pump current select. |
i_in |
input | 1 | Bias current input. |
vco_gain |
input | 2 | VCO gain select. |
VctrlIO |
inout | 1 | Analog VCO control. Route as a signal; not on chip PDN. |
delay |
input | 2 | Lock-delay select. |
lock_wait |
input | 2 | Lock-wait select. |
vpwr |
input | 1 | Digital supply. |
vpwr_int |
input | 1 | Internal analog supply. Route as a signal; not on chip PDN. |
vgnd |
input | 1 | Ground. |
lock_out |
output | 1 | Lock flag. |
setb_buf |
output | 1 | Buffered set. |
pll_out |
output | 1 | Synthesized clock. |
p_ctr_out |
output | 1 | Feedback-divider monitor. |
q_ctr_out |
output | 1 | Reference-divider monitor. |
trim_b |
input | 1 | Trim. |
CF_PLL_100M_core also has n-well nwl and substrate sub. The wrap ties
.nwl(vpwr) and .sub(vgnd). Do not connect those pins at chip level.
In OpenLane / LibreLane, hook chip PDN with
PDN_MACRO_CONNECTIONS: "u_cf_pll_100m vccd1 vssd1 vpwr vgnd" and connect
.vpwr(vccd1), .vgnd(vssd1) under USE_POWER_PINS. Route vpwr_int and
VctrlIO onto analog_io.
This PLL is intended to synthesize a system clock up to 100 MHz from a lower-frequency reference. No Liberty timing file ships with this package. This README does not invent PVT tables.
The ideal model in verify/beh_model/ is the functional timing reference for
simulation. pd, pd_vdd, or reset high clears pll_out and lock_out.
With those pins low, lock_out rises after eight ref edges, and pll_out
toggles at the reference frequency times p / q. That model is not
silicon-verified.
- Verilog in
hdl/gl/CF_PLL_100M.vis a structural wrap around an emptyCF_PLL_100M_coreblackbox. Functional sim usesverify/beh_model/CF_PLL_100M_core.v(ideal model, not SPICE). - Liberty is not in this package. P&R uses the wrap LEF.
- Charge-pump, VCO gain, delay, test, trim, and
VctrlIOare not modeled.
| Version | Date | Notes |
|---|---|---|
| 0.2.0 | 2026-09-26 | First SRAM-style PG-wrapped package. Ideal behavioral model. Core fill-exclude covers. |
| 0.2.1 | 2026-11-07 | Leaf GDS carries wafflefill so pre-merge density passes, and adds the met3 waffleDrop cover. WaffleDrop still keeps chip fill out of the block. |
This hard macro has high-volume commercial production history (millions of units). Catalog and IPM maturity is Production. ChipFoundry substitutes protected full layout at tapeout. The chipIgnite delivery of this package is not marked shuttle-proven until a run returns.