⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setlayout.il

📁 cadence 自动增加层和删除层的程序
💻 IL
📖 第 1 页 / 共 4 页
字号:
   ;			Add/Sub layeout Designators auto crossection
;	  	-------------------------------------------
 

;==================================================================
;			Main Function
;==================================================================
axlCmdRegister("auto crossection" 'LX_Set_layout)
defun( LX_Set_layout ()
    SL_SetState_Form_Ptr  = nil
    SL_SetState_Form_Data = nil
         when(axlOKToProceed()
           when(  _SL_SetState_Form_Creat()
                  _SL_SetState_Form_Display()
               );end-when
         );end-when
);end-defun LX_Set_layout 
;==================================================================
;			_SL_SetState_Form_Creat ()
;==================================================================
(defun _SL_SetState_Form_Creat ()
prog( ()
   form_file = outfile("sl_cn.form")
   fprintf( form_file "FILE_TYPE = FORM_DEFN VERSION=2\nFORM\nFIXED\n")
   fprintf( form_file "PORT 48 28                                  \n")
   fprintf( form_file "HEADER \"Set Layout Cross Section\"         \n")
   fprintf( form_file "TILE                                        \n")
   fprintf( form_file "TEXT \"s--signal g--ground p--power For example:The 4 layers input s g p s\"       \n")
   fprintf( form_file "TLOC 1 0                                    \n")
   fprintf( form_file "ENDTEXT                                     \n")
   fprintf( form_file "TEXT \"Please Input Layer_state:\"          \n")
   fprintf( form_file "TLOC 2 2                                    \n")
   fprintf( form_file "ENDTEXT                                     \n")
   fprintf( form_file "FIELD laystate                              \n")
   fprintf( form_file "FLOC 21 2                                   \n")
   fprintf( form_file "STRFILLIN 23 28                             \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "TEXT \"Current layer:\"                     \n")
   fprintf( form_file "TLOC 2 4                                    \n")
   fprintf( form_file "ENDTEXT                                     \n")
   fprintf( form_file "FIELD current_layer                         \n")
   fprintf( form_file "FLOC 4 6                                    \n")
   fprintf( form_file "LIST \"\" 42 8                              \n")
   fprintf( form_file "OPTIONS sort                                \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "FIELD rename_on                             \n")
   fprintf( form_file "FLOC 4 22                                   \n")
   fprintf( form_file "CHECKLIST \"Selected ,will rename\"         \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "FIELD add                                   \n")
   fprintf( form_file "FLOC 5 24                                   \n")
   fprintf( form_file "MENUBUTTON \"Add\" 8 4                      \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "FIELD del                                   \n")
   fprintf( form_file "FLOC 20 24                                  \n")
   fprintf( form_file "MENUBUTTON \"Delete\" 8 4                   \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "FIELD cancel                                \n")
   fprintf( form_file "FLOC 35 24                                  \n")
   fprintf( form_file "MENUBUTTON \"Exit\" 8 4                     \n")
   fprintf( form_file "ENDFIELD                                    \n")
   fprintf( form_file "ENDFIELD\n")
   fprintf( form_file "ENDTILE                                     \n")
   fprintf( form_file "ENDFORM                                     \n")
   close( form_file )
   if( isFile("sl_cn.form") then
        return( t )
   else
        axlMsgPut("ERROR 01: Unable to Open .form file")
        return( nil )
   );end-if
   );end_prog
) ; end _SL_SetState_Form_Creat
;==================================================================
;			_SL_SetState_Form_Display ()
;==================================================================
defun( _SL_SetState_Form_Display ()
prog( ()
let( ( form )
   form = axlFormCreate( (gensym) "sl_cn.form" '(se outer) '_SL_State_CallBack t)
   SL_SetState_Form_Ptr = form
 if( (SL_SetState_Form_Data == nil) then
   setq( SL_SetState_Form_Data t)
   laystate = strcat("")
   rename_on = nil
   axlFormSetField( form "laystate" laystate)
   putprop( SL_SetState_Form_Data laystate 'laystate)
   _LX_Changname()
   axlFormSetField(form "current_layer" dislayer_list)
   axlFormDisplay( form )
 );end-if
);end-let
);end-prog
);end-defun _SL_SetState_Form_Display
;==================================================================
;			 _SL_State_CallBack()
;==================================================================
defun( _SL_State_CallBack (form)
prog( ()
    case( form->curField
         ("laystate"	
            axlMsgPut("Enter setup of layer .")
            laystate = form->curValue
         t)   
         ("rename_on"
            axlMsgPut("Enter setup of layer .")
            rename_on = form->curValue
            if(rename_on==t
               then
               _LX_del_rename()
               );end_if   
            axlFormListDeleteAll(form "current_layer")
            _LX_Changname()
            axlFormSetField(form "current_layer" dislayer_list)
            axlFormSetField(form "current_layer" nil)
            _LX_CreatCam()
            _LX_CreatClp()
         t)   
         ("add"
            plag=0
            plag=_LX_SL_ADD(laystate)
            if(plag!=1 
               then 
                   axlFormListDeleteAll(form "current_layer")
                   ;layerlist=axlGetParam("paramLayerGroup:etch")->groupMembers
                   ;foreach( selectlayer layerlist (axlFormSetField form "current_layer" selectlayer))
                   _LX_Changname()
                   axlFormSetField(form "current_layer" dislayer_list)
                   axlFormSetField(form "current_layer" nil)
                   laystate=""
                   laystate = form->curValue
                   _LX_CreatCam()
                   _LX_CreatClp()
                   ;_LX_SL_Cancel()
                   _LX_cancel_caminit()
                   axlMsgPut("Add Done")
                );end_if   
         t)
         ("current_layer"	
            axlMsgPut("selected layer can be delete.")
            del_layer = form->curValue
         t)            
        ("del"
            _LX_SL_delete(del_layer)
            if(rename_on==t
               then
               _LX_del_rename()
               );end_if   
            _LX_CreatCam()
            axlFormListDeleteAll(form "current_layer")
            ;layerlist=axlGetParam("paramLayerGroup:etch")->groupMembers
            ;foreach( selectlayer layerlist (axlFormSetField form "current_layer" selectlayer))
            _LX_Changname()
            axlFormSetField(form "current_layer" dislayer_list)
            axlFormSetField(form "current_layer" nil)
            _LX_CreatCam()
            _LX_CreatClp()
            ;_LX_SL_Cancel()
            axlMsgPut("Delete Done")
         t)   
        ("cancel" 
            _LX_CreatCam()
            _LX_CreatClp()
            _LX_SL_Cancel()
         nil)
         

	);end-case
    );end_prog	
);end-defunction _SL_State_CallBack()
;==================================================================
;			 _LX_SL_Cancel()
;==========================================================================
defun( _LX_SL_Cancel ()
        when( isFile( "sl_cn.form" )  deleteFile("sl_cn.form"))
        when( SL_SetState_Form_Ptr axlFormClose( SL_SetState_Form_Ptr ))
        axlClearSelSet()
        axlCancelEnterFun()
);end-defun _LX_SL_Cancel
 
;==========================================================================
;                           _LX_SL_ADD()
;==========================================================================
;defun( _LX_SL_ADD (statepara)
;prog( ()
;   _LX_PDGETC_ERR()
;;-------------add layer---------------------
;   layernum=1
;   IsBottom=0
;   while(IsBottom==0
;        i=1
;        if(next_layer=car(all_layer)!=" "
;           then
;              layernum=layernum+1
;              all_layer=cdr(all_layer)
;              if(all_layer==nil
;                 then
;                    IsBottom=1
;                );end_if
;           else
;             loop=1
;             new_Layer_name=nil
;             new_layer_list=nil
;             while(loop==1
;                  i=i+1
;                  next1_layer=nthelem(i all_layer)
;                  layernum=layernum+1
;                  when(next1_layer=="s" 
;                       if(layernum<10
;                          then
;                            sprintf(new_Layer_name,"%s%d",layernum,"is0",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list)
;                          else
;                            sprintf(new_Layer_name,"%s%d",layernum,"is",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list) 
;                          );end_if
;                       );end_when
;                  when(next1_layer=="g" 
;                       if(layernum<10
;                          then
;                            sprintf(new_Layer_name,"%s%d","gnd0",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list)
;                          else
;                            sprintf(new_Layer_name,"%s%d","gnd",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list) 
;                          );end_if
;                       );end_when 
;                  when(next1_layer=="p" 
;                       if(layernum<10
;                          then
;                            sprintf(new_Layer_name,"%s%d","power0",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list)
;                          else
;                            sprintf(new_Layer_name,"%s%d","power",layernum)
;                            new_layer_list=cons(new_Layer_name new_layer_list) 
;                          );end_if
;                       );end_when                    
;                  ;把new_layer放入new_layer_list用when语句
;                  i=i+1
;                  next2_layer=nthelem(i all_layer)
;                  if(next2_layer!=" "
;                     then
;                        loop=0
;                        layernum=layernum+1
;                        i=i+1
;                        next3_layer=nthelem(i all_layer)
;                        if(next3_layer==nil
;                           then
;                              need_layer_name="BOTTOM"
;                              IsBottom=1
;                           else
;                              when(next2_layer=="s" 
;                                   if(layernum<10
;                                      then
;                                        sprintf(need_layer_name,"%s%d","art0",layernum)
;                                      else
;                                        sprintf(need_layer_name,"%s%d","art",layernum)
;                                      );end_if
;                                   );end_when
;                              when(next2_layer=="g" 
;                                   if(layernum<10
;                                      then
;                                        sprintf(need_layer_name,"%s%d","gnd0",layernum)
;                                      else
;                                        sprintf(need_layer_name,"%s%d","gnd",layernum)
;                                      );end_if

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -