Virtuoso Skill语法入门指南:从基础语法到实战应用

6次阅读
没有评论

共计 1471 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

Skill 语言是 Cadence Virtuoso 平台的核心脚本语言,专门为 IC 设计自动化而生。它能让工程师通过编程方式操作版图、创建参数化单元、自动化设计流程。相比 Python 等通用语言,Skill 更贴近 EDA 工具链,能直接调用 Virtuoso 内部接口,执行效率更高。

Virtuoso Skill 语法入门指南:从基础语法到实战应用

一、Skill 语法核心要素

1. 变量定义

Skill 是动态类型语言,变量无需声明类型,用 let 或直接赋值即可:

let((a b)  
  a = 10       ; 整数
  b = "text"   ; 字符串
  list('(1 2 3)) ; 列表
)
  • 特殊符号 nil 表示空值
  • 列表用单引号 + 括号 '(...) 表示
  • 变量作用域通过 let 控制

2. 控制结构

;; 条件判断
when(a > 5
  println("大于 5")
  )

;; 循环
for(i 0 9
  printf("%d" i)
)

;; 带条件的循环
while(i < 10
  i++
)

3. 函数定义

procedure(addTwo(a b)
  a + b  ; 最后一行作为返回值
)

;; 带默认值的参数
procedure(drawRect(@key (width 1) (height 2))
  ; 函数体
)

二、典型应用场景

1. 版图矩形批量创建

procedure(createRects
  let((cv layer)
    cv = geGetEditCellView()
    layer = list("M1" "drawing")

    for(i 0 4
      dbCreateRect(cv layer 
        list(i*2 0 (i*2)+1 1) ; 坐标
      )
    )
  )
)
;; 调用:createRects()

2. 参数化 Pcell 创建

pcDefinePCell(list(ddGetObj("mylib") "inverter" "layout")
  ((width 0.5) (height 0.5))  ; 默认参数
  let((cv)
    cv = pcCellView
    dbCreateRect(cv list("M1" "drawing") list(0 0 width height))
  )
)

3. 属性批量修改

procedure(changeProp(objName propName newValue)
  foreach(obj geGetSelSet()
    when(obj~>objName == propName
      obj~>propName = newValue
    )
  )
)

三、常见错误与调试

  1. 括号不匹配:Skill 大量使用括号,建议用 IDE 高亮显示配对

  2. 变量作用域问题

    let((a)
      a = 1
      let((a)  ; 内层 a 遮蔽外层 a
        a = 2
      )
      println(a) ; 输出 1
    )

  3. 调试技巧

  4. 使用 println 输出中间值
  5. axlShell(进入交互模式
  6. trace函数跟踪执行流程

四、性能优化建议

  1. 减少数据库操作:批量处理代替循环单次操作

    ;; 低效方式
    for(i 1 100 dbCreateRect(...))
    
    ;; 高效方式
    let((shapes)
      shapes = mapcar('dbCreateRect ...)
    )

  2. 使用向量运算:内置数学函数支持向量计算

  3. 避免频繁类型转换:保持变量类型一致性

五、与其他语言对比

特性 Skill Tcl Python
执行效率 ★★★★★ ★★★☆☆ ★★★★☆
EDA 集成度 原生支持 需接口层 需接口层
语法简洁性 括号较多 字符串操作强 易读性好

进阶学习路径

  1. 官方文档《Skill Language User Guide》
  2. Virtuoso 自带的 skill.cxt 示例库
  3. 练习修改 CIW 窗口的自动记录脚本
  4. 参与 Cadence 社区技能挑战赛

Skill 语言的学习曲线虽然陡峭,但掌握后能极大提升 IC 设计效率。建议从简单自动化任务开始,逐步过渡到复杂 Pcell 开发。遇到问题时,多查阅 help 命令和内置函数手册,坚持 3 个月就能看到明显进步。

正文完
 0
评论(没有评论)