Assura RCX and blackBoxing

Guest
This is a solution from sourcelink, has anyone gotten it to work? Im
trying to run blackBox RCX . There are cell dependencies so an
extract BB will fail LVS.

Thanks

Rick


http://sourcelink.cadence.com/en/search/DisplayHtmlDoc.jhtml;jsessionidsl=2AEWE3VGNHPOLLA0BEBCFEQ?param1=http://sourcelink.cadence.com/docs/db/kdb/2006/May/11245184.html?param2=null?param3=Solutions?param4=11245184?param5=/software/cadence/sldocs/db/kdb/2006/May/11245184.html@en_col?param7=Using%20Black%20box%20for%20%3Cb%3ERCX%3C/b%3E%20extracted%20views.

Using Black box for RCX extracted views.

Error Message:
None

Problem statement:
I create a black box extracted view and the black box cell became a
layout view
which does not work in the hierarchy editor.

How do I use Black box and create an extracted view which will allow
me to switch in the
schematic for the black boxed item?

How do I switch in a schematic view inside an extracted view using
RCX?

Solution:
There are 3 modes you can use for RCX extraction:

a) flat
b) hrcx
c) blackbox

However, if you want to be able to use the hierarchy editor for
switching in a level of the
circuit below the topcell, neither flat or HRCX will work. Flat of
course will have
transistor representations for the particular block and HRCX, while
hierarchical is
the hierarchy defined by choice of the RCX tool and not necessarily
matching the
symbol you want to switch in.

The following skill code has been used to allow you to use LVS/RCX
blackboxing for the
lower level cell. The default returned instance for that cell in RCX
is a layout
view.

This is because RCX does not have reference to the symbol and its
busses nor does it have
visibility into the netSets (or inheritance) that is used.

This skill routine tries to figure out what symbols busses and netSets
are available and
attempts to match those with the instance reference created by the RCX
extraction.

To use this procedure read about the ?callProc command of the
rcxParameters section.
Call this procedure using that method. The procedure will report
netSets and bus
connections as part of its output. Review that and review the
extracted view for
valid connectivity to the symbols.

Make sure the cds.lib file has visibility into your topcell schematic
and the symbol to
be inducted to the extracted view.

procedure( avExtractedCellViewCallProc( cvID )
;provided without warranty, you must validate its use yourself

schID = dbOpenCellViewByType(cvID~>libName cvID~>cellName
"schematic")

foreach( inst cvID~>instances
if(inst~>viewName == "layout" then
printf("Beginning Cell Replacement for %s\n" inst~>name)
conn_list = nil
xy=inst~>xy
ll = car(inst~>bBox)
ur = cadr(inst~>bBox)
xy=list( xCoord(ll) + (xCoord(ur) - xCoord(ll)) / 2.0
yCoord(ll) + (yCoord(ur) - yCoord(ll)) / 2.0 )
instName = inst~>name
cellName = inst~>cellName
libName = inst~>master~>libName
foreach(conn inst~>instTerms
conn_list=append1(conn_list list(conn~>name
conn~>net~>name))
)
dbDeleteObject(inst)
newInst = dbCreateInstByMasterName(cvID libName cellName
"symbol"
instName xy "R0")

dbSymbol = dbOpenCellViewByType(libName cellName
"symbol")

dupstop = nil
foreach(instRef dbSymbol~>instRefs
foreach(prop instRef~>prop
if(prop~>valueType == "netSet" && setof(item
dupstop
item==prop~>name) == nil then
dupstop = append1(dupstop prop~>name)
dbCreateProp(newInst prop~>name
prop~>valueType prop~>value)

printf("copy prop from %s named %s with value %s
\n"
instRef~>name prop~>name prop~>value)
)
)
)
foreach(term dbSymbol~>terminals
splitBus = parseString(term~>name "<:>")
if(length(splitBus) == 1 then
conn_pair = setof(item conn_list
car(item)==term~>name)
netName = cadar(conn_pair)
printf(" Connect a scalar net %s to " term~>name)
print(
netName) printf("\n")
net = dbMakeNet(cvID netName)
xx=dbCreateConnByName(net newInst term~>name)

else
printf(" Gather and connect a bus %s\n" term~>name)
primeNet = car(splitBus)
left = evalstring(cadr(splitBus))
right = evalstring(caddr(splitBus))
if(left > right then inc=-1 else inc=1)
inx=left-inc
conn_string=""
while(inc == 1 && inx < right || inc!=1 && inx >
right
inx=inx+inc
subNet=sprintf(x "%s<%d>" primeNet inx)
conn_pair = setof(item conn_list
car(item)==subNet)
if(conn_pair == nil then
netname = "nil"
else
netName = cadar(conn_pair)
)
conn_string=sprintf(x "%s,%s" conn_string
netName )
)
conn_string = substring(conn_string 2)
printf(" connect in order of %s\n" conn_string)
netList = dbMakeNet(cvID, conn_string)
ConnByName = dbCreateConnByName(netList newInst
term~>name)

)
)
dbClose(dbSymbol)
printf("\n")
)
)
dbClose(schID)
)
 

Welcome to EDABoard.com

Sponsor

Back
Top