Cadence Physical Verification System rule 语法详解

  • 一、 PVS rule 和 Calibre rule的常用语法对照
    • 1. 定义图层番号
    • 2. 定于图层名
    • 3. 对图层取“或”操作,合并图层
    • 4. 对图层取“非”操作
    • 5. 对图层取“与”操作
    • 6. 对图层各边缘按照固定值扩大/收缩
    • 7. 对图层整体按照固定值扩大/收缩
    • 8. 按照density大小获取图层
    • 9. 取两个图层相交的外面的部分
    • 10. 取两个图层相交的里面的部分
    • 11. 取两个图层互相没有交互的部分
    • 12. 生成矩形
    • 13. 设定DRC检查RULE
    • 14. DRC检查的结果的输出
  • 二、 PVS rule 中使用TCL BLOCK
    • 1. TCL BLOCK的使用方法
    • 2. TCL BLOCK中使用porc
    • 3. TCL BLOCK中使用foreach
  • 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF

一、 PVS rule 和 Calibre rule的常用语法对照

注:pvs rule中的运算字符串不区分大小写,由于manual里都是用的小写,并且与calibre rule作区分,这里也都用小写。

1. 定义图层番号

PVS:layer_map <<<===>>> Calibre:LAYER MAP

PVS:layer_map Num -datatype { datatypeValue}
Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名

PVS:layer_def <<<===>>> Calibre:LAYER

PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

3. 对图层取“或”操作,合并图层

PVS:cat <<<===>>> Calibre:OR

PVS:cat layerIn1 … layerInN layerOut
Calibre:X = OR layerIn1 … layerInN

4. 对图层取“非”操作

PVS:not <<<===>>> Calibre:NOT

PVS:not layerIn1 layerIn2 layerOut
Calibre:X = NOT layer1 layer2

5. 对图层取“与”操作

PVS:and <<<===>>>Calibre:AND

PVS:and layerIn1 layerIn layerOut
Calibre:X = AND layer2 layer3

6. 对图层各边缘按照固定值扩大/收缩

PVS:shrink <<<===>>>Calibre:SHRINK

PVS:shrink layerIn [ -right value ] [ -left value ] [ -top value ] [ -bottom value
] [ -cell_level ] layerOut
Calibre:SHRINK layer [RIGHT BY value] [TOP BY value] [LEFT BY value] [BOTTOM BY value]

注:主要区别是PVS rule的option加“-”,而Calibre rule的option不加"-",功能是一样的。

7. 对图层整体按照固定值扩大/收缩

PVS:size <<<===>>>Calibre:SIZE

PVS:size layerIn1 -by value layerOut
Calibre:X = SIZE layer1 BY size_value

8. 按照density大小获取图层

PVS:density <<<===>>>Calibre:DENSITY

PVS:例:density M1 -le 0.6 -window 110 -step 55 -backup X
Calibre:例:X = DENSITY M1 <= 0.6 WINDOW 110 STEP 55 BACKUP

运算符对照表:

9. 取两个图层相交的外面的部分

PVS:select -outside <<<===>>>Calibre:OUTSIDE

PVS:select -outside [ -not ] layerIn1 layerIn2 [ -cell_level ] [ [ -outputlayer ]
layerOut ]
Calibre:X = OUTside layer1 layer2

10. 取两个图层相交的里面的部分

PVS:select -inside <<<===>>>Calibre:INSIDE

PVS:select -inside [ -not ] layerIn1 layerIn2 [ -cell_level ] [ [ -outputlayer ]
layerOut ]
Calibre:X = INside layer1 layer2

11. 取两个图层互相没有交互的部分

PVS:select -interact -not <<<===>>>Calibre:NOT INTERACT

PVS:
select -interact [ -not ] layerIn1 layerIn2 [ constraint ] [ -odd | -even ] [
-by_net ] [ -single_point also | only ] [ -cell_level ] [ [ -outputlayer ]
layerOut ]
Calibre:
X = NOT INTERACT layer1 layer2 [constraint [BY NET] [EVEN | ODD]]
[SINGULAR {ALSO | ONLY}]

12. 生成矩形

PVS:rect_gen <<<===>>>Calibre:RECTANGLES

PVS:
rect_gen -width width -length length
-spacing { spacing | xspacing yspacing }
-offset { offset | xoffset yoffset } [ -maintain_spacing ]
[ -inside_of x1 y1 x2 y2 | -inside_of layer layer ]
layerOut
例:RECT_GEN -width 0.444 -length 0.444 -spacing 0.222 1.776 -offset 0 0.222 -inside_of_layer EXTENT_AA_0 DUMAA_OFF_b_0
Calibre:
RECTANGLES width length {spacing | {width_spacing length_spacing}}
[OFFSET {offset | {width_offset length_offset}}]
[{INSIDE OF x1 y1 x2 y2} | {INSIDE OF LAYER layer}]
[MAINTAIN SPACING]
例:DUMAA_OFF_b_0 = RECTANGLES 0.444 0.444 0.222 1.776 OFFSET 0 0.222 INSIDE OF LAYER EXTENT_AA_0

13. 设定DRC检查RULE

PVS:rule [RuleName] {RuleBlock} <<<===>>>Calibre:[RuleName] {RuleBlock}

PVS:例:RULE DUMAA_a_all_out { COPY DUMAA_a_all }
Calibre:例:DUMAA_a_all_out { COPY DUMAA_a_all }

14. DRC检查的结果的输出

PVS:output <<<===>>>Calibre:DRC CHECK MAP

PVS:
output { -drc | -erc } checkName { [ -gdsii [ layerNum [ datatype ] ] [ properties
] | -ascii | -binary | -oasis [ layerNum [ datatype ]] [ properties ]
[ -layer_name layerName ][ -cblock ] ] }
[ fileName [file-options] ] [ -maximum { number | all } ] [ -prefix string
] [ -append string ] [-aref
[<minimum_element_count>] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:OUTPUT DUMAA_a_all_out -GDSII 10 0 -autoref -maximum all
Calibre:
DRC CHECK MAP rule_check
[{{GDSII | OASIS} [PROPERTIES] [layer [datatype]]} | ASCII]
[filename | “PIPE command”]
[PREFIX string] [APPEND string]
[MAXIMUM RESULTS {maxresults | ALL}]
[MAXIMUM VERTICES {maxvertex | ALL}]
[TEXTTAG name]
[USER | PSEUDO | USER MERGED | TOP | COMBINE]
[PREC value] [MAG value]
[INDEX [NOVIEW]]
[ {AREF cell_name width length [minimum_element_count] [MAXIMUM PITCH pitch]
[SUBSTITUTE x1 y1 … xn yn]}… | {AUTOREF [prefix]} ]
例:DRC CHECK MAP DUMAA_a_all_out GDSII 10 1 AUTOREF

二、 PVS rule 中使用TCL BLOCK

1. TCL BLOCK的使用方法

在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。

PVS_READ_TCL_BLOCK
...
...//中间输入要运行的tcl脚本
...
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc

使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。
例如以下是使用proc的方法:

PVS_READ_TCL_BLOCK
proc abc {1 2 3} {puts "$1 $2 $3 "
}abc V1 M1 M2
abc V2 M2 M3
PVS_END_TCL_BLOCK

3. TCL BLOCK中使用foreach

使用tcl 的foreach功能编写出子程序块,可以在程序内循环列表从而简洁化重复性较强rule的编写。
例如以下是使用foreach的方法:

PVS_READ_TCL_BLOCK
set via_list {1 2 3 4 5 6 7}
foreach via ${via_list} {puts "V${via}"
}
PVS_END_TCL_BLOCK

三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF

和calibre rule的语法一样,使用方法如下:

#DEFINE ABC YES
#IFDEF ABC YES
RULE ABC_RUN {COPY ABC}
OUTPUT ABC_RUN -GDSII 10 0 -autoref -maximum all
#ENDIF

Cadence PVS (Physical Verification System) rule 语法详解相关推荐

  1. Python的Xpath介绍和语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  2. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  3. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

  4. HBase数据结构与基本语法详解

    HBase数据结构与基本语法详解.背景: 阅读新闻 [日期:2019-01-06] 来源:Linux社区 作者:Linux [字体:大 中 小] HBase中的表一般有这样的特点: 1 大:一个表可以 ...

  5. MarkDown语法详解

    Markdown语法详解 大家好,今天给大家带来的是文本编辑器Markdown的语法讲解.也不能说是讲解把,毕竟我自己还是一个小小小白,就当是对自己初步学习的一个小总结.希望能给大家带来一些帮助! 为 ...

  6. Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了)---zhangkaitao

    Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) http://jinnianshilongnian.iteye.com/blog/1415606    --zha ...

  7. Spring Data JPA 之 @Query 语法详解及其应用

    5 Spring Data JPA 之 @Query 语法详解及其应用 5.1 快速体验 @Query 的方法 沿⽤我们之前的例⼦,新增⼀个 @Query 的⽅法: // 通过 query 注解根据 ...

  8. MySQL常用操作之创建存储过程语法详解

    MySQL常用操作之创建存储过程语法详解 前言 简介 语法 创建结构 变量结构 入参变量和出参变量 流程控制 判断(IF 语句) 判断(CASE 语句) 循环(LOOP 语句) 循环(WHILE 语句 ...

  9. Android.mk语法详解

    前言 目前 Android 工程可以通过 .mk.或者 .cmake 的形式构建 NDK 工程,较新的 Android 工程一般采用的是 .cmake 构建 NDK 源码,而相对创建时间久的工程则大多 ...

  10. @Pointcut语法详解

    @Pointcut语法详解 目录 @Pointcut语法详解 定义 表达式标签 execution execution格式: 例子: AspectJ类型匹配的通配符: within和@within t ...

最新文章

  1. POJ1236 Network of Schools【强连通】
  2. windows下安装emscripten
  3. Spring Boot 1.0和Spring Boot 1.0.1错误修复版本
  4. uni-app动态绑定class和style
  5. 计算机科学陈国华,科学网—模式识别与智能系统是个什么专业? - 晏燕华的博文...
  6. Java版 18w10c_xcvbn.apk 0% 的杀毒软件(0/32) 报告发现病毒 - VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
  7. 解决jz2440不能ping同主机问题
  8. c#明华rf读卡器_深圳明华URF-R330读卡器 M1卡读写程序(C#版)
  9. 自学前端的日子,记录我的秃头之旅
  10. 保存csdn网页为pdf,防止网页乱码
  11. 第一次OllyDbg逆向记录(分析思路和注意点其他文章)
  12. 【C++】使用类来模拟string
  13. 视频压缩大小怎么做?压缩视频用这3个工具准没错!
  14. C++基础面试问题总结
  15. 第三章第二十四题(游戏:抽牌)(Game: pick a card)
  16. 证明:DES解密算法是DES加密算法的逆
  17. Java中switch的四种用法
  18. Three.js点击地图动态标注
  19. 微信小程序html文章添加跳转链接,微信小程序跳转外部链接(h5页面)以及数据交互...
  20. 阐述一下ecshop各模块的功能_【光电通信】40G QSFP+ LR4 光模块的设计与实现(一)...

热门文章

  1. 毕业设计 stm32车牌识别系统设计与实现 - 单片机 嵌入式
  2. 软考倒计时26天,最后冲刺阶段
  3. 虚拟机linux ecap文件在,为AM335x移植Linux内核主线代码(30)eCAP的PWM波功能
  4. 解读国内外园艺机器人的应用现状
  5. 外贸企业邮箱格式怎么写?外贸域名邮箱格式
  6. oracle导数时不包含某个表,EXPDP导数报ORA-00942案例
  7. 读书笔记—颠覆式创新:移动互联网时代的生存法则
  8. 存储卡被格式化了咋恢复文件?
  9. mysql转储导入错误_将MySQL转储应用于RDS时出现“无法解析表名”错误
  10. 12306查询车票信息返回的数据解析