snarled/snarl/utils.py

29 lines
745 B
Python
Raw Normal View History

2022-03-31 00:01:45 -07:00
"""
Some utility code that gets reused
"""
2022-03-27 23:43:52 -07:00
from typing import Set, Tuple
from .types import connectivity_t, layer_t
def connectivity2layers(
connectivity: connectivity_t,
) -> Tuple[Set[layer_t], Set[layer_t]]:
2022-03-31 00:01:45 -07:00
"""
Extract the set of all metal layers and the set of all via layers
from the connectivity description.
"""
2022-03-27 23:43:52 -07:00
metal_layers = set()
via_layers = set()
for top, via, bot in connectivity:
metal_layers.add(top)
metal_layers.add(bot)
if via is not None:
via_layers.add(via)
both = metal_layers.intersection(via_layers)
if both:
raise Exception(f'The following layers are both vias and metals!? {both}')
2022-03-27 23:43:52 -07:00
return metal_layers, via_layers