diff --git a/lclayout/standalone.py b/lclayout/standalone.py index 875f7c58c1b6406f692e1d69988a3e72abf56226..6502f832ce2c345fe5684ab310840f085005aac6 100644 --- a/lclayout/standalone.py +++ b/lclayout/standalone.py @@ -290,15 +290,17 @@ class LcLayout: via_layer=via_layers[tech.power_layer[i]][tech.power_layer[i+1]]['layer'] via_size=self.tech.via_size[via_layer] via_spacing=self.tech.min_spacing[via_layer,via_layer] - x1=self._cell_width//2; - w=via_size//2; - num=(x1-via_size-via_spacing)//(via_size+via_spacing) + x1=tech.unit_cell_width//2 # self._cell_width//2 + logger.debug('unit_cell_width: {} cell_width: {} x1:{} range:{}'.format(tech.unit_cell_width, self._cell_width, x1,(self._cell_width//tech.unit_cell_width)-1)) + w=via_size//2 + num=((x1-via_size-via_spacing)//(via_size+via_spacing)) logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1)) for xoff in range(-num,num+1): - x=x1+xoff*(via_size+via_spacing) - viar = pya.Box(pya.Point(x - w, y1 - w),pya.Point(x + w, y1 + w)) - logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{} x:{} viar:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1,x,viar)) - self.shapes[via_layer].insert(viar).set_property('net', self.SUPPLY_VOLTAGE_NET if y1>0 else self.GND_NET) + for cellpart in range(0,(self._cell_width//tech.unit_cell_width)): + x=x1+xoff*(via_size+via_spacing)+cellpart*tech.unit_cell_width + viar = pya.Box(pya.Point(x - w, y1 - w),pya.Point(x + w, y1 + w)) + logger.debug('Draw via: {} ({}, {}) i:{} w:{} size:{} spacing:{} num:{} x1:{} x:{} viar:{}'.format(via_layer, x1, y1, i, w, via_size, via_spacing,num,x1,x,viar)) + self.shapes[via_layer].insert(viar).set_property('net', self.SUPPLY_VOLTAGE_NET if y1>0 else self.GND_NET)