每天分享 Cadence 操作 · SKILL 语法

Cadence SKILL 的简单语法格式

从实用出发,快速掌握 SKILL 中高频出现的循环、列表、条件判断和文件读取写法。

CadenceSKILL每天分享 Cadence 操作Cadence 的 SKILL 应用
Cadence SKILL 基础语法代码示例:for、list、foreach、if 与文件读取

基础语法示例:循环、列表、条件分支与文件读取。

Cadence SKILL 示例程序运行输出

示例程序在 CIW 中的运行输出。

学习一门新语言,最重要的是能解决实际问题。这里不对函数方法做繁复比较,而是集中介绍 Cadence SKILL 中使用频率较高的基础规则,并通过一个完整过程把它们串联起来。

1. For 循环

当次数范围明确时,可以使用 for 循环。下面的写法让变量 i 从 1 遍历到 5:

for-loop.il
for(i 1 5
  println(i)
)

执行后依次输出 1、2、3、4、5。循环体可以继续放入数据库查询、对象修改或检查逻辑。

2. 定义列表

SKILL 中常用 list 保存一组有顺序的数据:

list.il
lista = list(
  "AA"
  "BB"
  "CC"
)

列表适合存放 library、cell、view 名称,也可以保存数据库对象,供后续批量处理。

3. Foreach 逐个访问列表元素

使用 foreach 可以按顺序取出列表中的每个元素:

foreach.il
foreach(element lista
  println(element)
)

每轮循环中,element 都指向当前元素。对一组 cellView 做检查或修改时,这是非常常见的写法。

4. If 与 Else 条件判断

需要根据条件执行不同分支时,可以使用 if / then / else

if-else.il
m = 4
if(m < 7
  then println("Pass")
  else println("Fail")
)

示例中 m 小于 7,因此输出 Pass。实际脚本中可用它判断对象是否存在、属性是否符合要求,或操作是否成功。

5. 读取文件内容

读取文本文件时,先用 infile 打开文件,再通过 gets 逐行读取,最后关闭文件句柄:

read-file.il
file = infile("./test.txt")
while(gets(s file)
  println(s)
)
close(file)

把五种语法组合起来

可以把这些代码放进一个无参数过程,再调用过程完成测试:

test1.il
procedure(test1()
  for(i 1 5
    println(i)
  )
  lista = list("AA" "BB" "CC")
  foreach(element lista
    println(element)
  )
  m = 4
  if(m < 7
    then println("Pass")
    else println("Fail")
  )
  file = infile("./test.txt")
  while(gets(s file)
    println(s)
  )
  close(file)
)
test1()

下期预告

Cadence 封装的常用方法

下一篇将从基础语法继续向实际工程推进,介绍 Cadence SKILL 中常见的封装方法与调用思路。

查看更多 Cadence 教程