def exclusion(cell, rdb, lay1, lay2, exclude): rdb_category = rdb.create_category('{} from {}'.format(lay1, lay2)) rdb_category.description = '{} from {} [{:1.3f} um] - Minimum exclusion violation'.format( lay1, lay2, exclude) # do it r1 = as_region(cell, lay1) r2 = as_region(cell, lay2) overlaps = r1 & r2 too_close = r1.separation_check(r2, exclude / dbu) rdb_create(rdb, cell, rdb_category, overlaps) rdb_create(rdb, cell, rdb_category, too_close)
def space(cell, rdb, layer, value, angle=90): rdb_category = rdb.create_category('{}_Space'.format(layer)) rdb_category.description = '{} [{:1.3f} um] - Minimum feature spacing violation'.format( layer, value) # message_loud('lymask doing {}'.format(rdb_category.name())) # do it polys = as_region(cell, layer) # violations = fast_space(polys, value / dbu, angle) violations = turbo(polys, 'space_check', [value / dbu, False, None, angle, None, None], tile_border=1.1 * value, job_name='{}_Space'.format(layer)) rdb_create(rdb, cell, rdb_category, violations)
def width(cell, rdb, layer, value, angle=90): rdb_category = rdb.create_category('{}_Width'.format(layer)) rdb_category.description = '{} [{:1.3f} um] - Minimum feature width violation'.format( layer, value) # message_loud('lymask doing {}'.format(rdb_category.name())) # do it polys = as_region(cell, layer) # violations = polys.width_check(value / dbu, False, pya.Region.Square, angle, None, None) violations = turbo(polys, 'width_check', [value / dbu, False, None, angle, None, None], tile_border=1.1 * value, job_name='{}_Width'.format(layer)) rdb_create(rdb, cell, rdb_category, violations)
def inclusion(cell, rdb, inner, outer, include): rdb_category = rdb.create_category('{} in {}'.format(inner, outer)) rdb_category.description = '{} in {} [{:1.3f} um] - Minimum inclusion violation'.format( inner, outer, include) # do it rin = as_region(cell, inner) rout = as_region(cell, outer) # violations = rin.sized(include / dbu) - rout big_rin = turbo(rin, 'sized', include / dbu, tile_border=1.1 * include, job_name='{} in {}'.format(inner, outer)) violations = big_rin - rout rdb_create(rdb, cell, rdb_category, violations)