예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)