Cadence PVS (Physical Verification System) rule 语法详解
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 语法详解相关推荐
- Python的Xpath介绍和语法详解
1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...
- Velocity魔法堂系列二:VTL语法详解
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- Java8初体验(二)Stream语法详解(转)
本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...
- HBase数据结构与基本语法详解
HBase数据结构与基本语法详解.背景: 阅读新闻 [日期:2019-01-06] 来源:Linux社区 作者:Linux [字体:大 中 小] HBase中的表一般有这样的特点: 1 大:一个表可以 ...
- MarkDown语法详解
Markdown语法详解 大家好,今天给大家带来的是文本编辑器Markdown的语法讲解.也不能说是讲解把,毕竟我自己还是一个小小小白,就当是对自己初步学习的一个小总结.希望能给大家带来一些帮助! 为 ...
- Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了)---zhangkaitao
Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) http://jinnianshilongnian.iteye.com/blog/1415606 --zha ...
- Spring Data JPA 之 @Query 语法详解及其应用
5 Spring Data JPA 之 @Query 语法详解及其应用 5.1 快速体验 @Query 的方法 沿⽤我们之前的例⼦,新增⼀个 @Query 的⽅法: // 通过 query 注解根据 ...
- MySQL常用操作之创建存储过程语法详解
MySQL常用操作之创建存储过程语法详解 前言 简介 语法 创建结构 变量结构 入参变量和出参变量 流程控制 判断(IF 语句) 判断(CASE 语句) 循环(LOOP 语句) 循环(WHILE 语句 ...
- Android.mk语法详解
前言 目前 Android 工程可以通过 .mk.或者 .cmake 的形式构建 NDK 工程,较新的 Android 工程一般采用的是 .cmake 构建 NDK 源码,而相对创建时间久的工程则大多 ...
- @Pointcut语法详解
@Pointcut语法详解 目录 @Pointcut语法详解 定义 表达式标签 execution execution格式: 例子: AspectJ类型匹配的通配符: within和@within t ...
最新文章
- POJ1236 Network of Schools【强连通】
- windows下安装emscripten
- Spring Boot 1.0和Spring Boot 1.0.1错误修复版本
- uni-app动态绑定class和style
- 计算机科学陈国华,科学网—模式识别与智能系统是个什么专业? - 晏燕华的博文...
- Java版 18w10c_xcvbn.apk 0% 的杀毒软件(0/32) 报告发现病毒 - VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
- 解决jz2440不能ping同主机问题
- c#明华rf读卡器_深圳明华URF-R330读卡器 M1卡读写程序(C#版)
- 自学前端的日子,记录我的秃头之旅
- 保存csdn网页为pdf,防止网页乱码
- 第一次OllyDbg逆向记录(分析思路和注意点其他文章)
- 【C++】使用类来模拟string
- 视频压缩大小怎么做?压缩视频用这3个工具准没错!
- C++基础面试问题总结
- 第三章第二十四题(游戏:抽牌)(Game: pick a card)
- 证明:DES解密算法是DES加密算法的逆
- Java中switch的四种用法
- Three.js点击地图动态标注
- 微信小程序html文章添加跳转链接,微信小程序跳转外部链接(h5页面)以及数据交互...
- 阐述一下ecshop各模块的功能_【光电通信】40G QSFP+ LR4 光模块的设计与实现(一)...
热门文章
- 毕业设计 stm32车牌识别系统设计与实现 - 单片机 嵌入式
- 软考倒计时26天,最后冲刺阶段
- 虚拟机linux ecap文件在,为AM335x移植Linux内核主线代码(30)eCAP的PWM波功能
- 解读国内外园艺机器人的应用现状
- 外贸企业邮箱格式怎么写?外贸域名邮箱格式
- oracle导数时不包含某个表,EXPDP导数报ORA-00942案例
- 读书笔记—颠覆式创新:移动互联网时代的生存法则
- 存储卡被格式化了咋恢复文件?
- mysql转储导入错误_将MySQL转储应用于RDS时出现“无法解析表名”错误
- 12306查询车票信息返回的数据解析