
启动icfb加载指定目录所有skill[ile支持]
编程
cdsinit, skill, autoLoad, virtuoso, icfb
0 字 / 约 0 分钟
背景
为了保护自己的原创,谈不上私心。
随h着写过的skill程序越来越多,每次启动 virtuoso 都需要手动load,而且分布在不同的目录, 有不同的版本,明显不符合脚本控的习惯 所以写一个能在 virtuoso 启动时自动递归加载 指定目录 的所有skill脚本,实现所谓 自动巡航
改动
- 如果有
*.il直接 load - 如果是
*.ile, load 时添加密码 - 默所有密码 ==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
)
)