Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
VirtualKeyboardSample
/
SKILL
:
original_path.il
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
procedure(InitLib() LibList = '("tsmc18" "B" "C") when(LibSelect==nil LibSelect=car(LibList) ) case( LibSelect ("tsmc18" MetalList = '("METAL1" "METAL2" "METAL3" "METAL4") ) ("B" MetalList = '("M1" "M2" "M3" "M4") ) ("C" MetalList = '("A1" "A2" "A3") ) );case M1=car(MetalList) M2=cadr(MetalList) M3=caddr(MetalList) M4=cadddr(MetalList) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(creation_path() PathList = enterPath( ?prompts list( "Enter the first point:" "Enter the next point:" ) ?points LastPoint ;the start point for the next path ;?doneProc "pathDone" ?wantPoints 2 ?pathWidth float(Width) ?pathStyle "VariableEnd" ?beginExtent float(Width_Ext) ?endExtent float(Width_Ext) ) if( abs(caar(PathList)-caadr(PathList))>0.001 then Layer = Layer_H Width = Width_H Width_Ext = Width_V/2 if( caar(PathList)-caadr(PathList) < -0.001 then Direction_2Vias = "H_L" else Direction_2Vias = "H_R" );if else Layer = Layer_V Width = Width_V Width_Ext = Width_H/2 if( cadar(PathList)-cadadr(PathList) < -0.001 then Direction_2Vias = "V_B" else Direction_2Vias = "V_T" );if );if if( form_route->SameWidth->value == t then APath=dbCreatePath(CV Layer PathList Width "extendExtend") else APath=dbCreatePath(CV Layer PathList Width "varExtendExtend") APath~>beginExt = Width_Ext APath~>endExt = Width_Ext );if StartPoint = car(PathList) LastPoint = last(PathList) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(AddAVia(ViaCenter) printf(">>> %L \n" ViaCenter) x = car(ViaCenter) y = cadr(ViaCenter) case(Direction_2Vias ("H_L" printf("A\n") angle = "R0" row = 2 y = y + 0.26 ) ("H_R" printf("B\n") printf("C\n") angle = "R0" row = 2 y = y - 0.26 ) ("V_T" printf("C\n") angle = "R0" row = 2 y = y - 0.26 ) ("V_B" printf("D\n") angle = "R0" row = 2 y = y + 0.26 ) ) xy = list(x y) cv = geGetEditCellView() angle = "R0" viaParams = list(list("cutRows" row) list("cutColumns" col)) dbCreateVia(cv MasterCV xy angle viaParams) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(route() CV = geGetEditRep(hiGetCurrentWindow()) leSetFormSnapMode("orthogonal") when(LibSelect==nil || Layer_H==nil || Layer_V==nil || Width_H==nil || Width_V==nil LibSelect = hiGetCurrentForm()->Library->value Layer_H = hiGetCurrentForm()->MetalField_H->value Layer_V = hiGetCurrentForm()->MetalField_V->value if(form_route->SameWidth->value == nil then Width_H = hiGetCurrentForm()->MetalWidth_H->value Width_V = hiGetCurrentForm()->MetalWidth_V->value else Width_H = Width_V = hiGetCurrentForm()->Metal_Width->value ) ) LastPoint = '() Width = Width_H Width_Ext = Width_V/2 row = 1 col = 1 via_techno = list("M2_M1" "M3_M2" "M4_M3") cv = geGetEditCellView() tech = techGetTechFile(cv) viaParams = list(list("cutRows" row) list("cutColumns" col)) ;via1 = techFindViaDefByName(tech nth(0 via_techno) ) ;via2 = techFindViaDefByName(tech nth(1 via_techno) ) n=0 declare(PathLayer[20]) while( n<20 creation_path() PathLayer[n] = APath~>layerName ViaCenter = StartPoint when( n > 0 cond( ((PathLayer[n]==M1&&PathLayer[n-1]==M2)||(PathLayer[n]==M2&&PathLayer[n-1]==M1) MasterCV = techFindViaDefByName(tech nth(0 via_techno) ) AddAVia(ViaCenter) ) ((PathLayer[n]==M2&&PathLayer[n-1]==M3)||(PathLayer[n]==M3&&PathLayer[n-1]==M2) MasterCV = techFindViaDefByName(tech nth(1 via_techno) ) AddAVia(ViaCenter) ) ((PathLayer[n]==M4&&PathLayer[n-1]==M3)||(PathLayer[n]==M3&&PathLayer[n-1]==M4) MasterCV = techFindViaDefByName(tech nth(2 via_techno) ) AddAVia(ViaCenter) ) ((PathLayer[n]==M1&&PathLayer[n-1]==M3)||(PathLayer[n]==M3&&PathLayer[n-1]==M1) MasterCV = techFindViaDefByName(tech nth(0 via_techno) ) AddAVia(ViaCenter) MasterCV = techFindViaDefByName(tech nth(1 via_techno) ) AddAVia(ViaCenter) ) ((PathLayer[n]==M2&&PathLayer[n-1]==M4)||(PathLayer[n]==M4&&PathLayer[n-1]==M2) MasterCV = techFindViaDefByName(tech nth(1 via_techno) ) AddAVia(ViaCenter) MasterCV = techFindViaDefByName(tech nth(2 via_techno) ) AddAVia(ViaCenter) ) ((PathLayer[n]==M1&&PathLayer[n-1]==M4)||(PathLayer[n]==M4&&PathLayer[n-1]==M1) MasterCV = techFindViaDefByName(tech nth(0 via_techno) ) AddAVia(ViaCenter) MasterCV = techFindViaDefByName(tech nth(1 via_techno) ) AddAVia(ViaCenter) MasterCV = techFindViaDefByName(tech nth(2 via_techno) ) AddAVia(ViaCenter) ) );cond );when n++ );while leSetFormSnapMode("diagonal") ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(SameWidthP() if( form_route->SameWidth->value == t then form_route->Metal_Width->enabled = t form_route->Metal_Width->editable = t form_route->MetalWidth_H->enabled = nil form_route->MetalWidth_H->editable = nil form_route->MetalWidth_V->enabled = nil form_route->MetalWidth_V->editable = nil else form_route->Metal_Width->enabled = nil form_route->Metal_Width->editable = nil form_route->MetalWidth_H->enabled = t form_route->MetalWidth_H->editable = t form_route->MetalWidth_V->enabled = t form_route->MetalWidth_V->editable = t ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(ChangeLib() LibSelect = form_route->Library->value InitLib() form_route->MetalField_H->choices = MetalList form_route->MetalField_H->value = M1 form_route->MetalField_V->choices = MetalList form_route->MetalField_V->value = M2 ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(gui_route() let((Library MetalField_H MetalField_V MetalWidth_H MetalWidth_V Metal_Width MyLabel form_route SameWidth PathList Layer Width Width_Ext APath StartPoint LastPoint ViaOrigin Direction_2Vias LibList MetalList CV LibSelect PathLayer ViaCenter MasterCV Width_H Width_V Layer_H Layer_V M1 M2 M3 M4 ) InitLib() Library = hiCreateCyclicField( ?name 'Library ?prompt "Library: " ?choices LibList ;?value car(LibList) ?defValue car(LibList) ?callback "ChangeLib()" ) MetalField_H = hiCreateCyclicField( ?name 'MetalField_H ?prompt "Horizontal Metal: " ?choices MetalList ;?value M1 ?defValue M1 ?callback "Layer_H = MetalField_H->value" ) MetalField_V = hiCreateCyclicField( ?name 'MetalField_V ?prompt "Vertical Metal: " ?choices MetalList ;?value M2 ?defValue M2 ?callback "Layer_V = MetalField_V->value" ) MetalWidth_H = hiCreateFloatField( ?name 'MetalWidth_H ?prompt "Horizontal Width: " ?range '(0.001 1000) ;?value 1.0 ?defValue 1.0 ?enabled nil ?editable nil ?callback "Width_H = MetalWidth_H->value" ) MetalWidth_V = hiCreateFloatField( ?name 'MetalWidth_V ?prompt "Vertical Width: " ?range '(0.001 1000) ;?value 1.0 ?defValue 1.0 ?enabled nil ?editable nil ?callback "Width_V = MetalWidth_V->value" ) SameWidth = hiCreateBooleanButton( ?name 'SameWidth ?buttonText "Same Width" ;?value t ?defValue t ?buttonLocation 'right ?callback "SameWidthP()" ) Metal_Width = hiCreateFloatField( ?name 'Metal_Width ?prompt "Metal Width: " ?range '(0.001 1000) ;?value 1.0 ?defValue 1.0 ?enabled t ?editable t ?callback "Width_H = Width_V = Metal_Width->value " ) MyLabel = hiCreateLabel( ?name 'MyLabelField ?labelText "Create by Moi" ?justification 'right ?enabled nil ?invisible t ) form_route = hiCreateAppForm( ?name 'form_route ?formTitle " Routing Advanced " ?callback "route()" ?fields list( list(Library 20:10 100:30 60 ) list(MetalField_H 20:50 180:30 110 ) list(MetalField_V 210:50 180:30 110 ) list(SameWidth 20:90 180:30 110 ) list(Metal_Width 210:90 180:30 110 ) list(MetalWidth_H 20:130 180:30 110 ) list(MetalWidth_V 210:130 180:30 110 ) list(MyLabel 250:170 150:25 ) ) ?unmapAfterCB t ) hiDisplayForm( form_route ) );let ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; hiSetBindKey("Layout" "F8" "gui_route()")