;================================================================================ ; Robert Johnstone ; Simon Fraser University ; ; Copyright 2000,2002 Robert W. Johnstone ;-------------------------------------------------------------------------------- ; 2002/06/03 ; - modified because interface to dbCreateRoundRect changed ; 2000/07/01 ; - created unless( boundp( 'admLibraryName ) warn( "Setting the destination library to default value of ADM" ) admLibraryName = "ADM" ) pcDefinePCell( list( ddGetObj(admLibraryName) "pin" "layout" ) ; end of list for first argument ( ( width 20.0 ) ( height 20.0 ) ( chamfer 0.0 ) ) ; end of parameter list prog( ; declare variables ( pcTechFile pcShape pcNet rodObj p2m_enclosure p2v_enclosure p1p2_enclosure p1a1_enclosure m_minWidth v_minWidth w h tmp ) ; load tech file rules pcTechFile = techGetTechFile( pcCellView ) p2m_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY2" "METAL" ) unless( p2m_enclosure warn("minEnclosure rule for POLY2->METAL not set") ) p2v_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY2" "P1P2VIA" ) unless( p2v_enclosure warn("minEnclosure rule for POLY2->P1P2VIA not set") ) p1p2_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY1" "POLY2" ) unless( p1p2_enclosure warn("minEnclosure rule for POLY1->POLY2 not set") ) p1a1_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY1" "ANCHOR1" ) unless( p1a1_enclosure warn("minEnclosure rule for POLY1->ANCHOR1 not set") ) m_minWidth = techGetSpacingRule( pcTechFile "minWidth" "METAL" ) unless( m_minWidth warn("minWidth rule for METAL not set") ) v_minWidth = techGetSpacingRule( pcTechFile "minWidth" "P1P2VIA" ) unless( v_minWidth warn("minWidth rule for P1P2VIA not set") ) ; check dimensions again metal size tmp = p1p2_enclosure*2 + p2m_enclosure*2 width = if( (width-tmpparamVal + 2*SPCInfo->increment ) ) rodAssignHandleToParameter( ?parameter "height" ?rodObj rodObj ?handleName list( "lowerCenter" "upperCenter" ) ?displayName "height" ?stretchDir "y" ?userFunction lambda( (SPCInfo) SPCInfo->paramVal + 2*SPCInfo->increment ) ) ; Create the instNamePrefix property dbReplaceProp( pcCellView "instNamePrefix" "string" "pin" ) ; set version string dbReplaceProp( pcCellView "version" "string" "1.3.2" ) ; body SKILL code returns value t return(t) ) ; end of body-of-SKILL-code prog ) ; ; end of pcDefinePCell