def read_netlist_from_javascript(dir,remove_dups=True,remove_shorts=True): p = netlist() read_nodenames(dir+'/nodenames.js') transdefs = read_transdefs(dir+'/transdefs.js',remove_shorts) pullups = read_segdefs(dir+'/segdefs.js') pins = read_pins(dir+'/pins.txt') if remove_dups: transdefs = remove_duplicates(transdefs) for (name,g,s,d) in transdefs: ng = p.add_node(g,'node_analog') ns = p.add_node(s,'node_analog') nd = p.add_node(d,'node_analog') nt = p.add_node(name,'t') port = new_name('in') link(nt,port,ng,None) link(nt,'s',ns,None) link(nt,'d',nd,None) nt.data['function'] = port for name in pullups: np = p.add_node(new_name('pullup'),'pullup') link(np,'s',p[name],None) for (i,name,pin_type) in pins: np = p.add_node(new_name('pin'),'pin_'+pin_type) link(np,'pin',p[name],None) np.data['index'] = i np.data['name'] = name return p
def read_netlist_from_javascript(dir, remove_dups=True, remove_shorts=True): p = netlist() read_nodenames(dir + '/nodenames.js') transdefs = read_transdefs(dir + '/transdefs.js', remove_shorts) pullups = read_segdefs(dir + '/segdefs.js') pins = read_pins(dir + '/pins.txt') if remove_dups: transdefs = remove_duplicates(transdefs) for (name, g, s, d) in transdefs: ng = p.add_node(g, 'node_analog') ns = p.add_node(s, 'node_analog') nd = p.add_node(d, 'node_analog') nt = p.add_node(name, 't') port = new_name('in') link(nt, port, ng, None) link(nt, 's', ns, None) link(nt, 'd', nd, None) nt.data['function'] = port for name in pullups: np = p.add_node(new_name('pullup'), 'pullup') link(np, 's', p[name], None) for (i, name, pin_type) in pins: np = p.add_node(new_name('pin'), 'pin_' + pin_type) link(np, 'pin', p[name], None) np.data['index'] = i np.data['name'] = name return p
def read_netlist_from_spice(filename): p = netlist() pins = read_pins('pins.txt') for t in read_spice_lines(filename): v = string.split(t) name = v[0] if name[0]=='M': g,s,d = sanitize(v[2]),sanitize(v[1]),sanitize(v[3]) # print g,s,d if g=='vcc' and s=='vcc' and d=='vcc': continue if s=='vcc': s,d = d,s if g=='vcc' and d=='vcc': pullup = p.add_node(s,'node_analog') np = p.add_node(new_name('pullup'),'pullup') link(np,'s',pullup,None) else: ng = p.add_node(g,'node_analog') ns = p.add_node(s,'node_analog') nd = p.add_node(d,'node_analog') nt = p.add_node('t'+name,'t') port = new_name('in') link(nt,port,ng,None) link(nt,'s',ns,None) link(nt,'d',nd,None) nt.data['function'] = port elif name[0]=='C': continue else: print 'unrecognized spice line: %s' % t for (i,name,pin_type) in pins: np = p.add_node(new_name('pin'),'pin_'+pin_type) link(np,'pin',p[name],None) np.data['index'] = i np.data['name'] = name return p
def read_netlist_from_spice(filename): p = netlist() pins = read_pins('pins.txt') for t in read_spice_lines(filename): v = string.split(t) name = v[0] if name[0] == 'M': g, s, d = sanitize(v[2]), sanitize(v[1]), sanitize(v[3]) # print g,s,d if g == 'vcc' and s == 'vcc' and d == 'vcc': continue if s == 'vcc': s, d = d, s if g == 'vcc' and d == 'vcc': pullup = p.add_node(s, 'node_analog') np = p.add_node(new_name('pullup'), 'pullup') link(np, 's', pullup, None) else: ng = p.add_node(g, 'node_analog') ns = p.add_node(s, 'node_analog') nd = p.add_node(d, 'node_analog') nt = p.add_node('t' + name, 't') port = new_name('in') link(nt, port, ng, None) link(nt, 's', ns, None) link(nt, 'd', nd, None) nt.data['function'] = port elif name[0] == 'C': continue else: print 'unrecognized spice line: %s' % t for (i, name, pin_type) in pins: np = p.add_node(new_name('pin'), 'pin_' + pin_type) link(np, 'pin', p[name], None) np.data['index'] = i np.data['name'] = name return p