Filtering DRC errors from std. cells with assura

S

Svenn Are Bjerkem

Guest
Hi,

I am facing a problem that the std. cells are giving me lots of DRC
errors that I want to filter because they are "OK". The standard cells
themselves do not have any special measures so I have to mock up some
kind of ruleset for assura to identify standard cells and throw away
*any* DRC errors that come from the std. cell but not from metal
layers above it. (as they are placed by me, and may be full of
errors.) Only those geometries already within a std. cell should be
neglected, whatever I inject in the same space should, so I can not
just ignore a certain area.

I have tried to define standardCell and
blackBoxCell( standardCells ) , but there are still DRC errors on the
pins that the black box provide, so I still have a few DRC errors
coming from the std. cell itself, and hence garbles up the user DRC
errors.

Anybody has an idea how to tell Assura "these are std. cell
geometries, ignore errors"? I am just starting to scratch the surface
of writing runsets so any pointer would be helpful.

--
Svenn
 
Do you care about errors involving shapes from inside AND outside stdandard cell (for example,
spacing error between one wire above and one metal shape inside the stdcell) ?

If not, ie you just want to "thraw away" whatever's in the stdcells and consider only the shapes
above, you could probably use ignoreCell() avParameter. That should have the same effect as deleting
the cell instances before running DRC, I guess.

If yes, then you'll need some way of identifying shapes from a stdcell, and consider only error
which involve at least one shape from above. For example, you could use a different purpose
(MET1/stdcell) for such shapes and modify the drc rules accordingly. That's what I can think of
right now :)


Cheers,

Stéphane

Svenn Are Bjerkem wrote:
Hi,

I am facing a problem that the std. cells are giving me lots of DRC
errors that I want to filter because they are "OK". The standard cells
themselves do not have any special measures so I have to mock up some
kind of ruleset for assura to identify standard cells and throw away
*any* DRC errors that come from the std. cell but not from metal
layers above it. (as they are placed by me, and may be full of
errors.) Only those geometries already within a std. cell should be
neglected, whatever I inject in the same space should, so I can not
just ignore a certain area.

I have tried to define standardCell and
blackBoxCell( standardCells ) , but there are still DRC errors on the
pins that the black box provide, so I still have a few DRC errors
coming from the std. cell itself, and hence garbles up the user DRC
errors.

Anybody has an idea how to tell Assura "these are std. cell
geometries, ignore errors"? I am just starting to scratch the surface
of writing runsets so any pointer would be helpful.

--
Svenn
 
On Nov 25, 4:19 pm, "S. Badel" <stephane.ba...@REMOVETHISepfl.ch>
wrote:
Do you care about errors involving shapes from inside AND outside stdandard cell (for example,
spacing error between one wire above and one metal shape inside the stdcell) ?

If not, ie you just want to "thraw away" whatever's in the stdcells and consider only the shapes
above, you could probably use ignoreCell() avParameter. That should have the same effect as deleting
the cell instances before running DRC, I guess.

If yes, then you'll need some way of identifying shapes from a stdcell, and consider only error
which involve at least one shape from above. For example, you could use a different purpose
(MET1/stdcell) for such shapes and modify the drc rules accordingly. That's what I can think of
right now :)
I think the answer is yes. We have been discussing ignoring the entire
space above a standard cell, but after looking into some more toplevel
cells, we found that then most of the metal routing done by us would
be ignored... :-( I am trying to read and understand the assuradev.pdf
and realize that it is a completely full time job to write runsets. No
wonder why companies have departments focusing on this topic. And they
don't seem to hang out here, either. Wonder where they exchange their
bits and pieces of info......

--
Svenn

Cheers,

Stéphane

Svenn Are Bjerkem wrote:
Hi,

I am facing a problem that the std. cells are giving me lots of DRC
errors that I want to filter because they are "OK". The standard cells
themselves do not have any special measures so I have to mock up some
kind of ruleset for assura to identify standard cells and throw away
*any* DRC errors that come from the std. cell but not from metal
layers above it. (as they are placed by me, and may be full of
errors.) Only those geometries already within a std. cell should be
neglected, whatever I inject in the same space should, so I can not
just ignore a certain area.

I have tried to define standardCell and
blackBoxCell( standardCells ) , but there are still DRC errors on the
pins that the black box provide, so I still have a few DRC errors
coming from the std. cell itself, and hence garbles up the user DRC
errors.

Anybody has an idea how to tell Assura "these are std. cell
geometries, ignore errors"? I am just starting to scratch the surface
of writing runsets so any pointer would be helpful.

--
Svenn
 
On Nov 25, 4:19 pm, "S. Badel" <stephane.ba...@REMOVETHISepfl.ch>
wrote:
Do you care about errors involving shapes from inside AND outside stdandard cell (for example,
spacing error between one wire above and one metal shape inside the stdcell) ?
According to the development manual, Assura is supposed to be able to
have area based rule.
I was looking at the function cellBoundary() which is supposed to be
used with the layerDefs section. There is some talk about the boundary
of the cell here and it seems that there is actually a layer called
cellBoundary. Does a rectangle of this layer have to be placed in the
layout of the cell, or will Assura create a bounding box of itself
based on whatever layers are placed within the cell? I would probably
have to create a test layout to find this out, but as it is a bit of
work to accomplish (I also have to rewrite some of the drc.rul file) I
thought I should give the question a try here first.

--
Svenn
 
Svenn Are Bjerkem wrote:
According to the development manual, Assura is supposed to be able to
have area based rule.
I was looking at the function cellBoundary() which is supposed to be
used with the layerDefs section. There is some talk about the boundary
of the cell here and it seems that there is actually a layer called
cellBoundary. Does a rectangle of this layer have to be placed in the
layout of the cell, or will Assura create a bounding box of itself
based on whatever layers are placed within the cell? I would probably
have to create a test layout to find this out, but as it is a bit of
work to accomplish (I also have to rewrite some of the drc.rul file) I
thought I should give the question a try here first.
The word "layer" may be a little confusing. They refer as "layer" to the data that is processed,
i.e. in the layerDefs section you pick original layers from the layout, and following you create new
layers by processing the original ones.

Basically, cellBoundary gives you a "layer", ie an area, corresponding to the merged boundary of the
cells you are giving as arguments - that's at least what I understand -

Might actually be intersting for your purpose. For example :

layerDefs( "dfII"
met1 = layer( "MET1" "drawing" )
stdcell = cellBoundary( file("standard_cells.txt") )
) ; layerDefs

met1_over_stdcell = geomAnd( met1 stdcell )


But this selects both shapes from inside and outside the stdcell, as long as it overlaps the stdcell
area. Actually what seems even more interesting is the extractCellLayer() function, which - as far
as I understand - will give you the data on a specific layer, but only from the cells you are giving
as argument.

layerDefs( "dfII"
met1 = layer( "MET1" "drawing" )
met1_stdcell = extractCellLayer( met1 file("standard_cells.txt") )
) ; layerDefs

;; select met1 shapes not in standard cells
;; but including shapes in standard cells that are contacted by met1
met1_andnot_stdcell = geomAndNot(met1 met1_stdcell)
met1_over = geomOr(
geomButting(met1_stdcell met1_andnot_stdcell)
met1_andnot_stdcell
)

;; check spacing
met1_spacing_error = geomAnd(
drc( met1_over sep < 0.1 ) ;; this checks spacing between met1-over - met1-over
drc( met1_over met1_stdcell sep < 0.1 ) ;; this ichecks spacing between met1-over and met1-stdcell
)



* All the code above is untested, just some ideas :) *

Hope this helps,

Stéphane
 

Welcome to EDABoard.com

Sponsor

Back
Top