pdkmaster.design¶
pdkmaster.design.circuit¶
-
class
pdkmaster.design.circuit.
CircuitFactory
(*, tech: pdkmaster.technology.technology_.Technology)[source]¶ Bases:
object
The user facing class for creating circuits. This class is also a base class on which own factory classes can be built with specific extensions.
- Parameters:
tech – the technology for which to create circuits. Created circuits may only contain instances from primitives from this technology.
API Notes
- The contract for making subclasses has not been finaziled. Backwards
incompatible changes are still expected for subclasses of this class.
pdkmaster.design.layout¶
The pdkmaster.design.layout module provides classes to represent layout shapes in a PDKMaster technology. These classes are designed to only allow to create layout that conform to the technology definition. In order to detect design shorts as fast as possible shapes are put on nets.
A LayoutFactory class is provided to generate layouts for a certain technology and it’s primitives.
Internally the klayout API is used to represent the shapes and perform manipulations on them.
-
class
pdkmaster.design.layout.
MaskShapesSubLayout
(*, net: Optional[pdkmaster.technology.net.Net], shapes: pdkmaster.technology.geometry.MaskShapes)[source]¶ Bases:
pdkmaster.design.layout._SubLayout
Object representing the sublayout of a net consisting of geometry._Shape objects.
- Parameters:
net – The net of the SubLayout None value represents no net for the shapes.
shapes – The maskshapes on the net.
-
property
net
¶
-
property
shapes
¶
-
property
polygons
¶
-
move
(*, dxy: pdkmaster.technology.geometry.Point, move_context: Optional[pdkmaster.technology.geometry.MoveContext] = None) → None[source]¶
-
moved
(*, dxy: pdkmaster.technology.geometry.Point, move_context: Optional[pdkmaster.technology.geometry.MoveContext] = None) → pdkmaster.design.layout.MaskShapesSubLayout[source]¶
-
rotate
(*, rotation: pdkmaster.technology.geometry.Rotation, rot_context: Optional[pdkmaster.technology.geometry.RotationContext] = None) → None[source]¶
-
class
pdkmaster.design.layout.
SubLayouts
(iterable: Union[T, Iterable[T]] = ())[source]¶ Bases:
pdkmaster._util.TypedList
Internal _Layout support class
-
class
pdkmaster.design.layout.
LayoutFactory
(*, tech: pdkmaster.technology.technology_.Technology)[source]¶ Bases:
object
The user facing class for creating layouts. This class is also a base class on which own factory classes can be built with specific extensions.
- Parameters:
tech – the technology for which to create circuits. Created layout may only contain shapes on masks defined by the technology.
API Notes
- The contract for making subclasses has not been finaziled. Backwards
incompatible changes are still expected for subclasses of this class.
-
new_layout
(*, sublayouts: Union[pdkmaster.design.layout._SubLayout, pdkmaster.design.layout.SubLayouts, None] = None, boundary: Optional[pdkmaster.technology.geometry._Rectangular] = None)[source]¶ Create a new layout.
- Parameters:
sublayouts – optional list of sublayouts to add to this new layout
boundary – optional boundary of the new layout
-
layout_primitive
(prim: pdkmaster.technology.primitive._Primitive, **prim_params) → pdkmaster.design.layout._Layout[source]¶ Create the layout of a _Primitive object.
This will generate a default layout for a given primitive with the provided paramters. This is a default layout
- Parameters:
prim – the primitive to create a layout for
prim_params – the parameters for the primitive
API Notes
- User code can’t depend on the exact layout generated for a certain
primitive. Future improvements to the layout generation code may change the resulting layout.
-
new_circuitlayouter
(*, circuit: pdkmaster.design.circuit._Circuit, boundary: Optional[pdkmaster.technology.geometry._Rectangular]) → pdkmaster.design.layout._CircuitLayouter[source]¶ Helper class to generate layout corresponding to a given _Circuit. The returned layouter will start with an empty layout with optionally a provided boundary. The layouter API can then be used to build up the layout for the circuit.
- Parameters:
circuit – the circuit for which to create a layouter
boundary – optional boundary of the created layout
API Notes
The API of the returned layouter is not fixed yet and backwards incompatible changes are still expected.
pdkmaster.design.library¶
-
class
pdkmaster.design.library.
RoutingGauge
(*, tech: pdkmaster.technology.technology_.Technology, bottom: pdkmaster.technology.primitive.MetalWire, bottom_direction: str, top: pdkmaster.technology.primitive.MetalWire, pitches: Dict[pdkmaster.technology.primitive.MetalWire, Union[int, float]] = {}, offsets: Dict[pdkmaster.technology.primitive.MetalWire, Union[int, float]] = {})[source]¶ Bases:
object
API Notes
- API for RoutingGause is not fixed. Backwards incompatible changes may still be
expected.
- see: https://gitlab.com/Chips4Makers/PDKMaster/-/issues/36
code likely to be moved to c4m-flexcell in the future
-
directions
= frozenset({'horizontal', 'vertical'})¶
-
class
pdkmaster.design.library.
Library
(*, name: str, tech: pdkmaster.technology.technology_.Technology, cktfab: Optional[ckt.CircuitFactory] = None, layoutfab: Optional[lay.LayoutFactory] = None, global_nets: Union[T, Iterable[T], None] = None)[source]¶ Bases:
object
API Notes
- API with global_nets not None is not fully clear yet. Libraries with
global_nets not None may get backwards incompatible changes in the future.
-
new_cell
(*, name: str) → pdkmaster.design.library._Cell[pdkmaster.design.library.Library][pdkmaster.design.library.Library][source]¶
-
property
sorted_cells
¶
-
class
pdkmaster.design.library.
StdCellLibrary
(*, name: str, tech: pdkmaster.technology.technology_.Technology, cktfab: Optional[ckt.CircuitFactory] = None, layoutfab: Optional[lay.LayoutFactory] = None, global_nets: Union[T, Iterable[T], None] = None, routinggauge: Union[T, Iterable[T]], pingrid_pitch: Union[int, float], row_height: Union[int, float])[source]¶ Bases:
pdkmaster.design.library.Library
API Notes
- API for StdCellLibrary is not fixed. Backwards incompatible changes may still be
expected.
- see: https://gitlab.com/Chips4Makers/PDKMaster/-/issues/36
code likely to be moved to c4m-flexcell in the future
-
property
sorted_cells
¶