启动icfb加载指定目录所有skill[ile支持]

编程
cdsinit, skill, autoLoad, virtuoso, icfb
0 字 / 约 0 分钟

背景

为了保护自己的原创,谈不上私心。

随h着写过的skill程序越来越多,每次启动 virtuoso 都需要手动load,而且分布在不同的目录, 有不同的版本,明显不符合脚本控的习惯 所以写一个能在 virtuoso 启动时自动递归加载 指定目录 的所有skill脚本,实现所谓 自动巡航

改动

  1. 如果有 *.il 直接 load
  2. 如果是 *.ile , load 时添加密码
  3. 默所有密码 ==chiplayout.net == 代码如下
cadence
/***********************************************
    > File Name: autoLoadAllUsefullSkill.il
    > Author:    chiplayout.net
    > Mail:      admin@chiplayout.net
    > Create Time: Thu Sep 17 22:51:12 2025
    > Description: 
***********************************************/
procedure( autoLoadAllUsefullSkill(@optional (dir "/root/chiplayout.net/skill/v1.251215"))
  prog((fullPath ilList)
    fullPath = simplifyFilename(dir)
    unless(isDir(fullPath)
      error("autoLoadAllUsefullSkill: <%s> is not a directory\n" fullPath))
    procedure(TraverseDir(d)
      prog((entries f)
        entries = remove(".." remove("." getDirFiles(d)))
        ;; start load current directory *.il
        foreach( x setof(file entries rexMatchp("\\.il$" file)) 
        foreach( x setof(file entries rexMatchp("\\.il$" file)||rexMatchp("\\.ile$" file)) 
          f= buildString(list(d x) "/")
          printf("LOAD  %s\n" f)
          (load f) 
		  case(rexMatchp("\\.ile$" f) 
           (t (load f "chiplayout.net")) 
           (nil (load f)) 
          ) 
        )
        ;; End load current directory *.il
        foreach(x setof(file entries isDir(buildString(list(d file) "/")))
          TraverseDir(buildString(list(d x) "/")))
      )
    ) ;; end TraverseDir
    TraverseDir(fullPath)
    printf("=== All Skill scripts under <%s> loaded. ===\n" fullPath)
    t
  )
)