Files
OpenDB/tests/python/13-wire_encoder_test.py
2019-12-04 21:49:31 -05:00

45 lines
1.2 KiB
Python

import opendbpy as odb
import os
current_dir = os.path.dirname(os.path.realpath(__file__))
tests_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
opendb_dir = os.path.abspath(os.path.join(tests_dir, os.pardir))
data_dir = os.path.join(tests_dir, "data")
db = odb.dbDatabase.create()
chip = odb.odb_read_design(db, [os.path.join(data_dir, "gscl45nm.lef")], [os.path.join(data_dir, "design.def")])
if chip == None:
exit("Read DEF failed")
tech = db.getTech()
lib = db.getLibs()
vias = tech.getVias()
via1 = vias[0]
layer1 = via1.getBottomLayer()
via2 = vias[1]
via3 = vias[2]
block = chip.getBlock()
net = odb.dbNet_create(block, "w1")
wire = odb.dbWire_create(net)
wire_encoder = odb.dbWireEncoder()
wire_encoder.begin(wire)
wire_encoder.newPath(layer1, "ROUTED")
wire_encoder.addPoint(2000,2000)
jid1 = wire_encoder.addPoint(10000,2000)
wire_encoder.addPoint(18000,2000)
wire_encoder.newPath(jid1)
wire_encoder.addTechVia(via1)
jid2 = wire_encoder.addPoint(10000,10000)
wire_encoder.addPoint(10000,18000)
wire_encoder.newPath(jid2)
jid3=wire_encoder.addTechVia(via2)
wire_encoder.end()
result = odb.odb_write_def(block, os.path.join(opendb_dir, "build/wire_encoder.def"))
if(result!=1):
exit("Write DEF failed")