gdsfactory.get_netlist_flat.get_netlist_flat#
- gdsfactory.get_netlist_flat.get_netlist_flat(component: Component, **kwargs) dict[str, Any] [source]#
Parses a recursive netlist for a component as if it was a single netlist with its lowest-level instances.
- Procedure:
Recursively parse the recursive dict to generate a unique list of all instances even if they are reused Each entry is formatted as [(netlist, instance),…], and defines a unique flat_name = {top}{hierarchy_delimiter}{instance}{hierarchy_delimiter}{instance}{hierarchy_delimiter}…
- Populate the flat netlist dict with similar entries as regular gdsfactory netlists:
instances: component, info, and settings from the original netlist, but keyed with flat_name
placements: For instance corresponding to each flat_name, accumulate placements across the hierarchy
- ports and connections: each unique port of each flat_name instance is uniquely named as flat_name,port_name for each flat_name,port_name, starting at lowest hierarchy level:
list connections at that level (finding the proper other flat_name,port_name if non-leaf level)
if possible, maps the port to a port of that instance’s netlist, and repeat at a higher level
if the top level is reached, assign that flat_name,port_name to a top-level component port instead the returned ports dict has top level component portname: flat_name,port_name mappings the returned connections dict is sorted and flattened into a minimal (flat_name,port_name)_1: [(flat_name,port_name)] key: value pairs If allow_multiple flag in get_netlist is True, the values will be lists (to support multiple connections)
name: top_level_component name
- Parameters:
component – to extract flat netlist.
- Keyword Arguments:
component_suffix – suffix to append to each component name, useful if to save and reload a back-annotated netlist.
get_netlist_func – function to extract individual netlists.
tolerance – tolerance in nm to consider two ports connected.
exclude_port_types – optional list of port types to exclude from netlisting.
get_instance_name – function to get instance name.
- Returns:
Dict of instance name and settings. connections: Dict of Instance1Name,portName: Instance2Name,portName. placements: Dict of instance names and placements (x, y, rotation). port: Dict portName: ComponentName,port. name: name of component. warnings: warning messages (disconnected pins).
- Return type:
instances