;================================================================================ ; Robert Johnstone ; Simon Fraser University ; ; Last Modified: 2000/11/29 ; ; Copyright 2000 Robert W. Johnstone ;-------------------------------------------------------------------------------- unless( boundp( 'admLibraryName ) warn( "Setting the destination library to default value of ADM" ) admLibraryName = "ADM" ) pcDefinePCell( list( ddGetObj(admLibraryName) "comb_linear" "layout" ) ; end of list for first argument ( ( fingers 8 ) ( actuation 10.0 ) ( overlap 10.0 ) ( yoke_width 0.0 ) ( rotor_width 0.0 ) ( dimples 0 ) ) ; end of parameter list prog( ( pcTechFile p0p1_enclosure p1_minSpacing p1_minWidth p1_nomWidth p1a1_enclosure p1d_enclosure a1_nomWidth d_nomWidth rotor_length tmp x y pts ) ; load tech file rules pcTechFile = techGetTechFile( pcCellView ) p0p1_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY0" "POLY1" ) unless( p0p1_enclosure then warn("minEnclosure rule for POLY0->POLY1 not set") ) p1_minSpacing = techGetSpacingRule( pcTechFile "minSpacing" "POLY1" ) unless( p1_minSpacing then warn("minSpacing rule for POLY1 not set") ) p1_minWidth = techGetSpacingRule( pcTechFile "minWidth" "POLY1" ) unless( p1_minWidth then warn("minWidth rule for POLY1 not set") ) p1_nomWidth = techGetSpacingRule( pcTechFile "nomWidth" "POLY1" ) unless( p1_nomWidth then warn("nomWidth rule for POLY1 not set") ) p1a1_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY1" "ANCHOR1" ) unless( p1a1_enclosure then warn("minEnclosure rule for POLY1->ANCHOR1 not set") ) p1d_enclosure = techGetOrderedSpacingRule( pcTechFile "minEnclosure" "POLY1" "DIMPLE" ) unless( p1d_enclosure then warn("minEnclosure rule for POLY1->DIMPLE not set") ) a1_nomWidth = techGetSpacingRule( pcTechFile "nomWidth" "ANCHOR1" ) unless( a1_nomWidth then warn("nomWidth rule for ANCHOR1 not set") ) d_nomWidth = techGetSpacingRule( pcTechFile "nomWidth" "DIMPLE" ) unless( d_nomWidth then warn("nomWidth rule for DIMPLE not set") ) ; check parameters rotor_width = if( (rotor_width0 && rotor_width1) then tmp = ( rotor_length - 2*p1d_enclosure - d_nomWidth ) / (dimples-1) for( lp 0 dimples-1 x = -rotor_length*0.5 + p1d_enclosure x = x + lp * tmp dbCreateRect( pcCellView "DIMPLE" list( x:-d_nomWidth*0.5 x+d_nomWidth:d_nomWidth*0.5 ) ) ) else if( (dimples>0) then tmp = d_nomWidth*0.5 dbCreateRect( pcCellView "DIMPLE" list( -tmp:-tmp tmp:tmp )) ) ) ; Create the instNamePrefix property dbReplaceProp( pcCellView "instNamePrefix" "string" "comb_linear" ) ; set version string dbReplaceProp( pcCellView "version" "string" "1.0.1" ) ; body SKILL code returns value t return(t) ) ; end of body-of-SKILL-code prog ) ; ; end of pcDefinePCell