chipflow.packaging.standard

Standard package definitions for common package types.

This module provides concrete package definitions for: - Quad packages (QFN, LQFP, TQFP, etc.) - Bare die packages

Classes

BareDiePackageDef

Definition of a package with pins on four sides.

BlockPackageDef

Definition of a hard-macro target with pins on four sides.

QuadPackageDef

Definition of a quad flat package.

Module Contents

class chipflow.packaging.standard.BareDiePackageDef

Bases: chipflow.packaging.base.LinearAllocPackageDef

Definition of a package with pins on four sides.

Sides are labeled north, south, east, west with an integer identifier within each side, indicating pads across or down from top-left corner.

This is typically used for direct die attach without traditional packaging.

Attributes:
  • width – Number of die pads on top and bottom sides

  • height – Number of die pads on left and right sides

model_post_init(__context)

Initialize pin ordering

property bringup_pins: chipflow.packaging.pins.BringupPins

Bringup pins for bare die package

Return type:

chipflow.packaging.pins.BringupPins

class chipflow.packaging.standard.BlockPackageDef

Bases: chipflow.packaging.base.LinearAllocPackageDef

Definition of a hard-macro target with pins on four sides.

Structurally a sibling of BareDiePackageDef — pins are addressed by (_Side, index) tuples — but used when the build is producing a block (LEF / Liberty / GDS for embedding into another design) rather than a packaged chip. Differences:

  • No I/O pad ring, no JTAG, no fixed clock/reset/power locations: blocks take power via straps from the parent and route their clocks/resets through regular pins. Bringup-pin allocation is skipped.

  • width and height are pin-slot counts, same units as QuadPackageDef.width / .height — not microns. Translation to physical dimensions happens at the backend using the process’s pin pitch.

Attributes:
  • width – Number of pin slots on top and bottom edges.

  • height – Number of pin slots on left and right edges.

model_post_init(__context)

Initialize pin ordering. No bringup pins to subtract.

property bringup_pins: chipflow.packaging.pins.BringupPins
Abstractmethod:

Return type:

chipflow.packaging.pins.BringupPins

Blocks have no chip-style bringup pins.

The base bringup_pins property is abstract and must return a BringupPins instance, but allocate_pins() below is overridden to skip the bringup step entirely so this value is never read. We raise here to make any accidental future caller fail loudly rather than silently allocating wrong locations.

allocate_pins(config, process, lockfile)

Allocate pins without the chip-package bringup step.

Blocks don’t have an I/O ring, so the parent class’s _allocate_bringup (which reserves clock/reset/power/JTAG slots at fixed positions) doesn’t apply. Just allocate registered components linearly from the perimeter slots.

Parameters:
Return type:

chipflow.packaging.lockfile.LockFile

class chipflow.packaging.standard.QuadPackageDef

Bases: chipflow.packaging.base.LinearAllocPackageDef

Definition of a quad flat package.

A package with ‘width’ pins on the top and bottom and ‘height’ pins on the left and right. Pins are numbered anti-clockwise from the top left pin.

This includes many common package types:

  • QFN: quad flat no-leads (bottom pad = substrate)

  • BQFP: bumpered quad flat package

  • BQFPH: bumpered quad flat package with heat spreader

  • CQFP: ceramic quad flat package

  • EQFP: plastic enhanced quad flat package

  • FQFP: fine pitch quad flat package

  • LQFP: low profile quad flat package

  • MQFP: metric quad flat package

  • NQFP: near chip-scale quad flat package

  • SQFP: small quad flat package

  • TQFP: thin quad flat package

  • VQFP: very small quad flat package

  • VTQFP: very thin quad flat package

  • TDFN: thin dual flat no-lead package

  • CERQUAD: low-cost CQFP

Attributes:
  • width – The number of pins across on the top and bottom edges

  • height – The number of pins high on the left and right edges

model_post_init(__context)

Initialize pin ordering

property bringup_pins: chipflow.packaging.pins.BringupPins

Bringup pins for quad package

Return type:

chipflow.packaging.pins.BringupPins