Module fnpcell.pdk.pcell_params

Classes

AnchorParam

class AnchorParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.interfaces.Anchor,
                    required: bool = True, default: Optional[Anchor] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None)

Parameter for Anchor.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[Anchor]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Assign where the (0, 0) is.

Usage:

from fnpcell import all as fp
Straight(name="", anchor=fp.Anchor.CENTER, …)

BooleanParam

class BooleanParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = builtins.bool,
                    required: bool = True, default: Optional[bool] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None, f
                    rozen: bool = False, doc: Optional[str] = None)

Parameter for boolean.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[bool]
var doc: Optional[str]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

bool(x) -> bool

Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.

DegreeParam

class DegreeParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                    required: bool = True, default: Optional[float] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None,
                    min: Optional[float] = None, max: Optional[float] = None,
                    invalid: Optional[Container[float]] = None,
                    precision: Optional[float] = None)

Parameter for Angle in Degrees.

See IParam for details.

Ancestors

FloatParam, Param, IParam

Class variables

var default: Optional[float]
var invalid: Optional[Container[float]]
var max: Optional[float]
var min: Optional[float]

DeviceParam

class DeviceParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.interfaces.ICellRef,
                    required: bool = True, default: Optional[ICellRef] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None,
                    factory: Optional[Callable[..., ICellRef]] = None,
                    port_count: Optional[int] = None, pin_count: Optional[int] = None)

Parameter for Device.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[ICellRef]
var factory: Optional[Callable[..., ICellRef]]
var pin_count: Optional[int]
var port_count: Optional[int]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Interface of CellRef.

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

FloatParam

class FloatParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                    required: bool = True, default: Optional[float] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None, min: Optional[float] = None,
                    max: Optional[float] = None, invalid: Optional[Container[float]] = None,
                    precision: Optional[float] = None)

Parameter for Float.

See IParam for details.

Ancestors

Param, IParam

Subclasses

DegreeParam, IntParam, NonNegFloatParam, PositiveFloatParam

Class variables

var default: Optional[float]
var invalid: Optional[Container[float]]
var max: Optional[float]
var min: Optional[float]
var precision: Optional[float]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

IParam

class IParam

Attributes

type:

Optional, parameter value must be instance of type if provided

required:

True, parameter value must not be None, if required is True

default:

Optional, default value if parameter is not provided

default_factory:

str or Callable, defaults to "_default_{name}"

If default_factory is Callable, then it will be called during parameter resolution.

If default_factory is str, then:

    In functional pcell, it will be ignored.

    In dataclass pcell, default_factory will be formated with parameter name, and if a method
    of pcell has that name, it will be called and the return value is used as default value.

If both default and default_factory is provided, then:

    In functional pcell, default_factory is called first, if it returns None, then default is used.

    In dataclass pcell, default is used as initial value, then default_factory is called to get the frozen value.
    If it returns None, then default is used.

preprocessor:

Optional, will be called on user-provided parameter value before default value resolution and validation.

User may provide None as parameter value, and preprocessor should handle that.

If preprocessor returns None, the parameter is treated as not provided by user and will run default value resolution.

doc:

Optional, user provided short document text.

Subclasses

Param, fnpcell.pdk.pcell_params._NonNegMixin, fnpcell.pdk.pcell_params._PositiveMixin

Class variables

var default: Optional[Any]
var default_factory: Union[str, Callable[[], Any]]
var doc: Optional[str]
var frozen: bool
var preprocessor: Optional[Callable[[Any], Any]]
var required: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def as_field(self, repr: bool = True, hash: Optional[bool] = None,
                compare: bool = True) -> Any
def resolve(self, runtime: Any, name: str, value: Optional[Any],
            context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any

IntParam

class IntParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                required: bool = True, default: Optional[int] = None,
                default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                preprocessor: Optional[Callable[[Any], Any]] = None,
                frozen: bool = False, doc: Optional[str] = None, min: Optional[int] = None,
                max: Optional[int] = None, invalid: Optional[Container[int]] = None,
                precision: Optional[float] = None)

Parameter for Integer.

See IParam for details.

Ancestors

FloatParam, Param, IParam

Subclasses

NonNegIntParam, PositiveIntParam

Class variables

var default: Optional[int]
var invalid: Optional[Container[int]]
var max: Optional[int]
var min: Optional[int]

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any],

context: Optional[Any]) -> Any

LayerParam

class LayerParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.interfaces.ILayer,
                    required: bool = True, default: Optional[ILayer] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None)

Parameter for Layer.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[ILayer]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Interface of Layer.

ListParam

class ListParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Iterable,
                required: bool = True, default: Optional[Iterable[Any]] = None,
                default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                preprocessor: Optional[Callable[[Any], Any]] = None,
                frozen: bool = False, doc: Optional[str] = None,
                element_type: Optional[Type[Any]] = None, immutable: bool = False)

Parameter for List.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[Iterable[Any]]
var element_type: Optional[Type[Any]]
var immutable: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any],
            context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any

MappingParam

class MappingParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Mapping,
                    required: bool = True, default: Optional[Dict[Any, Any]] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                    doc: Optional[str] = None, K: Optional[Type[Any]] = None,
                    V: Optional[Type[Any]] = None, immutable: bool = False)

Parameter for Mapping.

See IParam for details.

Ancestors

Param, IParam

Class variables

var K: Optional[Type[Any]]
var V: Optional[Type[Any]]
var default: Optional[Dict[Any, Any]]
var immutable: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

MetalLineTypeParam

class MetalLineTypeParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.interfaces.IMetalLineType,
                            required: bool = True, default: Optional[Any] = None,
                            default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                            preprocessor: Optional[Callable[[Any], Any]] = None,
                            frozen: bool = False, doc: Optional[str] = None,
                            band: Union[IBand, Container[IBand], None] = None)

Parameter for MetalLineType.

See IParam for details.

Ancestors

Param, IParam

Class variables

var band: Union[IBand, Container[IBand], None]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

NameListParam

class NameListParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Iterable,
                    required: bool = True, default: Optional[Sequence[str]] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None, min_count: int = 0,
                    max_count: int = 9223372036854775807, count: Optional[int] = None)

Parameter for Name List, eg. [“op_0”, “op_1”, “op_2”, “op_3”].

See IParam for details.

Ancestors

Param, IParam

Class variables

var count: Optional[int]
var default: Optional[Sequence[str]]
var max_count: int
var min_count: int
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any],
            context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any

NameParam

class NameParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = builtins.str,
                required: bool = False, default: Optional[str] = None,
                default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                preprocessor: Optional[Callable[[Any], Any]] = None,
                frozen: bool = False, doc: Optional[str] = None, prefix: Optional[str] = None)

Parameter for PCell Name.

See IParam for details.

Ancestors

TextParam, Param, IParam

Class variables

var default: Optional[str]
var prefix: Optional[str]
var required: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Inherited from: TextParam.type

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str …

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

NonNegFloatParam

class NonNegFloatParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                        required: bool = True, default: Optional[float] = None,
                        default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                        preprocessor: Optional[Callable[[Any], Any]] = None,
                        frozen: bool = False, doc: Optional[str] = None, min: float = 0,
                        max: Optional[float] = None, invalid: Optional[Container[float]] = None,
                        precision: Optional[float] = None)

Parameter for non negative Float.

See IParam for details.

Ancestors

FloatParam, Param, fnpcell.pdk.pcell_params._NonNegMixin IParam

Class variables

var default: Optional[float]
var invalid: Optional[Container[float]]
var max: Optional[float]
var min: float

NonNegIntParam

class NonNegIntParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                        required: bool = True, default: Optional[int] = None,
                        default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                        preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                        doc: Optional[str] = None, min: int = 0, max: Optional[int] = None,
                        invalid: Optional[Container[int]] = None, precision: Optional[float] = None)

Parameter for non negative Float.

See IParam for details.

Ancestors

IntParam, FloatParam, Param, fnpcell.pdk.pcell_params._NonNegMixin, IParam

Class variables

var default: Optional[int]
var invalid: Optional[Container[int]]
var max: Optional[int]
var min: int

Param

class Param(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = None,
            required: bool = True, default: Optional[Any] = None,
            default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
            preprocessor: Optional[Callable[[Any], Any]] = None,
            frozen: bool = False, doc: Optional[str] = None)

General parameter definition.

If there’s no proper XXXParam, then use Param.

See IParam for details.

Ancestors

IParam

Subclasses

AnchorParam, BooleanParam, DeviceParam, FloatParam, LayerParam, ListParam,
MappingParam, MetalLineTypeParam, NameListParam, PointsParam, PortOptionsParam,
PositionParam, SetParam, TextParam, TransformParam, WaveguideTypeParam

Class variables

var default: Optional[Any]
var default_factory: Union[str, Callable[[], Any]]
var doc: Optional[str]
var frozen: bool
var preprocessor: Optional[Callable[[Any], Any]]
var required: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

PointsParam

class PointsParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Iterable,
                    required: bool = True, default: Optional[Iterable[Tuple[float, float]]] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                    doc: Optional[str] = None, min_count: int = 0)

Parameter for Point.

See IParam for details.

Ancestors

Param. IParam

Class variables

var default: Optional[Iterable[Tuple[float, float]]]
var min_count: int
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

PortOptionsParam

class PortOptionsParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Sequence,
                        required: bool = True, default: Optional[Sequence[Union[None, str, Hidden]]] = None,
                        default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                        preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                        doc: Optional[str] = None, count: Optional[int] = None)

Parameter for PortOptions, eg: ports=(None, “op_1”) None will disable port in the position.

See IParam for details.

Ancestors

Param, IParam

Class variables

var count: Optional[int]
var default: Optional[Sequence[Union[None, str, Hidden]]]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any

PositionParam

class PositionParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Tuple,
                    required: bool = True, default: Optional[Tuple[float, float]] = None,
                    default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                    preprocessor: Optional[Callable[[Any], Any]] = None,
                    frozen: bool = False, doc: Optional[str] = None)

Parameter for Position.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[Tuple[float, float]]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

PositiveFloatParam

class PositiveFloatParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                            required: bool = True, default: Optional[float] = None,
                            default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                            preprocessor: Optional[Callable[[Any], Any]] = None,
                            frozen: bool = False, doc: Optional[str] = None, min: Optional[float] = None,
                            max: Optional[float] = None, invalid: Optional[Container[float]] = None,
                            precision: Optional[float] = None)

Parameter for Positive Float.

See IParam for details.

Ancestors

FloatParam, Param, fnpcell.pdk.pcell_params._PositiveMixin, IParam

Class variables

var default: Optional[float]
var invalid: Optional[Container[float]]
var max: Optional[float]
var min: Optional[float]

PositiveIntParam

class PositiveIntParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = (<class 'float'>, <class 'int'>),
                        required: bool = True, default: Optional[int] = None,
                        default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                        preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                        doc: Optional[str] = None, min: Optional[int] = None, max: Optional[int] = None,
                        invalid: Optional[Container[int]] = None, precision: Optional[float] = None)

Parameter for Positive Float.

See IParam for details.

Ancestors

IntParam, FloatParam, Param, fnpcell.pdk.pcell_params._PositiveMixin, IParam

Class variables

var default: Optional[int]
var invalid: Optional[Container[int]]
var max: Optional[int]
var min: Optional[int]

SetParam

class SetParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = typing.Iterable,
                required: bool = True, default: Optional[Iterable[Any]] = None,
                default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                doc: Optional[str] = None, element_type: Optional[Type[Any]] = None,
                immutable: bool = False)

Parameter for Set.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[Iterable[Any]]
var element_type: Optional[Type[Any]]
var immutable: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any
def validate(self, runtime: Any, name: str, value: Optional[Any], context: Optional[Any]) -> Any

TextParam

class TextParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = builtins.str,
                required: bool = True, default: Optional[str] = None,
                default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                preprocessor: Optional[Callable[[Any], Any]] = None, frozen: bool = False,
                doc: Optional[str] = None)

Parameter for Text.

See IParam for details.

Ancestors

Param, IParam

Subclasses

NameParam

Class variables

var default: Optional[str]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.

Methods

def validate(self, runtime: Any, name: str, value: Optional[Any],
                context: Optional[Any]) -> Any

TransformParam

class TransformParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.transform.Affine2D,
                        required: bool = False, default: Optional[Affine2D] = None,
                        default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                        preprocessor: Optional[Callable[[Any], Any]] = None,
                        frozen: bool = False, doc: Optional[str] = None)

Parameter for Transformations.

See IParam for details.

Ancestors

Param, IParam

Class variables

var default: Optional[Affine2D]
var required: bool
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Affine2D transformation matrix.

Usage:

from fnpcell import all as fp

t = fp.translate(10, 0)
r = fp.rotate(degrees=30)
transform = t @ r

assert transform == fp.translate(10, 0).rotate(degrees=30)

points = [(0, 0), (1, 0), (1, 1)]
transformed_points = transform(points)  # equals to transform.transform_points(points)

Methods

def resolve(self, runtime: Any, name: str, value: Optional[Any],
            context: Optional[Any]) -> Any

WaveguideTypeParam

class WaveguideTypeParam(type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None] = fnpcell.interfaces.IWaveguideType,
                            required: bool = True, default: Optional[Any] = None,
                            default_factory: Union[str, Callable[[], Any]] = '_default_{name}',
                            preprocessor: Optional[Callable[[Any], Any]] = None,
                            frozen: bool = False, doc: Optional[str] = None,
                            band: Union[IBand, Container[IBand], None] = None)

Parameter for WaveguideType.

See IParam for details.

Ancestors

Param, IParam

Class variables

var band: Union[IBand, Container[IBand], None]
var type: Union[type, Tuple[Union[type, Tuple[type, ...]], ...], None]

Methods

def validate(self, runtime: Any, name: str,
                value: Optional[Any], context: Optional[Any]) -> Any