Esempio n. 1
0
def random_cell_list(xlow, ylow, xhigh, yhigh, ncells, area_limit=False, ldiv=7, hdiv=14):
    w1 = (xhigh-xlow)/hdiv
    w2 = (xhigh-xlow)/ldiv
    h1 = (yhigh-ylow)/hdiv
    h2 = (yhigh-ylow)/ldiv
    chip_area = (xhigh - xlow) * (yhigh - ylow)
    total_area = 0
    units = list()
    for i in range(1, ncells+1):
        name = 'u' + str(i)
        w = random.randint(w1,w2)
        x = random.randint(xlow, xhigh-w)
        h = random.randint(h1,h2)
        y = random.randint(ylow, yhigh-h)
        unit = Unit(name, x, y, x+w, y+h)
        if area_limit and total_area + unit.area() > chip_area:
            break
        total_area += unit.area()
        units.append(unit)
    print("Chip area =", chip_area)
    print("Total units area =", total_area)
    return units