gdsfactory.Component

gdsfactory.Component#

class gdsfactory.Component(name: str = 'Unnamed', with_uuid: bool = False, max_name_length: int | None = None)[source]#

A Component is an empty canvas where you add polygons, references and ports (to connect to other components).

  • stores settings that you use to build the component

  • stores info that you want to use

  • can return ports by type (optical, electrical …)

  • can return netlist for circuit simulation

  • can write to GDS, OASIS

  • can show in KLayout, matplotlib, 3D

  • can return copy, mirror, flattened (no references)

Parameters:
  • name – component_name. Use @cell decorator for auto-naming.

  • with_uuid – adds unique identifier.

Properties:
info: dictionary that includes
  • derived properties

  • external metadata (test_protocol, docs, …)

  • simulation_settings

  • function_name

  • name: for the component

settings:

full: full settings passed to the function to create component. changed: changed settings. default: default component settings. child: dict info from the children, if any.

__init__(name: str = 'Unnamed', with_uuid: bool = False, max_name_length: int | None = None) None[source]#

Initialize the Component object.

Parameters:
  • name – component_name. Use @cell decorator for auto-naming.

  • with_uuid – adds unique identifier.

  • max_name_length – maximum number of characters for component name.

Methods

__init__([name, with_uuid, max_name_length])

Initialize the Component object.

absorb(reference)

Absorbs polygons from ComponentReference into Component.

add(element)

Add a new element or list of elements to this Component.

add_array(component[, columns, rows, ...])

Creates a ComponentReference reference to a Component.

add_label([text, position, magnification, ...])

Adds Label to the Component.

add_padding(**kwargs)

Returns same component with padding.

add_pins_triangle([port_marker_layer, ...])

Returns component with triangular pins.

add_polygon(points[, layer, snap_to_grid])

Adds a Polygon to the Component.

add_port([name, center, width, orientation, ...])

Add port to component.

add_ports(ports[, prefix, suffix])

Add a list or dict of ports.

add_ref(component[, alias])

Add ComponentReference to the current Component.

add_ref_container(component)

Add reference, ports and copy_child_info.

add_route_info(cross_section, length[, ...])

Adds route information to a component.

align([elements, alignment])

Align elements in the Component.

area([layer])

Returns the area of the component.

assert_ports_manhattan([error_type])

Asserts that all ports are on manhattan angles (0, 90, 180, 270).

assert_ports_on_grid([grid_factor, error_type])

Asserts that all ports are on grid.

auto_rename_ports(**kwargs)

Rename ports by orientation NSEW (north, south, east, west).

auto_rename_ports_counter_clockwise(**kwargs)

auto_rename_ports_layer_orientation(**kwargs)

auto_rename_ports_orientation(**kwargs)

Rename ports by orientation NSEW (north, south, east, west).

copy([name])

copy_child_info(component)

Copy and settings info from child component into parent.

distribute([elements, direction, spacing, ...])

Distributes the specified elements in the Component.

extract(layers[, include_labels, recursive])

Extract polygons from a Component and returns a new Component.

flatten([single_layer])

Returns a flattened copy of the component.

flatten_invalid_refs(*args, **kwargs)

Flatten all invalid references.

flatten_offgrid_references([grid_size, ...])

Returns new component with flattened references so that they snap to grid.

flatten_reference(ref)

From existing cell replaces reference with a flatten reference which has the transformations already applied.

get_component_spec()

get_dependencies([recursive])

Return a list of Components referenced by this Component.

get_info()

Gathers the .info dictionaries from every sub-Component and returns them in a list.

get_labels([apply_repetitions, depth, layer])

Return labels.

get_layer_names()

Return layer names used in the design.

get_layers()

Return a set of (layer, datatype).

get_netlist(**kwargs)

From Component returns instances, connections and placements dict.

get_netlist_flat(**kwargs)

Returns a netlist where all subinstances are exposed and independently named.

get_netlist_recursive(**kwargs)

Returns recursive netlist for a component and subcomponents.

get_netlist_yaml(**kwargs)

get_polygon_bbox([default, top, bottom, ...])

Returns shapely Polygon with bounding box.

get_polygon_enclosure()

Returns Polygon enclosure.

get_polygons([by_spec, depth, ...])

Return a list of polygons in this cell.

get_ports([depth])

Returns copies of all the ports of the Component, rotated and translated so that they're in their top-level position.

get_ports_dict(**kwargs)

Returns a dict of ports.

get_ports_list(**kwargs)

Returns list of ports.

get_ports_pandas()

get_ports_polars()

get_ports_xsize(**kwargs)

Returns xdistance from east to west ports.

get_ports_ysize(**kwargs)

Returns ydistance from east to west ports.

get_setting(setting)

hash_geometry([precision])

Returns an SHA1 hash of the geometry in the Component.

is_unlocked()

Raises warning if Component is locked.

lock()

Makes sure components can't add new elements or move existing ones.

mirror([p1, p2])

Returns new Component with a mirrored reference.

move(*args, **kwargs)

Make a reference instead

movex([origin, destination])

Moves an object by a specified x-distance.

movey([origin, destination])

Moves an object by a specified y-distance.

offset([distance, use_union, precision, ...])

Returns new Component with polygons eroded or dilated by an offset.

plot([plotter])

Returns component plot using klayout, matplotlib, or kweb.

plot_klayout([show_ports, ...])

Returns klayout image.

plot_kweb()

Shows current gds in kweb.

plot_matplotlib(**kwargs)

Plot component using matplotlib.

plot_netlist([with_labels, font_weight])

Plots a netlist graph with networkx.

plot_netlist_flat([with_labels, font_weight])

Plots a netlist graph with networkx.

port_by_orientation_ccw(key, **kwargs)

Returns port by indexing them clockwise.

port_by_orientation_cw(key, **kwargs)

Returns port by indexing them clockwise.

pprint()

Prints component info.

pprint_ports([sort_by_name])

Prints ports in a rich table.

ref([position, port_id, rotation, h_mirror, ...])

Returns Component reference.

ref_center([position])

Returns a reference of the component centered at (x=0, y=0).

remap_layers(layermap[, new_copy])

Returns a copy of the component with remapped layers, unless new_copy is set to False, in which case it modifies the current Component in place.

remove(items)

Removes items from a Component, which can include Ports, PolygonSets CellReferences, ComponentReferences and Labels.

remove_labels()

Remove labels.

remove_layers(layers[, include_labels, ...])

Remove a list of layers and returns the same Component.

rename(name[, cache, max_name_length])

rotate([angle])

Returns new component with a rotated reference to the original.

show([show_ports, show_subports, ...])

Show component in KLayout.

simplify([tolerance])

Removes points from the polygon but does not change the polygon shape by more than tolerance from the original.

snap_ports_to_grid([grid_factor])

to_3d([layer_views, layer_stack, exclude_layers])

Return Component 3D trimesh Scene.

to_dict([ignore_components_prefix, ...])

Returns Dict representation of a component.

to_dict_yaml(**kwargs)

Write Dict representation of a component in YAML format.

to_gmsh(*args, **kwargs)

Deprecated.

to_kfactory()

Converts the component to KLayout Component.

to_np([nm_per_pixel, layers, values, pad_width])

Returns a pixelated numpy array from Component polygons.

to_yaml(**kwargs)

unlock()

Only do this if you know what you are doing.

validate(v, _info)

Pydantic assumes component is valid if the following are true.

write_gds([gdspath, gdsdir])

Write component to GDS and returns gdspath.

write_gerber(dirpath, ...)

param dirpath:

directory to write gerber files to.

write_netlist(filepath)

Write netlist in YAML.

write_netlist_dot([filepath])

Write netlist graph in DOT format.

write_oas([gdspath, gdsdir])

Write component to GDS and returns gdspath.

write_stl(filepath[, layer_stack, ...])

Write a Component to STL for 3D printing.

Attributes

bbox

Returns the bounding box of the ComponentReference.

center

Returns the center of the bounding box.

labels

layers

Returns a set of the Layers in the Component.

metadata

metadata_child

Returns metadata from child if any, Otherwise returns component own.

name

named_references

paths

polygons

ports_layer

portName.

references

size

Returns the (x, y) size of the bounding box.

size_info

Size info of the component.

x

Returns the x-coordinate of the center of the bounding box.

xmax

Returns the maximum x-value of the bounding box.

xmin

Returns the minimum x-value of the bounding box.

xsize

Returns the horizontal size of the bounding box.

y

Returns the y-coordinate of the center of the bounding box.

ymax

Returns the maximum y-value of the bounding box.

ymin

Returns the minimum y-value of the bounding box.

ysize

Returns the vertical size of the bounding box.