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