Vous êtes sur la page 1sur 7

procedure(CCScoaxshieldMetal() let( (form) if(boundp('CCScoaxshieldMetalForm) && CCScoaxshieldMetalForm then form = CCScoaxshieldMetalForm else form = CCScreatecoaxShieldMetalForm() ); if when(hiIsForm(form) enterPath( ?

prompts list("Enter points for shielded metal path") ?form form ?points nil ?doneProc "CCScoaxshieldMetalDoneProc" ?addPointProc "CCScoaxshieldMetalPoints" ?delPointProc "CCScoaxshieldMetalPoints" ?pathWidth form->width->value ?alwaysMap t ?cmdName "CCScoaxshieldMetal" ); enterPath ); when the form exists ); let ); procedure CCScoaxshieldMetal procedure(CCScreatecoaxShieldMetalForm() let( (width layer layertop layerbot topvia botvia snap snapModes form cv techId) if(cv = geGetEditCellView(hiGetCurrentWindow()) then if(techId = techGetTechFile(cv) then width = hiCreateFloatField( ?name 'width ?prompt "Width" ?value 1.0 ?range list(0.3 30.0) ?callback "CCSchangecoaxShieldMetalWidth()" ); hiCreateFloatField snapModes = list("orthogonal" "L90XFirst" "L90YFirst") snap = hiCreateCyclicField( ?name 'snap ?choices snapModes ?prompt "Snap mode" ?value car(member(envGetVal("layout" "snapMode") snapModes)) || "orthogonal" ?callback "CCSchangecoaxShieldMetalSnap()" ); hiCreateCyclicField layer = hiCreateLayerCyclicField( techId "Layer" ""

leGetValidLayerList(techId) || list(leGetEntryLayer(techId)) leGetEntryLayer(techId) 'layer ); hiCreateLayerCyclicField layertop = hiCreateLayerCyclicField( techId "Layertop" "" leGetValidLayerList(techId) || list(leGetEntryLayer(techId)) leGetEntryLayer(techId) 'layertop ); hiCreateLayerCyclicField layerbot = hiCreateLayerCyclicField( techId "Layerbot" "" leGetValidLayerList(techId) || list(leGetEntryLayer(techId)) leGetEntryLayer(techId) 'layerbot ); hiCreateLayerCyclicField topvia = hiCreateLayerCyclicField( techId "Topvia" "" leGetValidLayerList(techId) || list(leGetEntryLayer(techId)) leGetEntryLayer(techId) 'topvia ); hiCreateLayerCyclicField botvia = hiCreateLayerCyclicField( techId "Botvia" "" leGetValidLayerList(techId) || list(leGetEntryLayer(techId)) leGetEntryLayer(techId) 'botvia ); hiCreateLayerCyclicField form = hiCreateAppForm( ?name 'CCScoaxshieldMetalForm ?formTitle "CoaxShield Metal" ?formType 'options ?buttonLayout 'HideCancelDef ?fields list( list(width 0:0 100:30 50) list(snap 120:0 100:30 70) list(layer 0:30 200:30 50)

list(layertop 0:90 200:30 70) list(layerbot 0:120 200:30 70) list(topvia 0:150 200:30 70) list(botvia 0:180 200:30 70) ) ); hiCreateAppForm leSetFormSnapMode(form->snap->value) CCScoaxshieldMetalForm = form else error("Could not obtain technology information") ); if the technology information can be obtained else error("Shield metal functions require a cellview to be current") ); if a current cellview exists ); let ); procedure CCScreatecoaxShieldMetalForm procedure(CCSchangecoaxShieldMetalWidth() let( (origWidth) when(boundp('CCScoaxshieldMetalForm) && CCScoaxshieldMetalForm origWidth = CCScoaxshieldMetalForm->width->value CCScoaxshieldMetalForm->width->value = origWidth unless(CCScoaxshieldMetalForm->currentWidth == CCScoaxshieldMetalForm->width>value CCScoaxshieldMetalForm->currentWidth = CCScoaxshieldMetalForm->width>value ); unless changeEnterFun( 'enterPath ?pathWidth CCScoaxshieldMetalForm->width->value ?doneProc "CCScoaxshieldMetalDoneProc" ?points CCScoaxshieldMetalForm->points ?addPointProc "CCScoaxshieldMetalPoints" ?delPointProc "CCScoaxshieldMetalPoints" ?prompts list("Enter points for shielded metal path") ?form CCScoaxshieldMetalForm ); changeEnterFun ); when the form exists ); let ); procedure CCSchangecoaxShieldMetalWidth procedure(CCSchangecoaxShieldMetalSnap() when(boundp('CCScoaxshieldMetalForm) && CCScoaxshieldMetalForm CCScoaxshieldMetalForm->origSnap = leSetFormSnapMode(CCScoaxshieldMetalForm->snap->value) ); when the form exists ); procedure CCSchangecoaxShieldMetalSnap

procedure(CCScoaxshieldMetalPoints(win points "wl") when(windowp(win) CCScoaxshieldMetalForm->points = points ) ); procedure CCScoaxshieldMetalPoints procedure(CCScoaxshieldMetalDoneProc(win done points "wgl") let( ( form ) when(boundp('CCScoaxshieldMetalForm) && CCScoaxshieldMetalForm form = CCScoaxshieldMetalForm if(done then form->currentWidth = nil form->points = nil CCScoaxshieldMetalCB( win->cellView form->width->value CCSgetLPPfromLayerCyclic(form->layer->value) CCSgetLPPfromLayerCyclic(form->layertop->value) CCSgetLPPfromLayerCyclic(form->layerbot->value) CCSgetLPPfromLayerCyclic(form->topvia->value) CCSgetLPPfromLayerCyclic(form->botvia->value) points ) else when(CCScoaxshieldMetalForm->origSnap leSetFormSnapMode(CCScoaxshieldMetalForm->origSnap) ); when ); if done ); when form exists ); let ); procedure CCScoaxshieldMetalDoneProc procedure(CCScoaxshieldMetalCB(cv width layer layertop layerbot topvia botvia points "dfllllll") rodCreatePath( ?cvId cv ?layer layer ?width width ?pts points ?justification "center" ?choppable t ?offsetSubPath list( list( ?layer layer

?justification "left" ?width techGetSpacingRule(techGetTechFile(cv) "minWidth" layer) ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" layer) ?choppable t ) ;end of offset sublist1 list( ?layer layer ?justification "right" ?width techGetSpacingRule(techGetTechFile(cv) "minWidth" layer) ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" layer) ?choppable t );end of offset sublist2 list( ?layer layertop ?justification "center" ?width (width + (2 * techGetSpacingRule(techGetTechFile(cv) "minWidth" layertop)) + (2 * techGetSpacingRule(techGetTechFile(cv) "minSpacing" layertop)) + techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer topvia)) ?choppable t );end of offset sublist3 list( ?layer layerbot ?justification "center" ?width (width + (2 * techGetSpacingRule(techGetTechFile(cv) "minWidth" layertop)) + (2 * techGetSpacingRule(techGetTechFile(cv) "minSpacing" layertop)) + techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer botvia)) ?choppable t );end of offset sublist4 );end of offset sublists ?subRect list( list( ?layer botvia ?width techGetSpacingRule(techGetTechFile(cv) "minWidth" botvia) ?length techGetSpacingRule(techGetTechFile(cv) "minWidth" botvia) ?space techGetSpacingRule(techGetTechFile(cv) "minSpacing" botvia) ?justification "left" ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" botvia) ?beginOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer botvia) ?endOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer botvia) ?gap "distribute"

?choppable t );end of subRect sublist1 list( ?layer ?width ?length ?space botvia) ?justification "right" ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" botvia) ?beginOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer botvia) ?endOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer botvia) ?gap "distribute" ?choppable t );end of subRect sublist2 list( ?layer topvia ?width techGetSpacingRule(techGetTechFile(cv) "minWidth" topvia) ?length techGetSpacingRule(techGetTechFile(cv) "minWidth" topvia) ?space techGetSpacingRule(techGetTechFile(cv) "minSpacing" topvia) ?justification "left" ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" topvia) ?beginOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer topvia) ?endOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer topvia) ?gap "distribute" ?choppable t );end of subRect sublist3 list( ?layer topvia ?width techGetSpacingRule(techGetTechFile(cv) "minWidth" topvia) ?length techGetSpacingRule(techGetTechFile(cv) "minWidth" topvia) ?space techGetSpacingRule(techGetTechFile(cv) "minSpacing" topvia) ?justification "right" ?sep techGetSpacingRule(techGetTechFile(cv) "minSpacing" topvia) ?beginOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer topvia) ?endOffset -techGetOrderedSpacingRule(techGetTechFile(cv) "minEnclosure" layer topvia) ?gap "distribute" botvia techGetSpacingRule(techGetTechFile(cv) "minWidth" botvia) techGetSpacingRule(techGetTechFile(cv) "minWidth" botvia) techGetSpacingRule(techGetTechFile(cv) "minSpacing"

?choppable t );end of subRect sublist4 );end of subRect list of lists ); rodCreatePath ); procedure CCScoaxshieldMetalCB procedure(CCSgetLPPfromLayerCyclic(layCyc "l") parseString( buildString( parseString(cadddr(layCyc) "()") "" ) ) ); procedure CCSgetLPPfromLayerCyclic

Vous aimerez peut-être aussi