moving via pcells to the topmost level

S

SS

Guest
I want to move all the via pcells from every level of the cell
hierarchy to the topmost level .

How can I do this.

Thanks,
Srriram
 
SS wrote, on 12/05/08 14:44:
I want to move all the via pcells from every level of the cell
hierarchy to the topmost level .

How can I do this.

Thanks,
Srriram
Why do you want to do this? It's not going to be that easy, as you'd have to
modify each cell down in the hierarchy and remove the vias, and re-instantiate
them at the top level.

Andrew.
 
hi andrew, you're right, it is pretty difficult, but with the right
tools it is easier.
I also wonder why Srriram would like this, but perhaps the following
simple
solution will help????

(1) you need a skill function (Srriram_getTransform) that takes an
instance list such as a list of which is returned
from dbGetOverlaps and returns the transform to be used with
dbMoveFig. Srriram_getTransform has to work
on mosaics.
if there were no mosaics the function would look something like the
following...

(defun Srriram_getTransform (path) ;; untested
(if (atom path)
'((0 0) "R0")
(dbConcatTransform (car path)~>transform
(Srriram_getTransform (cadr
path)))))

However to work with mosaics the function must be quite a bit more
complicated and different
for CDBA and OpenAccess.

(2) you need a skill function (Srriram_isViaPcell?) which will match
"via pcells"; the customer will have to decide
a necessary and sufficient condition for being a "via pcell".

(3) a function (Srriram_bottomObj) which takes an instance path and
returns the bottom object. this function basically keeps calling cadr
until it finds an atom.

(defun Srriram_bottomObj (obj) ;; untested
(if (atom obj)
obj
(Srriram_bottomObj (cadr obj))))

(4) the following loop will do the moves

(defun Srriram_moveup_via_pcells (cv) ;; untested
(foreach path (dbGetOverlaps cv cv~>bBox t 1:32)
(when (Srriram_isViaPcell? (Srriram_bottomObj path))
(dbReopen cv "a")
(dbMoveFig (Srriram_bottomObj path) cv (Srriram_getTransform
path)))))




Of these function, Srriram_getTransform, is quite tricky to write
correctly.
but maybe the example above is helpful.

-jim


On Dec 24 2008, 11:08 am, Andrew Beckett
<andr...@DcEaLdEeTnEcTe.HcIoSm> wrote:
SS wrote, on 12/05/08 14:44:

I want to move all the via pcells from every level of the cell
hierarchy to the topmost level .

How can I do this.

Thanks,
Srriram

Why do you want to do this? It's not going to be that easy, as you'd have to
modify each cell down in the hierarchy and remove the vias, and re-instantiate
them at the top level.

Andrew.
 
jimka wrote, on 01/15/09 23:48:
hi andrew, you're right, it is pretty difficult, but with the right
tools it is easier.
I also wonder why Srriram would like this, but perhaps the following
simple
solution will help????

(1) you need a skill function (Srriram_getTransform) that takes an
instance list such as a list of which is returned
from dbGetOverlaps and returns the transform to be used with
dbMoveFig. Srriram_getTransform has to work
on mosaics.
if there were no mosaics the function would look something like the
following...

(defun Srriram_getTransform (path) ;; untested
(if (atom path)
'((0 0) "R0")
(dbConcatTransform (car path)~>transform
(Srriram_getTransform (cadr
path)))))

However to work with mosaics the function must be quite a bit more
complicated and different
for CDBA and OpenAccess.

(2) you need a skill function (Srriram_isViaPcell?) which will match
"via pcells"; the customer will have to decide
a necessary and sufficient condition for being a "via pcell".

(3) a function (Srriram_bottomObj) which takes an instance path and
returns the bottom object. this function basically keeps calling cadr
until it finds an atom.

(defun Srriram_bottomObj (obj) ;; untested
(if (atom obj)
obj
(Srriram_bottomObj (cadr obj))))

(4) the following loop will do the moves

(defun Srriram_moveup_via_pcells (cv) ;; untested
(foreach path (dbGetOverlaps cv cv~>bBox t 1:32)
(when (Srriram_isViaPcell? (Srriram_bottomObj path))
(dbReopen cv "a")
(dbMoveFig (Srriram_bottomObj path) cv (Srriram_getTransform
path)))))




Of these function, Srriram_getTransform, is quite tricky to write
correctly.
but maybe the example above is helpful.

-jim


On Dec 24 2008, 11:08 am, Andrew Beckett
andr...@DcEaLdEeTnEcTe.HcIoSm> wrote:
SS wrote, on 12/05/08 14:44:

I want to move all the via pcells from every level of the cell
hierarchy to the topmost level .
How can I do this.
Thanks,
Srriram
Why do you want to do this? It's not going to be that easy, as you'd have to
modify each cell down in the hierarchy and remove the vias, and re-instantiate
them at the top level.

Andrew.
Jim,

Generating the transform itself is not too difficult (although mosaics as you
say complicate matters a bit). The trouble is that you can't just do a dbMoveFig
(as you've done) because you may well have multiple instances of the same cell
(at some various levels of hierarchy), and so you need to create a copy in the
top cell for each and every occurrence of the via, before deleting it in the
leaf cell.

Then you'd end up with the case that you have some other design which references
the same leaf cells, and now the vias have gone.

So it just struck me as a rather bizarre requirement...

Andrew.
 
Hi Andrew/Jimka,

Sorry havent been checking this forum for quite sometime. I was able
to use dbMoveFig with translated coordinates. however it was time
consuming.

Thanks,
Sriram
 

Welcome to EDABoard.com

Sponsor

Back
Top