padrick.Model package

Submodules

padrick.Model.CommonValidators module

padrick.Model.CommonValidators.check_sv_literal(literal: str) str[source]

padrick.Model.Constants module

padrick.Model.PadDomain module

class padrick.Model.PadDomain.PadDomain(*args, name: ConstrainedStrValue, description: Optional[str] = None, pad_types: ConstrainedListValue[PadType], pad_list: ConstrainedListValue[PadInstance], port_groups: List[PortGroup] = [], user_attr: Optional[Dict[str, Union[str, int, bool]]] = None)[source]

Bases: BaseModel

A pad_domain contains the configuration about one collection of pads and ports that can connected with each other.

classmethod check_each_pad_instance_name_is_unique(pads: List[PadInstance])[source]
classmethod check_padsignal_with_same_name_have_same_size_and_direction(values)[source]
classmethod check_port_group_names_are_unique(port_groups: List[PortGroup])[source]
classmethod check_static_connection_signals_are_not_bidirectional(v)[source]
description: Optional[str]
property dynamic_pad_signals: List[Signal]
property dynamic_pad_signals_pad2soc
property dynamic_pad_signals_soc2pad: List[Signal]
classmethod error_on_empty_port_groups_but_existing_dynamic_pads(values)[source]
classmethod error_on_nonempty_port_groups_but_without_any_dynamic_pads(values)[source]
classmethod expand_multi_pads(pads: List[PadInstance])[source]
classmethod expand_multi_port_groups(port_groups: List[PortGroup])[source]
get_dynamic_pad_signals_for_mux_group(mux_group: str) List[Signal][source]
get_dynamic_pad_signals_pad2soc_for_mux_group(mux_group: str)[source]
get_dynamic_pad_signals_soc2pad_for_mux_group(mux_group: str) List[Signal][source]
get_dynamic_pads_in_mux_groups(mux_groups: Set[str]) List[Port][source]
get_ports_in_mux_groups(mux_groups: Set[str]) List[Port][source]
name: ConstrainedStrValue
classmethod normalize_pad_mux_groups(pads: List[PadInstance])[source]
classmethod normalize_port_mux_groups(port_groups: List[PortGroup], values)[source]
classmethod override_port_mux_group(port_groups: List[PortGroup], values)[source]
property override_signals: List[Signal]
pad_list: ConstrainedListValue[PadInstance]
property pad_mux_group_sets: List[Set[str]]
pad_types: ConstrainedListValue[PadType]
port_groups: List[PortGroup]
property port_mux_group_sets: List[Set[str]]
property static_connection_signals: List[Signal]
property static_connection_signals_pad2soc: List[Signal]
property static_connection_signals_soc2pad: List[Signal]
user_attr: Optional[Dict[str, Union[str, int, bool]]]
classmethod warn_about_orphan_pads_and_ports(values)[source]

padrick.Model.PadInstance module

class padrick.Model.PadInstance.PadInstance(*, name: ~padrick.Model.TemplatedIdentifier.TemplatedIdentifierType, description: ~typing.Optional[~padrick.Model.TemplatedString.TemplatedStringType] = None, multiple: ~padrick.Model.PadInstance.ConstrainedIntValue = 1, pad_type: ~typing.Union[~padrick.Model.PadInstance.ConstrainedStrValue, ~padrick.Model.PadType.PadType], is_static: bool = False, mux_groups: ~types.ConstrainedSetValue[~padrick.Model.TemplatedIdentifier.TemplatedIdentifierType] = {all, self}, connections: ~typing.Optional[~typing.Mapping[~typing.Union[~padrick.Model.PadSignal.PadSignal, str], ~typing.Optional[~padrick.Model.SignalExpressionType.SignalExpressionType]]] = None, default_port: ~typing.Optional[~typing.Union[~typing.Mapping[~typing.Union[typing_extensions.Literal[*], ~padrick.Model.TemplatedIdentifier.TemplatedIdentifierType], ~padrick.Model.TemplatedPortIdentifier.TemplatedPortIdentifierType], ~padrick.Model.TemplatedPortIdentifier.TemplatedPortIdentifierType, ~typing.Tuple[~padrick.Model.PortGroup.PortGroup, ~padrick.Model.Port.Port]]] = None, user_attr: ~typing.Optional[~padrick.Model.UserAttrs.UserAttrs] = None)[source]

Bases: BaseModel

class Config[source]

Bases: object

extra = 'forbid'
underscore_attrs_are_private = True
validate_assignment = True
connections: Optional[Mapping[Union[PadSignal, str], Optional[SignalExpressionType]]]
default_port: Port]]]
description: Optional[TemplatedStringType]
property dynamic_pad_signals
property dynamic_pad_signals_pad2soc
property dynamic_pad_signals_soc2pad
expand_padinstance() List[PadInstance][source]
is_static: bool
property landing_pads
classmethod lookup_pad_type(v: Union[PadType, str]) PadType[source]
multiple: ConstrainedIntValue
property mux_group_name
mux_groups: ConstrainedSetValue[TemplatedIdentifierType]
classmethod mux_groups_must_not_contain_uppercase_letters(mux_group: TemplatedIdentifierType)[source]
name: TemplatedIdentifierType
classmethod no_connections_for_pad_signal_of_kind_pad(values)[source]
property override_signals: List[Signal]
pad_type: Union[ConstrainedStrValue, PadType]
property static_connection_signals: List[Signal]

Returns all static connection signals used for the given pad. Returns:

property static_pad_signal_connections
property static_pad_signals
user_attr: Optional[UserAttrs]

padrick.Model.PadSignal module

class padrick.Model.PadSignal.ConnectionType(value)[source]

Bases: str, Enum

An enumeration.

dynamic = 'dynamic'
static = 'static'
class padrick.Model.PadSignal.PadSignal(direction=None, *values, name: ~padrick.Model.TemplatedIdentifier.TemplatedIdentifierType, size: ~padrick.Model.PadSignal.ConstrainedIntValue = 1, description: ~typing.Optional[str] = None, kind: ~padrick.Model.PadSignal.PadSignalKind, conn_type: ~typing.Optional[~padrick.Model.PadSignal.ConnectionType] = None, and_override_signal: ~padrick.Model.SignalExpressionType.SignalExpressionType =, or_override_signal: ~padrick.Model.SignalExpressionType.SignalExpressionType =, default_reset_value: ~typing.Optional[int] = None, default_static_value: ~typing.Optional[~padrick.Model.SignalExpressionType.SignalExpressionType] = None, user_attr: ~typing.Optional[~padrick.Model.UserAttrs.UserAttrs] = None)[source]

Bases: Signal

class Config[source]

Bases: object

extra = 'forbid'
and_override_signal: SignalExpressionType
conn_type: Optional[ConnectionType]
default_reset_value: Optional[int]
default_static_value: Optional[SignalExpressionType]
description: Optional[str]
property direction
kind: PadSignalKind
classmethod must_contain_conn_type_unsless_kind_pad(values)[source]
classmethod must_contain_default_values_if_kind_input(values)[source]
classmethod must_not_contain_default_value_if_landing_pad(values)[source]
or_override_signal: SignalExpressionType
property static_signals
user_attr: Optional[UserAttrs]
classmethod validate_output_pad(values)[source]
class padrick.Model.PadSignal.PadSignalKind(value)[source]

Bases: str, Enum

An enumeration.

input = 'input'
output = 'output'
pad = 'pad'
class padrick.Model.PadSignal.Signal(direction=None, *values, name: TemplatedIdentifierType, size: ConstrainedIntValue = 1)[source]

Bases: BaseModel

property direction
name: TemplatedIdentifierType
size: ConstrainedIntValue
class padrick.Model.PadSignal.SignalDirection(value)[source]

Bases: str, Enum

An enumeration.

bidir = 'bidir'
pads2soc = 'pads2soc'
soc2pads = 'soc2pads'

padrick.Model.PadType module

class padrick.Model.PadType.PadType(*args, name: ConstrainedStrValue, description: Optional[str] = None, template: str, pad_signals: List[PadSignal] = [], user_attr: Optional[UserAttrs] = None)[source]

Bases: BaseModel

class Config[source]

Bases: object

extra = 'forbid'
underscore_attrs_are_private = True
classmethod check_unique_padtype_name(v)[source]
classmethod check_valid_mako_template(v)[source]
description: Optional[str]
get_pad_signal(name: str) PadSignal[source]
classmethod must_contain_at_least_one_landing_pad(v: List[PadSignal]) List[PadSignal][source]
name: ConstrainedStrValue
pad_signals: List[PadSignal]
template: str
user_attr: Optional[UserAttrs]

padrick.Model.Padframe module

class padrick.Model.Padframe.Padframe(*, manifest_version: int, name: ConstrainedStrValue, description: Optional[str] = None, pad_domains: ConstrainedListValue[PadDomain], user_attr: Optional[UserAttrs] = None)[source]

Bases: BaseModel

Padframe class that represents the padframe configuration parsed from the configuration file.

manifest_version

The manifest version used by the parsed configuration file.

Type

int

name

Name of the pad_frame module.

Type

str

description

An optional short description of the padframes.

Type

str

pad_domains

A list of PadDomains within this padframe.

Type

List[PadDomain

class Config[source]

Bases: object

json_encoders = {<class 'mako.template.Template'>: <function Padframe.Config.<lambda>>, <class 'padrick.Model.SignalExpressionType.SignalExpressionType'>: <function Padframe.Config.<lambda>>, <class 'padrick.Model.PadSignal.PadSignal'>: <function Padframe.Config.<lambda>>, <class 'padrick.Model.PadSignal.Signal'>: <function Padframe.Config.<lambda>>}
title = 'Padframe Config'
underscore_attrs_are_private = True
classmethod check_manifest_version(version)[source]

Verifies that the configuration file has the right version number for the current version of padrick.

description: Optional[str]
manifest_version: int
name: ConstrainedStrValue
pad_domains: ConstrainedListValue[PadDomain]
user_attr: Optional[UserAttrs]

padrick.Model.ParseContext module

class padrick.Model.ParseContext.ParseContext[source]

Bases: object

find_pad_signal_instances(name: str) List[Signal][source]
find_pad_type(name: str) Optional[PadType][source]
register_pad_type(pad_type: PadType)[source]
set_context(ctx: PadDomain)[source]

padrick.Model.Port module

class padrick.Model.Port.Port(*, name: TemplatedIdentifierType, description: Optional[TemplatedStringType] = None, connections: Optional[Mapping[Union[Signal, str], Optional[SignalExpressionType]]] = None, mux_groups: ConstrainedSetValue[TemplatedIdentifierType] = {all, self}, multiple: ConstrainedIntValue = 1, user_attr: Optional[UserAttrs] = None)[source]

Bases: BaseModel

class Config[source]

Bases: object

extra = 'forbid'
underscore_attrs_are_private = True
validate_assignment = True
connections: Optional[Mapping[Union[Signal, str], Optional[SignalExpressionType]]]
description: Optional[TemplatedStringType]
expand_port() List[Port][source]
multiple: ConstrainedIntValue
property mux_group_name: str
mux_groups: ConstrainedSetValue[TemplatedIdentifierType]
classmethod mux_groups_must_not_contain_uppercase_letters(mux_group: TemplatedIdentifierType)[source]
name: TemplatedIdentifierType
property port_signals: List[Signal]

The union of pad2chip and chip2pad port signals.

Type

Returns

property port_signals_chip2pad: List[Signal]
property port_signals_pad2chip: List[Signal]
user_attr: Optional[UserAttrs]

padrick.Model.PortGroup module

class padrick.Model.PortGroup.PortGroup(*, name: TemplatedIdentifierType, description: Optional[TemplatedStringType] = None, mux_groups: Optional[ConstrainedSetValue[TemplatedIdentifierType]] = None, ports: List[Port], output_defaults: Union[SignalExpressionType, Mapping[Union[Signal, str], Optional[SignalExpressionType]]] = {}, multiple: ConstrainedIntValue = 1, user_attr: Optional[UserAttrs] = None)[source]

Bases: BaseModel

class Config[source]

Bases: object

extra = 'forbid'
underscore_attrs_are_private = True
classmethod check_all_pad2soc_ports_have_default(values)[source]
classmethod check_pad2soc_ports_are_not_multiple_connected(v)[source]
classmethod check_port_signals_are_not_bidirectional(v)[source]
classmethod check_ports_are_unique(ports)[source]
description: Optional[TemplatedStringType]
classmethod expand_default_value_for_connection_defaults(output_defaults, values)[source]
classmethod expand_multi_ports(ports)[source]

Expand ports with muliple>1 into individual port objects replacing the ‘<>’ token in name, description and signalexpression with the array index.

expand_port_group() List[PortGroup][source]
get_ports_in_mux_groups(mux_groups: Set[str]) List[Port][source]
multiple: ConstrainedIntValue
mux_groups: Optional[ConstrainedSetValue[TemplatedIdentifierType]]
name: TemplatedIdentifierType
output_defaults: Union[SignalExpressionType, Mapping[Union[Signal, str], Optional[SignalExpressionType]]]
property port_signals
property port_signals_pads2soc
property port_signals_soc2pads
ports: List[Port]
user_attr: Optional[UserAttrs]

Make sure the signals specified in connection_defaults are actually pad2chip port signals and make sure the associated expression is static.

padrick.Model.SignalExpressionType module

class padrick.Model.SignalExpressionType.SignalExpressionType(expression: str)[source]

Bases: str

property ast
evaluate_template(i)[source]
property expression: str
get_mapped_expr(signal_name_mapping: Mapping[str, str]) SignalExpressionType[source]
property is_const_expr
property is_empty
property is_single_signal
property signal_collection
classmethod validate(v)[source]
class padrick.Model.SignalExpressionType.SignalNameRemapTransformer(signal_name_mapping: Mapping[str, str])[source]

Bases: Transformer

signal_name(characters)[source]

padrick.Model.TemplatedIdentifier module

class padrick.Model.TemplatedIdentifier.TemplatedIdentifierType(expression: str)[source]

Bases: str

property ast
evaluate_template(i)[source]
property identifier: str
classmethod validate(v)[source]
padrick.Model.TemplatedIdentifier.parse_expression(expression: str)[source]

padrick.Model.TemplatedIndexGrammar module

class padrick.Model.TemplatedIndexGrammar.TemplatedIdxEvaluator(i: int)[source]

Bases: Transformer

INDEX_VAR(token)[source]
constant(token)[source]
idx_expression(left, operator, right)[source]
idx_template(idx_expression, format_spec: Tree = None)[source]
number_to_base26(value: int) List[int][source]
term(left, operator, right)[source]
class padrick.Model.TemplatedIndexGrammar.TemplatedIdxToStringTransformer(visit_tokens=True)[source]

Bases: Transformer

idx_template(children)[source]

padrick.Model.TemplatedPortIdentifier module

class padrick.Model.TemplatedPortIdentifier.TemplatedPortIdentifierType(expression: str)[source]

Bases: str

evaluate_template(i)[source]
property identifier: str
classmethod validate(v)[source]

padrick.Model.TemplatedString module

class padrick.Model.TemplatedString.TemplatedStringType(expression: str)[source]

Bases: str

property ast
evaluate_template(i)[source]
property identifier: str
classmethod validate(v)[source]

padrick.Model.UserAttrs module

class padrick.Model.UserAttrs.UserAttrs(*, __root__: Mapping[TemplatedStringType, Union[UserAttrs, int, bool, TemplatedStringType]])[source]

Bases: BaseModel

expand_user_attrs(i: int) Dict[str, Union[str, int, bool]][source]
items()[source]
keys()[source]
values()[source]

padrick.Model.Utilities module

padrick.Model.Utilities.cached_property(func)[source]
padrick.Model.Utilities.sort_pads(seq: Iterable[PadInstance])[source]
padrick.Model.Utilities.sort_ports(seq: Iterable[Port])[source]
padrick.Model.Utilities.sort_signals(seq: Iterable[Signal])[source]

Module contents