This is very odd. You've taken the code in this post and changed the default value of cv in a way that doesn't make a great deal of sense. You've then got a strange mix of print statements and OCEAN print statements to produce a report. I also have no idea why you're using hiRegTimer to exit the script. If you are trying to find the the highest metal layer in all layout views in a library, then something like this would work: /* abHighestLayerInAllCells.il Author A.D.Beckett Group Custom IC (UK), Cadence Design Systems Ltd. Language SKILL Date Apr 06, 2020 Modified By Produce a report of the highest metal layer for each cell in a library. Uses abGetHighestLayer *************************************************** SCCS Info: @(#) abHighestLayerInAllCells.il 04/06/20.18:23:51 1.1 */ /*************************************************************************** * * * abHighestLayerInAllCells(libName reportFile) * * * * Produce a report listing the highest metal layer in each layout cellView * * in a library * * * ***************************************************************************/ procedure (abHighestLayerInAllCells(libName reportFile) let ((lib fout masterFile cv highest) fout= outfile (reportFile) unless (fout error ( "Cannot write to file %L\n" reportFile) ) lib=ddGetObj(libName) foreach (cell lib~>cells foreach (view cell~>views masterFile=ddGetObj(libName cell~>name view~>name "*" ) when (masterFile && ddMapGetFileViewType(masterFile)== "maskLayout" cv= dbOpenCellViewByType(libName cell~>name view~>name) when (cv highest=abGetHighestLayer(?cv cv) when (highest fprintf (fout "%s %s %s\n" cell~>name view~>name highest ) ) dbClose(cv) ) ) ) ) close (fout) ) )
↧