From eed9cc6f91331d2e29c3ac146130caed2ead56a0 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Fri, 22 Jul 2016 00:08:04 +0200 Subject: [PATCH] Do not generate stacked VIAs twice in ClockTree plugin. * Bug: In Cumulus, in ClockTree plugin in GaugeConf._rpAccess() do not create the stack of access VIAs each time the function is called. Instead maintain a lookup table of the already generated ones. Was blocking the loading of pre-routed nets in Anabatic. --- cumulus/src/plugins/chip/Configuration.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cumulus/src/plugins/chip/Configuration.py b/cumulus/src/plugins/chip/Configuration.py index ef39c905..5a04d273 100644 --- a/cumulus/src/plugins/chip/Configuration.py +++ b/cumulus/src/plugins/chip/Configuration.py @@ -124,6 +124,7 @@ class GaugeConf ( object ): self._routingGauge = None self._topLayerDepth = 0 self._plugToRp = { } + self._rpToAccess = { } self._loadRoutingGauge() return @@ -206,6 +207,10 @@ class GaugeConf ( object ): def _rpAccess ( self, rp, flags ): trace( 550, ',+', '\t_rpAccess() %s\n' % str(rp) ) + if self._rpToAccess.has_key(rp): + trace( 550, '-' ) + return self._rpToAccess[rp] + if flags & GaugeConf.DeepDepth: hdepth = self._horizontalDeepDepth vdepth = self._verticalDeepDepth @@ -259,6 +264,8 @@ class GaugeConf ( object ): ) trace( 550, segment ) contact1 = contact2 + + self._rpToAccess[rp] = contact1 trace( 550, '-' ) return contact1