Traversing Hierarchy

This example traverses through the design hierarchy and reports how many instances of each cell are found. The example code can be run on the shipping example of Low Pass Filter Optimization after the workspace has been loaded.

../../../_images/low_pass_filter_opt.png
# Copyright Keysight Technologies 2023 - 2023
from keysight.ads.de import CellviewRefLike, db_uu


# traverse_hierarchy("LPFoptim_lib:LPF1Hz:schematic")
def traverse_hierarchy(design_name: CellviewRefLike) -> None:
    design = db_uu.open_design(design_name)
    cell_names = {}
    for inst, _hierarchy in design.get_hierarchy_for_netlist().traverse_instances():
        cell_names[inst.cell_name] = cell_names.get(inst.cell_name, 0) + 1
    for name in sorted(cell_names.keys()):
        print(f" {name} -> {cell_names[name]} instances")
On this page