Gate

class hal_py.Gate

Bases: hal_py.DataContainer

Gate class containing information about a gate including its location, functions, and module.

add_boolean_function(self: hal_py.Gate, name: str, func: hal::BooleanFunction) → bool

Add a Boolean function with the given name to the gate.

Parameters:
Returns:

True on success, False otherwise.

Return type:

bool

boolean_functions

A dictionary from function name to Boolean function for all boolean functions associated with this gate.

Return type:dict[str,hal_py.BooleanFunction]
data

A dict from ((1) category, (2) key) to ((1) type, (2) value) containing all stored data entries.

Type:dict[tuple(str,str),tuple(str,str)]
delete_data(self: hal_py.DataContainer, category: str, key: str, log_with_info_level: bool = False) → bool

Delete a data entry.

Parameters:
  • category (str) – The data key category.
  • key (str) – The data key.
  • log_with_info_level (bool) – Force explicit logging channel ‘netlist’ with log level ‘info’ to trace GUI events.
Returns:

True on success, false otherwise.

Return type:

bool

fan_in_endpoints

A list of all fan-in endpoints of the gate, i.e., all endpoints associated with an input pin of the gate.

Type:list[hal_py.Endpoint]
fan_in_nets

A list of all fan-in nets of the gate, i.e., all nets that are connected to one of the input pins.

Type:list[hal_py.Net]
fan_out_endpoints

A list of all fan-out endpoints of the gate, i.e., all endpoints associated with an output pin of the gate.

Type:list[hal_py.Endpoint]
fan_out_nets

A list of all fan-out nets of the gate, i.e., all nets that are connected to one of the output pins.

Type:list[hal_py.Net]
get_boolean_function(*args, **kwargs)

Overloaded function.

  1. get_boolean_function(self: hal_py.Gate, name: str) -> hal::BooleanFunction

    Get the Boolean function specified by the given name. This name can for example be an output pin of the gate or any other user-defined function name.

    param str name:The name.
    returns:The Boolean function on success, an empty Boolean function otherwise.
    rtype:hal_py.BooleanFunction
  2. get_boolean_function(self: hal_py.Gate, pin: hal_py.GatePin = None) -> hal::BooleanFunction

    Get the Boolean function corresponding to the given output pin. If pin is None, the Boolean function of the first output pin is returned.

    param hal_py.GatePin pin:
     The pin.
    returns:The Boolean function on success, an empty Boolean function otherwise.
    rtype:hal_py.BooleanFunction
get_boolean_functions(self: hal_py.Gate, only_custom_functions: bool = False) → Dict[str, hal::BooleanFunction]

Get a dictionary from function name to Boolean function for all boolean functions associated with this gate.

Parameters:only_custom_functions (bool) – If true, this returns only the functions which were set via add_boolean_function().
Returns:A map from function name to function.
Return type:dict[str,hal_py.BooleanFunction]
get_data(self: hal_py.DataContainer, category: str, key: str) → Tuple[str, str]

Get the data entry specified by the given category and key.

Parameters:
  • category (str) – The data key category.
  • key (str) – The data key.
Returns:

The tuple ((1) type, (2) value).

Return type:

tuple(str,str)

get_data_map(self: hal_py.DataContainer) → Dict[Tuple[str, str], Tuple[str, str]]

Get a dict from ((1) category, (2) key) to ((1) type, (2) value) containing all stored data entries.

Returns:The stored data as a dict.
Return type:dict[tuple(str,str),tuple(str,str)]
get_fan_in_endpoint(*args, **kwargs)

Overloaded function.

  1. get_fan_in_endpoint(self: hal_py.Gate, pin_name: str) -> hal_py.Endpoint

    Get the fan-in endpoint corresponding to the input pin specified by name.

    param str pin_name:
     The input pin name.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  2. get_fan_in_endpoint(self: hal_py.Gate, pin: hal_py.GatePin) -> hal_py.Endpoint

    Get the fan-in endpoint corresponding to the specified input pin.

    param hal_py.GatePin pin:
     The input pin.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  3. get_fan_in_endpoint(self: hal_py.Gate, net: hal::Net) -> hal_py.Endpoint

    Get the fan-in endpoint connected to the specified input net.

    param hal_py.Net net:
     The input net.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
get_fan_in_endpoints(*args, **kwargs)

Overloaded function.

  1. get_fan_in_endpoints(self: hal_py.Gate) -> List[hal_py.Endpoint]

    Get a list of all fan-in endpoints of the gate, i.e., all endpoints associated with an input pin of the gate.

    returns:A list of all fan-in endpoints.
    rtype:list[hal_py.Endpoint]
  2. get_fan_in_endpoints(self: hal_py.Gate, filter: Callable[[hal_py.Endpoint], bool]) -> List[hal_py.Endpoint]

    Get a list of all fan-in endpoints of the gate, i.e., all endpoints associated with an input pin of the gate. The filter is evaluated on every candidate such that the result only contains those matching the specified condition.

    param lambda filter:
     Filter function to be evaluated on each endpoint.
    returns:A list of all fan-in endpoints.
    rtype:list[hal_py.Endpoint]
get_fan_in_net(*args, **kwargs)

Overloaded function.

  1. get_fan_in_net(self: hal_py.Gate, pin_name: str) -> hal::Net

    Get the fan-in net corresponding to the input pin specified by name.

    param str pin_name:
     The input pin name.
    returns:The fan-in net on success, None otherwise.
    rtype:hal_py.Net or None
  2. get_fan_in_net(self: hal_py.Gate, pin: hal_py.GatePin) -> hal::Net

    Get the fan-in net corresponding to the specified input pin.

    param hal_py.GatePin pin:
     The input pin.
    returns:The fan-in net on success, None otherwise.
    rtype:hal_py.Net or None
get_fan_in_nets(*args, **kwargs)

Overloaded function.

  1. get_fan_in_nets(self: hal_py.Gate) -> List[hal::Net]

    Get a list of all fan-in nets of the gate, i.e., all nets that are connected to one of the input pins.

    returns:A list of all fan-in nets.
    rtype:list[hal_py.Net]
  2. get_fan_in_nets(self: hal_py.Gate, filter: Callable[[hal::Net], bool]) -> List[hal::Net]

    Get a list of all fan-in nets of the gate, i.e., all nets that are connected to one of the input pins. The filter is evaluated on every candidate such that the result only contains those matching the specified condition.

    param lambda filter:
     Filter function to be evaluated on each net.
    returns:A list of all fan-in nets.
    rtype:list[hal_py.Net]
get_fan_out_endpoint(*args, **kwargs)

Overloaded function.

  1. get_fan_out_endpoint(self: hal_py.Gate, pin_name: str) -> hal_py.Endpoint

    Get the fan-out endpoint corresponding to the output pin specified by name.

    param str pin_name:
     The output pin name.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  2. get_fan_out_endpoint(self: hal_py.Gate, pin: hal_py.GatePin) -> hal_py.Endpoint

    Get the fan-out endpoint corresponding to the specified output pin.

    param hal_py.GatePin pin:
     The output pin.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  3. get_fan_out_endpoint(self: hal_py.Gate, net: hal::Net) -> hal_py.Endpoint

    Get the fan-out endpoint connected to the specified output net.

    param hal_py.Net net:
     The output net.
    returns:The endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
get_fan_out_endpoints(*args, **kwargs)

Overloaded function.

  1. get_fan_out_endpoints(self: hal_py.Gate) -> List[hal_py.Endpoint]

    Get a list of all fan-out endpoints of the gate, i.e., all endpoints associated with an output pin of the gate.

    returns:A list of all fan-out endpoints.
    rtype:list[hal_py.Endpoint]
  2. get_fan_out_endpoints(self: hal_py.Gate, filter: Callable[[hal_py.Endpoint], bool]) -> List[hal_py.Endpoint]

    Get a list of all fan-out endpoints of the gate, i.e., all endpoints associated with an output pin of the gate. The filter is evaluated on every candidate such that the result only contains those matching the specified condition.

    param lambda filter:
     Filter function to be evaluated on each endpoint.
    returns:A list of all fan-out endpoints.
    rtype:list[hal_py.Endpoint]
get_fan_out_net(*args, **kwargs)

Overloaded function.

  1. get_fan_out_net(self: hal_py.Gate, pin_name: str) -> hal::Net

    Get the fan-out net corresponding to the output pin specified by name.

    param str pin_name:
     The output pin name.
    returns:The fan-out net on success, None otherwise.
    rtype:hal_py.Net or None
  2. get_fan_out_net(self: hal_py.Gate, pin: hal_py.GatePin) -> hal::Net

    Get the fan-out net corresponding to the specified output pin.

    param hal_py.GatePin pin:
     The output pin.
    returns:The fan-out net on success, None otherwise.
    rtype:hal_py.Net or None
get_fan_out_nets(*args, **kwargs)

Overloaded function.

  1. get_fan_out_nets(self: hal_py.Gate) -> List[hal::Net]

    Get a list of all fan-out nets of the gate, i.e., all nets that are connected to one of the output pins.

    returns:A list of all fan-out nets.
    rtype:list[hal_py.Net]
  2. get_fan_out_nets(self: hal_py.Gate, filter: Callable[[hal::Net], bool]) -> List[hal::Net]

    Get a list of all fan-out nets of the gate, i.e., all nets that are connected to one of the output pins. The filter is evaluated on every candidate such that the result only contains those matching the specified condition.

    param lambda filter:
     Filter function to be evaluated on each net.
    returns:A list of all fan-out nets.
    rtype:list[hal_py.Net]
get_grouping(self: hal_py.Gate) → hal::Grouping

Gets the grouping in which this gate is contained. If no grouping contains this gate, None is returned.

Returns:The grouping.
Return type:hal_py.Grouping
get_id(self: hal_py.Gate) → int

Get the unique ID of the gate.

Returns:The unique id.
Type:int
get_init_data(self: hal_py.Gate) → List[str]

Get the INIT data of the gate, if available. An error is returned in case the gate does not hold any INIT data.

Returns:The INIT data as a list on success, an empty list otherwise.
Return type:list[str]
get_location(self: hal_py.Gate) → Tuple[int, int]

Get the physical location of the gate in the layout. If no valid physical location coordinate is assigned, a negative value is returned for the respective coordinate.

Returns:A tuple <x-coordinate, y-coordinate>.
Return type:tuple(int,int)
get_location_x(self: hal_py.Gate) → int

Get the physical location x-coordinate of the gate in the layout. If no valid physical location x-coordinate is assigned, a negative value is returned.

Returns:The gate’s x-coordinate.
Return type:int
get_location_y(self: hal_py.Gate) → int

Get the physical location y-coordinate of the gate in the layout. If no valid physical location y-coordinate is assigned, a negative value is returned.

Returns:The gate’s y-coordinate.
Return type:int
get_module(self: hal_py.Gate) → hal::Module

Get the module which contains this gate.

Returns:The module.
Return type:hal_py.Module
get_modules(self: hal_py.Gate, arg0: Callable[[hal::Module], bool], arg1: bool) → List[hal::Module]

Get all modules that contain this gate, either directly or as parent of another module. If recursive is set to True, indirect parent modules are also included. Otherwise, only the module containing the gate directly is returned. The optional filter is evaluated on every candidate such that the result only contains those matching the specified condition.

Parameters:
  • filter (lambda) – An optional filter.
  • recursive (bool) – Set True to include indirect parents as well, False otherwise.
Returns:

A list of modules.

Return type:

list[hal_py.Module]

get_name(self: hal_py.Gate) → str

Get the name of the gate.

Returns:The name.
Return type:str
get_netlist(self: hal_py.Gate) → hal_py.Netlist

Get the netlist this gate is associated with.

Returns:The netlist.
Return type:hal_py.Netlist
get_predecessor(*args, **kwargs)

Overloaded function.

  1. get_predecessor(self: hal_py.Gate, pin_name: str) -> hal_py.Endpoint

    Get a single direct predecessor endpoint that is connected to the input pin specified by name. Fails if there are no or more than one predecessors.

    param str pin_name:
     The input pin name.
    returns:The predecessor endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  2. get_predecessor(self: hal_py.Gate, pin: hal_py.GatePin) -> hal_py.Endpoint

    Get a single direct predecessor endpoint that is connected to the specified input pin. Fails if there are no or more than one predecessors.

    param hal_py.GatePin pin:
     The input pin.
    returns:The predecessor endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
get_predecessors(self: hal_py.Gate, filter: Callable[[hal_py.GatePin, hal_py.Endpoint], bool] = None) → List[hal_py.Endpoint]

Get a list of all direct predecessor endpoints of the gate, i.e., all predecessor endpoints that are connected to an input pin of the gate. The optional filter is evaluated on every candidate such that the result only contains those matching the specified condition.

Parameters:filter (lambda) – An optional filter being evaluated on the gate’s input pin as well as the predecessor endpoint.
Returns:A list of predecessors endpoints.
Return type:list[hal_py.Endpoint]
get_resolved_boolean_function(self: hal_py.Gate, pin: hal_py.GatePin = None) → Optional[hal::BooleanFunction]

Get the resolved Boolean function corresponding to the given output pin, i.e., a Boolean function that is only dependent on input nets and no internal or output pins.

Parameters:pin (hal_py.GatePin) – The output pin.
Returns:The Boolean function on success, an error otherwise.
Return type:hal_py.BooleanFunction
get_successor(*args, **kwargs)

Overloaded function.

  1. get_successor(self: hal_py.Gate, pin_name: str) -> hal_py.Endpoint

    Get a single direct successor endpoint that is connected to the output pin specified by name. Fails if there are no or more than one successors.

    param str pin_name:
     The output pin name.
    returns:The successor endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
  2. get_successor(self: hal_py.Gate, pin: hal_py.GatePin) -> hal_py.Endpoint

    Get a single direct successor endpoint that is connected to the output pin specified by name. Fails if there are no or more than one successors.

    param hal_py.GatePin pin:
     The output pin.
    returns:The successor endpoint on success, None otherwise.
    rtype:hal_py.Endpoint or None
get_successors(self: hal_py.Gate, filter: Callable[[hal_py.GatePin, hal_py.Endpoint], bool] = None) → List[hal_py.Endpoint]

Get a list of all direct successor endpoints of the gate, i.e., all successor endpoints that are connected to an output pin of the gate. The optional filter is evaluated on every candidate such that the result only contains those matching the specified condition.

Parameters:filter (lambda) – An optional filter being evaluated on the gate’s output pin as well as the successor endpoint.
Returns:A list of successor endpoints.
Return type:list[hal_py.Endpoint]
get_type(self: hal_py.Gate) → hal_py.GateType

Get the type of the gate.

Returns:The gate’s type.
Return type:hal_py.Gate_type
get_unique_predecessors(self: hal_py.Gate, filter: Callable[[hal_py.GatePin, hal_py.Endpoint], bool] = None) → List[hal_py.Gate]

Get a list of all unique predecessor gates of the gate. The optional filter is evaluated on every candidate such that the result only contains those matching the specified condition.

Parameters:filter (lambda) – An optional filter being evaluated on the gate’s input pin as well as the predecessor endpoint.
Returns:A list of unique predecessors endpoints.
Return type:list[hal_py.Gate]
get_unique_successors(self: hal_py.Gate, filter: Callable[[hal_py.GatePin, hal_py.Endpoint], bool] = None) → List[hal_py.Gate]

Get a list of all unique successor gates of the gate. The optional filter is evaluated on every candidate such that the result only contains those matching the specified condition.

Parameters:filter (lambda) – An optional filter being evaluated on the gate’s output pin as well as the successor endpoint.
Returns:A list of unique successor endpoints.
Return type:list[hal_py.Gate]
has_data(self: hal_py.DataContainer, category: str, key: str) → bool

Determine whether an entry of given category and key exists.

Parameters:
  • category (str) – The data key category.
  • key (str) – The data key.
Returns:

True if the entry exists, False otherwise.

Return type:

bool

has_location(self: hal_py.Gate) → bool

Checks whether the gate’s location in the layout is available.

Returns:True if valid location data is available, false otherwise.
Return type:bool
id

The unique ID of the gate.

Type:int
is_fan_in_net(self: hal_py.Gate, net: hal::Net) → bool

Check whether the given net is a fan-in of the gate.

Parameters:net (hal_py.Net) – The net.
Returns:True if the net is a fan-in of the gate, False otherwise.
Return type:bool
is_fan_out_net(self: hal_py.Gate, net: hal::Net) → bool

Check whether the given net is a fan-out of the gate.

Parameters:net (hal_py.Net) – The net.
Returns:True if the net is a fan-out of the gate, False otherwise.
Return type:bool
is_gnd_gate(self: hal_py.Gate) → bool

Checks whether this gate is a global gnd gate.

Returns:True if the gate is a global gnd gate, False otherwise.
Return type:bool
is_vcc_gate(self: hal_py.Gate) → bool

Checks whether this gate is a global vcc gate.

Returns:True if the gate is a global vcc gate, False otherwise.
Return type:bool
location

The physical location of the gate in the layout. Only positive values are valid, negative values will be regarded as no location assigned.

Type:tuple(int,int)
location_x

The x-coordinate of the physical location of the gate in the layout. Only positive values are valid, negative values will be regarded as no location assigned.

Type:int
location_y

The y-coordinate of the physical location of the gate in the layout. Only positive values are valid, negative values will be regarded as no location assigned.

Type:int
mark_gnd_gate(self: hal_py.Gate) → bool

Mark this gate as a global gnd gate.

Returns:True on success, False otherwise.
Return type:bool
mark_vcc_gate(self: hal_py.Gate) → bool

Mark this gate as a global vcc gate.

Returns:True on success, False otherwise.
Return type:bool
module

The module in which contains this gate.

Type:hal_py.Module
modules

A list of all modules that contain this gate, either directly or as parent of another module.

Type:list[hal_py.Module]
name

The name of the gate.

Type:str
netlist

The netlist this gate is associated with.

Type:hal_py.Netlist
predecessors

A list of all direct predecessor endpoints of the gate, i.e., all predecessor endpoints that are connected to an input pin of the gate.

Type:list[hal_py.Endpoint]
set_data(self: hal_py.DataContainer, category: str, key: str, data_type: str, value: str, log_with_info_level: bool = False) → bool

Add a data entry.<br> May overwrite an existing entry.

Parameters:
  • category (str) – The data key category.
  • key (str) – The data key.
  • data_type (str) – The data type.
  • value (str) – The data value.
  • log_with_info_level (bool) – Force explicit logging channel ‘netlist’ with log level ‘info’ to trace GUI events.
Returns:

True on success, false otherwise.

Return type:

bool

set_init_data(self: hal_py.Gate, init_data: List[str]) → bool

Set the INIT data of the gate, if available. An error is returned in case the gate does not hold any INIT data.

Parameters:init_data (list[str]) – The INIT data as a list.
Returns:True on success, False otherwise.
Return type:bool
set_location(self: hal_py.Gate, location: Tuple[int, int]) → None

Set the physical location of the gate in the layout. Only positive coordinates are valid, negative values will be regarded as no location assigned.

Parameters:location (tuple(int,int)) – A tuple <x-coordinate, y-coordinate>.
set_location_x(self: hal_py.Gate, x: int) → None

Set the physical location x-coordinate of the gate in the layout. Only positive values are valid, negative values will be regarded as no location assigned.

Parameters:x (int) – The gate’s x-coordinate.
set_location_y(self: hal_py.Gate, y: int) → None

Set the physical location y-coordinate of the gate in the layout. Only positive values are valid, negative values will be regarded as no location assigned.

Parameters:y (int) – The gate’s y-coordinate.
set_name(self: hal_py.Gate, name: str) → None

Set the name of the gate.

Parameters:name (str) – The new name.
successors

A list of all direct successor endpoints of the gate, i.e., all successor endpoints that are connected to an output pin of the gate.

Type:list[hal_py.Endpoint]
type

The type of the gate

Type:hal_py.Gate_type
unique_predecessors

A list of all unique predecessor gates of the gate.

Type:list[hal_py.Gate]
unique_successors

A list of all unique successor gates of the gate.

Type:list[hal_py.Gate]
unmark_gnd_gate(self: hal_py.Gate) → bool

Unmark this gate as a global gnd gate.

Returns:True on success, False otherwise.
Return type:bool
unmark_vcc_gate(self: hal_py.Gate) → bool

Unmark this gate as a global vcc gate.

Returns:True on success, False otherwise.
Return type:bool