[Calibre command] Startup
本文最后更新于109 天前,其中的信息可能已经过时,如有错误请发送邮件到daoshilaoqi@qq.com

前言

从事DRC已经满两年了,这两年里,或多或少通过case接触过不少的calibre command,但限制于manager安排的case,以及现在越来越成熟的reference,macro,tabulation,自己能动手写calibre command的能力稍显不足。

这次以初学者角度重新go through一遍所有常见的calibre command。

本次所用的环境如下:

  • 1. Calibre Version : 2020.3
  • 2. Virtuoso : 6.1.8
  • 3. Test Deck : N65 deck from 咸鱼(不知道T家的PDK是怎么泄露出去的,咸鱼上一抓一大把😨)
  • 4. TF,Map file : N65 from 咸鱼

什么是SVRF语言?

SVRF 指标准验证规则格式(Standard Verification Rule Format),它是一种用于描述芯片设计规则的语言。

既然是一种程序语言,那就离不开词法,语法与语义设计;数据类型和操作设计;安全性和兼容性设计;执行效率等等。最重要的是面向的客户和群体,如果是程序员高手,他能用汇编给你写出DRC,次一点的也可以用各种程序语言加各种library 完成,但如果是毫无编程经验的人,一群材料、化学、物理专业组成的用户群体,就不可避免要考虑语言的可解释性简易性灵活性

举个栗子:

比如,有这样一条rule,假设有GDSII 文件:

Rule nameRule descriptionOpValue
OD.S.1Space>=1.0

如果我要用C++ /Python 实现,那要怎么做呢,比如我可以使用OpenCV 或者OpenGL 等图形库,处理对应的GDSII,来获取OD图形的每一个顶点,要自定义edge对象,然后判断edge与edge之间的笛卡尔距离。这样你可能要自己去写一堆封装库,大大的提高了DRC的入门门槛🤡。

但是我如果使用Calibre, mentor已经帮我封装好了一个command:External

其实从Usage 可以看出,这里有使用封装,多态和重载等OOP方法(我严重怀疑SVRF的大部分内核实现就是C/C++)。使用这个command,你只需要知道:

  • 输入是什么(layer,edge,polygon,point)
  • 输入的数量
  • 可选的关键参数等
  • 输出是什么

那么,可以很快的写出这条Rule:

OD.S.1 { @ Space >= 1.0
EXT OD < 1.0 ABUT < 90 OPPOSITE REGION
}

通过这里可以发现,SVRF 和我们通常使用的C++/Python 有一点区别,把各种复杂的程序逻辑简化为一个一个module,用户只需要知道输入是什么,需要查什么,输出是什么,可以快速的构建语法块来达成目的,不需要考虑任何程序框架,繁琐的语法和语义。

这或许就是面向需求编程(ORP)吧🤡。这就有点类似于我通过PyQt或者Delphi 实现一个界面,上面有一些button,lineedit,tableview,你莫管他具体怎么实现,直接designer上拖拖拽拽就可以搭出GUI。

后记

鄙人会一点点python,java,c,最开始学习calibre时,总感觉有点云里雾里,学起来也不通透,后来才发现这些具体的command 和keyword 要结合具体的case 才能搞明白,因为case 里面总有客户的奇奇怪怪要求。

前人栽树,后人乘凉,只有感激和敬畏。

作者:ZLS
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0协议
转载请注明文章地址及作者哦~
上一篇
下一篇