From 0e0d57c12498d12cee173c7e804ce3655e4c76da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20G=C3=BChring?= <pg@futureware.at> Date: Sun, 30 Apr 2023 23:06:30 +0200 Subject: [PATCH] Improved placement of power rail vias --- lclayout/standalone.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lclayout/standalone.py b/lclayout/standalone.py index 875f7c5..6502f83 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) -- GitLab