/* CCSfindWiredInhConnPins.il Group Custom IC, Cadence Design Systems Language SKILL Revision No. 1.1 Date Created Oct 1, 2009 Last Modified Oct 16, 2009 Tested in IC5141 Lint score 100 (best is 100) Description: A SKILL function to find cases where an instance pin (terminal) that has an inherited connection net expression is also connected with a wire in a schematic. The code registers the checking function to be automatically called using a post-check trigger, once the built-in checks are complete, this function is called afterwards. Usage: ;; ensure that the code is loaded in the CIW or through a ;; .cdsinit file, then either invoke directly, or by using ;; the Schematic Check or Check & Save functions CCSfindWiredInhConnPins() *************************************************** SCCS Info: @(#) CCSfindWiredInhConnPins.il 10/16/09.17:57:22 1.1 *********************************************************************** * DISCLAIMER: This code is provided for Cadence customers to use * * with Cadence tools at their own risk. The code may require * * modification to satisfy the requirements of any user. The code and * * any modifications to the code may not be compatible with current or * * future versions of Cadence products. * * THE CODE IS PROVIDED "AS IS" AND WITH NO WARRANTIES, INCLUDING * * WITHOUT LIMITATION ANY EXPRESS OR IMPLIED WARRANTIES OF * * MERCHANTABILITY, FITNESS FOR A PARTICULAR USE OR NON-INFRINGEMENT. * * © 2009 Cadence Design Systems, Inc. All rights reserved. * *********************************************************************** */ procedure(CCSfindWiredInhConnPins(@optional (cv geGetEditCellView()) (numErrs 0) (numWarns 0) "dxx") let( (message pinBBox) ;; iterate over the instances in the cellview, filter terminal pins foreach(inst setof(instNoPin cv~>instances instNoPin~>purpose!="pin") ;; find if the instance has a net expression on the master terminal when(exists(term inst~>instTerms~>term dbGetTermNetExpr(term)) foreach(pin inst~>instTerms ;; find out which pin or pins have overlapping wires ;; first check if this terminal has a net expression when(dbGetTermNetExpr(pin~>term) ;; get the bounding box of the instance pin pinBBox = geTransformUserBBox( car(pin~>term~>pins)~>fig~>bBox inst~>transform ) ;; when this instance pin overlaps a wire when(dbGetOverlaps(cv pinBBox list("wire" "drawing") 0) ;; create the message for the marker, and to print in the CIW sprintf(message strcat("Wire is connected to inherited " "terminal %s on instance %s of cell %s") pin~>name inst~>name inst~>cellName) ;; for the printed message, add the location of the pin printf("%s at %L\n" message centerBox(pinBBox)) ;; increment the number of warnings numWarns++ ;; create a warning marker on the instance terminal geCreateMarkerByBBox(cv "warning" "CCSfindWiredInhConnPins" message "Explicitly wired inherited connection pin" pinBBox ) ); when ); when ); foreach ); when ); foreach ;; feedback any updates to the number of errors and warnings schUpdateUserSRCErrorAndWarn(numErrs numWarns) ); let ); procedure CCSfindWiredInhConnPins ;; register the function to be called as a Schematic Post-Check trigger schRegPostCheckTrigger('CCSfindWiredInhConnPins)