将我实测的Cadence IC618版本与Cadence IC617版本,踩过Skill脚本加载出现报错、函数呈现未定义、菜单显示存在异常这样的坑。
加载Skill脚本的正确路径
好多初学者将脚本文件放置于目录后就直接启动软件,然而却发觉菜单栏压根没有任何改变,在此务必清晰点明: Skill 脚本并非放入就能自动运行的,而是需要先对软件环境变量开展检查。
具体实施步骤为,开启CIW窗口,输入getShellEnvVar(“CDS_SCRIPT”)然后按下回车键,此时系统将会返回当下的加载路径。要是返回值为空,那就表明软件根本就没有读取到你的脚本目录。正确的做法是在.cdsinit文件里增添一行内容: load(“/path/to/your/script.il”),注意此处应该使用绝对路径,而非相对路径。
【新手避坑】:常见的报错情况呈现为, CIW窗口给出提示,显示Error load: file not found。其核心原因大多在于,路径出现了写错的情况,又或者是文件名的大小写并不匹配。迅速的解决办法是:在CIW里直接键入load(“完整路径”)开展测试,要是依旧报错,借助ls命令去确认文件是不是真的存在。
函数未定义怎么修复
若你在写好脚本并运行时, CIW忽然弹出Error undefined function – myFunction,此时别慌乱。其根本原因并非函数写错,而是脚本加载顺序出现了问题。如果Skill脚本里调用了外部的函数库,那就必须先加载库文件,之后再加载主脚本。
关键参数最优推荐的值是,在脚本起初时加入一行when( nil (setSkillPath(list(“/path/to/lib”)) ) ),在路径里指明所有依赖库的目录。此设置的原因挺简单的, Skill依据路径顺序来搜索函数,要是不进行指定的话就会默认仅仅搜索当前目录,从而遗漏函数库的。
进行实操方案对比时,存在两种加载方式,其一为手动加载,在每次开启软件时于CIW处输入load(“xxx.il”);这种方式适用于调试阶段,其二是自动加载方式,将其写在.cdsinit里,适用于正式生产环境,在调试阶段选用第一种方式,一旦确定脚本文字没问题的时候,便切换到第二种方式,否则每次重新开启软件都需要手动加载,这是很浪费时间的。
新手要避开一些情况,有一种报错情况是函数很明显写得没错,然而却提示未定义,其中核心的出错原因是Skill脚本里的函数名与调用名不一样,或者脚本里使用了procedure()却遗漏了括号,快速的解决办法是在CIW里通过采用getFunctionList(“my”)来搜索函数名,以此确认实际定义的名字。
菜单显示异常的排查流程
脚本加载达成预期之成功状态后,菜单未呈现或者呈灰色之按钮状态这一情况,是最为使人烦闷苦恼甚而倍感头疼的问题所在。我所施行的排查具体进程如下:其一,在CIW当中输入hiGetCurrentMenu()以查看当下菜单项情况。其二,对脚本里的菜单注册代码检查,从而确认hiCreateMenuItem()的callback参数有无参数有无犯下写错函数名字的错误。
高频完全报错: CIW报 Error* hiCreateMenuItem,其提示为论据号一应当是字符串(类型模板为“t”)。完整化解流程表明:此错误提示表明你运用的参数类型有误。第一步,核查 callback 向后的数值是否由双引号加以包裹作为字符串而呈示。第二步,去确认一下回调函数名里并没有空格存在。第三步,将callback的值单独来打出来查看一下,就好比printf(“%Ln”, callback)这样,要确保没有遗漏引号。这三步全部完成之后, 99%的菜单异常情况都是能够被解决掉的。
这种办法不适用于脚本里头运用了自定义SKILL++类库的情况,由于类库加载依靠更为繁杂的路径设定。替代的方案是采用envGetVal()获取软件内部建成的路径,将库文件放置到系统默认的目录下面,防止路径产生冲突。










