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)