Quantcast
Channel: Cadence Custom IC Skill Forum
Viewing all articles
Browse latest Browse all 5101

Get right full path of instance with recursion in schematic

$
0
0

I want to get the full path of specific instance in schematic with the way of recursion.

my core code as below.

procedure(PadHierConnectDeviceinfoCB(cv theform techlib)
let((file outf name wID)
powernet = nil
flag = nil
name = theform~>listbox~>value
powernet = theform~>powernet~>value
when(member(powernet name) flag = t)
;printf("flag:%L\n" flag)
PadHierInfoTbl = makeTable("PadHierInfoTbl" nil)
metalresTbl = makeTable("metalresTbl" nil)
cellnamehierTbl = makeTable("cellnamehierTbl" nil)
file=strcat(cv~>cellName "_PadHierConnectDeviceinfo.log")
outf=outfile(file)
foreach(netname name
if(wID = geValidateWindow(geGetEditCellViewWindow(cv)) then
geAddNetProbe(wID list("y0" "drawing") strcat(geGetInstHier(wID) "/" netname))
else artWarn("invalid windowID,probe is failed\n")
);;if
fprintf(outf "\n**********PadName:%L*****CurrentTopView:%L*****CreateTime:%L**********\n" netname cv~>cellName getCurrentTime())
fprintf(outf "%-35s %-20s %-15s %-35s\n" "cellName" "TermConnectPad" "total W&R" "instName")
traverseCvCB(cv netname techlib outf))
close(outf)
view(file)
)
)

procedure(traverseCvCB(cv netname techlib outf)
let((nextCellView net insts netnames unchecklib)
PadHierInfoTbl = makeTable("PadHierInfoTbl" nil)
dulcell = makeTable("dulcell" nil)
unchecklib = list("basic" "analogLib" "sheet_cps" "sheet_61" "US_8ths")
;println(cv~>cellName)
unless(net = dbFindNetByName(cv netname)
artWarn("cannt find net:%L in currentview:%L\n" netname cv~>cellName)
)
;printf("netname:%L\n" net~>name)
netnames = uniquelist(net~>instTerms~>term~>name)
insts = net~>instTerms~>inst
foreach(netname netnames
foreach(master insts
when(member(netname master~>instTerms~>name)
if(master~>libName == techlib||master~>libName =="analogLib" then
unless(PadHierInfoTbl[master]
PadHierInfoTbl[master]=t
;printf("master:%L\n" master~>cellName)
reportCB(techlib master net~>name outf)
);;unless
else
;printf("cv:%L\n" master~>name)
unless(member(master~>libName unchecklib)
nextCellView = dbOpenCellViewByType(master~>libName master~>cellName "schematic" nil "r")
unless(PadHierInfoTbl[nextCellView]
PadHierInfoTbl[nextCellView]=t
traverseCvCB(nextCellView netname techlib outf)
);;unless
);;unless
);;if
);;when
);;for
);;foreach
);let
) ;proc

there are some code in the subProcedure "reportCB"  to find specific instance and report it.

in last week I try many ways ,but I cannot get the right path. 

OR is there any function can open it ? just like "show instance" in probe assistance,like below. 

If it is ok, should I use hiCreateReportField?

I am use "sub-version  IC6.1.7-64b.500.21 ".


Viewing all articles
Browse latest Browse all 5101

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>