From 35881d152970cec18286bd7b10b0a953f1878e87 Mon Sep 17 00:00:00 2001 From: Jeff Connelly Date: Sat, 12 Apr 2008 00:01:27 -0700 Subject: [PATCH] Make assign_part() into a function, and make not-connected node names unique. --- bb.py | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/bb.py b/bb.py index 1acab87..185826b 100755 --- a/bb.py +++ b/bb.py @@ -52,6 +52,12 @@ print subckt_nodes print subckt_defns def rewrite_subckt(subckt_defns, s): + """Partially rewrite subcircuit 's', using rules from a module of the same name. + + Removes parts in mod.parts_consumed, keeps parts in mod.parts_kept. + + Does not generate any new parts.""" + mod = globals()[s] lines = [] for line in subckt_defns[s]: @@ -77,32 +83,35 @@ def rewrite_subckt(subckt_defns, s): return mod, subckt_defns, pos2node -mod, subckt_defns, pos2node = rewrite_subckt(subckt_defns, "tinv") +def assign_part(chips, mod): + # Store new pin assignments + assignments = {} + for p in mod.parts_generated: + assignments[p] = {} -# Store new pin assignments -assignments = {} -for p in mod.parts_generated: - assignments[p] = {} + # TODO: choose next available component in part, instead of always 0 + for node, pin in combine_dicts(mod.global_pins, mod.pins[0]).iteritems(): + if type(pin) == types.TupleType: + part, pin = pin + else: + part = None + + print "* %s -> %s:%s" % (node, part, pin) -# TODO: choose next available component in part, instead of always 0 -for node, pin in combine_dicts(mod.global_pins, mod.pins[0]).iteritems(): - if type(pin) == types.TupleType: - part, pin = pin - else: - part = None + if part is not None: + assignments[part][pin] = node - print "* %s -> %s:%s" % (node, part, pin) + for part in assignments: + print "* --%s--" % (part,) + for pin in range(1, max(assignments[part].keys()) + 1): + node = assignments[part].get(pin, "NC__%s_%s_%s_%s" % (mod.__name__, part, len(chips), pin)) - if part is not None: - assignments[part][pin] = node + print "* ", (pin,node) -for part in assignments: - print "* --%s--" % (part,) - for pin in range(1, max(assignments[part].keys()) + 1): - node = assignments[part].get(pin, "NC") - print "* ", (pin,node) +mod, subckt_defns, pos2node = rewrite_subckt(subckt_defns, "tinv") +chips = {} +chips = assign_part(chips, mod) -rewrite_subckt(subckt_defns, "tinv") # sti line = "XX1 IN NC_01 OUT NC_02 tinv" -- 2.11.4.GIT