import sys from SPICE import * def printContents(circuit): print "+", circuit.title if len(circuit.getIncludes()): print "| + includes" for include in circuit.getIncludes(): print "| |", include if len(circuit.getLibraries()): print "| + libraries" for (lib, typ) in circuit.getLibraries(): print "| |", lib, typ if len(circuit.getParameters()): print "| + parameters" for (name, value) in circuit.getParameters().items(): print "| | %s=%s"%(name, value) if len(circuit.getOptions()): print "| + options" for (name, value) in circuit.getOptions().items(): print "| | %s=%s"%(name, value) if len(circuit.getSources()): print "| + sources" for source in circuit.getSources(): print "| |", source.getName(), source.getPositive(), source.getNegative(), source.getValue() if len(circuit.getSubckts()): print "| + subckts" for sub in circuit.getSubckts(): print "| | +", sub.getName(), for interf in sub.getInterfaces(): print interf, if len(sub.getParameters()): print "param:", for (name, value) in sub.getParameters().items(): print "%s=%s"%(name,value), print for inst in sub.getInstances(): print "| | | +", inst.getName(), if isinstance(inst, Mosfet): print inst.getDrain(), inst.getGrid(), inst.getSource(), inst.getBulk(), inst.getModel(), i = 0 for (name, value) in inst.getParameters().items(): if i%6 == 0: print print "| | | | +", print "%s=%s"%(name, value), i += 1 elif isinstance(inst, Resistor): print inst.getFirst(), inst.getSecond(), inst.getValue(), elif isinstance(inst, Capacitor): print inst.getPositive(), inst.getNegative(), inst.getValue(), else: for conn in inst.getConnectors(): print conn, print inst.getModel(), i = 0 for (name, value) in inst.getParameters().items(): if i%6 == 0: print print "| | | | +", print "%s=%s"%(name, value), i += 1 print if len(circuit.getInstances()): print "| + instances" for inst in circuit.getInstances(): print "| | | +", inst.getName(), if isinstance(inst, Mosfet): print inst.getDrain(), inst.getGrid(), inst.getSource(), inst.getBulk(), inst.getModel(), i = 0 for (name, value) in inst.getParameters().items(): if i%6 == 0: print print "| | | | +", print "%s=%s"%(name, value), i += 1 elif isinstance(inst, Resistor): print inst.getFirst(), inst.getSecond(), inst.getValue(), elif isinstance(inst, Capacitor): print inst.getPositive(), inst.getNegative(), inst.getValue(), else: for conn in inst.getConnectors(): print conn, print inst.getModel(), i = 0 for (name, value) in inst.getParameters().items(): if i%6 == 0: print print "| | | | +", print "%s=%s"%(name, value), i += 1 print def usage(): print "usage:", sys.argv[0], "[filename]" sys.exit(48) def main(): if len(sys.argv) == 1: filename = "./OTA_miller.spi" elif len(sys.argv) == 2: filename = sys.argv[1] else: usage() circuit = Circuit.readFromFile(filename) printContents(circuit) if __name__ == "__main__": main()