Browse Source

fix dot graph construction

devel
stefan 7 days ago
parent
commit
e8a9025c56
  1. 6
      src/kyupy/circuit.py

6
src/kyupy/circuit.py

@ -652,11 +652,11 @@ class Circuit: @@ -652,11 +652,11 @@ class Circuit:
region.append(n)
yield stem, region
def dot(self, format='svg', graph_attr={}, line_labels={}):
def dot(self, tlib: 'TechLib', format='svg', graph_attr={}, line_labels={}):
from graphviz import Digraph
dot = Digraph(format=format, graph_attr={'rankdir': 'LR', 'splines': 'true', 'size': '10', 'ranksep': '0.1'} | graph_attr)
s_dict = dict((n, i) for i, n in enumerate(self.s_nodes))
s_dict = dict((n, i) for i, n in enumerate(self.s_nodes(tlib)))
node_level = np.zeros(len(self.nodes), dtype=np.uint32)
level_nodes = defaultdict(list)
for n, lv in self.topological_order_with_level():
@ -679,7 +679,7 @@ class Circuit: @@ -679,7 +679,7 @@ class Circuit:
reader = f'{l.reader.index}:i{l.reader_pin}' if len(l.reader.ins)>1 else f'{l.reader.index}'
label = str(line_labels.get(l, l.index))
if node_level[l.driver] == node_level[l.reader]:
s.node(f'_{l.index}_')
dot.node(f'_{l.index}_')
dot.edge(driver, f'_{l.index}_', style='dotted', label=label)
dot.edge(f'_{l.index}_', reader, style='dotted', label=label)
elif node_level[l.driver] > node_level[l.reader]:

Loading…
Cancel
Save