1import opendbpy as odb 2import os 3 4current_dir = os.path.dirname(os.path.realpath(__file__)) 5tests_dir = os.path.abspath(os.path.join(current_dir, os.pardir)) 6opendb_dir = os.path.abspath(os.path.join(tests_dir, os.pardir)) 7data_dir = os.path.join(tests_dir, "data") 8 9db = odb.dbDatabase.create() 10odb.read_lef(db, os.path.join(data_dir, "gscl45nm.lef")) 11odb.read_def(db, os.path.join(data_dir, "design.def")) 12chip = db.getChip() 13tech = db.getTech() 14 15vias = tech.getVias() 16via1 = vias[0] 17layer1 = via1.getBottomLayer() 18via2 = vias[1] 19via3 = vias[2] 20block = chip.getBlock() 21net = odb.dbNet_create(block, "w1") 22wire = odb.dbWire_create(net) 23wire_encoder = odb.dbWireEncoder() 24 25wire_encoder.begin(wire) 26wire_encoder.newPath(layer1, "ROUTED") 27wire_encoder.addPoint(2000,2000) 28 29jid1 = wire_encoder.addPoint(10000,2000) 30wire_encoder.addPoint(18000,2000) 31wire_encoder.newPath(jid1) 32wire_encoder.addTechVia(via1) 33 34jid2 = wire_encoder.addPoint(10000,10000) 35wire_encoder.addPoint(10000,18000) 36wire_encoder.newPath(jid2) 37 38jid3=wire_encoder.addTechVia(via2) 39wire_encoder.end() 40 41result = odb.write_def(block, os.path.join(opendb_dir, "build/wire_encoder.def")) 42if(result!=1): 43 exit("Write DEF failed") 44