Error[8]: Undefined offset: 214, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{<===><===>[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via $<===>{<===><===>via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 215, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{<===>[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via $<===>{<===><===>via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 216, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via $<===>{<===><===>via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 217, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${<===><===>via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 218, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${<===>via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 219, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] <===>{<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 220, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] {<===><===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 221, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] {<===> puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 222, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK <===><===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 223, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK <===> 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 224, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF <===>和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 225, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF 和calibre rule的语法一样,使用方法如下:<===> <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 226, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF 和calibre rule的语法一样,使用方法如下: <===>[+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 227, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

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

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

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

1. 定义图层番号

[+++]layer_map <<

>> [+++]LAYER MAP


PVS:layer_map Num -datatype { datatypeValue}

Calibre:LAYER MAP source_layer {DATATYPE source_type target_layer}

2. 定于图层名 <<

[+++]layer_def
>> [+++]LAYER


PVS:layer_def layerName layerNum1
Calibre:LAYER name original_layer

<<

3. 对图层取“或” *** 作,合并图层
[+++]cat

>> [+++]OR

PVS:cat layerIn1 … layerInN layerOut

Calibre:X = OR layerIn1 … layerInN<<

4. 对图层取“非” *** 作

[+++]not
>> [+++]NOT

PVS:not layerIn1 layerIn2 layerOut<<

Calibre:X = NOT layer1 layer2

5. 对图层取“与” *** 作
[+++]and

>>[+++]AND

<<

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


6. 对图层各边缘按照固定值扩大/收缩
[+++]shrink
>>[+++]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]<<


[+++]

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

>>[+++]SIZE<<

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

8. 按照density大小获取图层

[+++]density
>>[+++]DENSITY

PVS:例:[+++]

Calibre:例:[+++]<<

运算符对照表:


9. 取两个图层相交的外面的部分
[+++]select -outside

>>[+++]OUTSIDE<<

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

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

[+++]select -inside <<

>>[+++]INSIDE


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


11. 取两个图层互相没有交互的部分
[+++]select -interact -not

>>[+++]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. 生成矩形
[+++]rect_gen
>>[+++]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
例:[+++]

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]<<

例:[+++]


13. 设定DRC检查RULE
[+++]rule [RuleName] {RuleBlock}
>>[+++][RuleName] {RuleBlock}


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

14. DRC检查的结果的输出
[+++]output
>>[+++]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
[
] [-substitute … ]] [ -autoref
[prefix] ] [ -gzip ] [-max_vertices { number | all } ] [ -user | -pseudo ]
例:[+++]
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]} ] 例:[+++] 
 
二、 PVS rule 中使用TCL BLOCK 
1. TCL BLOCK的使用方法 
在rule文件中写入如下的命令块,PVS可以识别到并按照tcl的语法读取。可以用于重复性比较强的rule的编写。 
PVS_READ_TCL_BLOCK 
[+++][+++][+++]
[+++][+++][+++][+++]
[+++][+++][+++]
PVS_END_TCL_BLOCK

2. TCL BLOCK中使用porc
使用tcl 的proc功能编写出子程序块,可以在程序中重复调用。

例如以下是使用proc的方法:
 
PVS_READ_TCL_BLOCK 
proc abc {[+++] [+++] [+++][+++] {
    puts [+++]
[+++]
 
 
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 
{[+++] [+++] [+++] [+++] [+++] [+++] [+++][+++] foreach via ${via_list[+++] { puts [+++] [+++] PVS_END_TCL_BLOCK 三、 PVS rule 中使用#DEFINE/#IFDEF/#ENDIF 和calibre rule的语法一样,使用方法如下: [+++]<===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Cadence PVS (Physical Verification System) rule 语法详解_app_内存溢出

Cadence PVS (Physical Verification System) rule 语法详解

Cadence PVS (Physical Verification System) rule 语法详解,第1张

Cadence Physical Verification System rule 语法详解 一、 PVS rule 和 Calibre rule的常用语法对照1. 定义图层番号2. 定于图层名3. 对图层取“或” *** 作,合并图层4. 对图层取“非” *** 作5. 对图层取“与” *** 作6. 对图层各边缘按照固定值扩大/收缩7. 对图层整体按照固定值扩大/收缩8. 按照density大小获取图层9. 取两个图层相交的外面的部分10. 取两个图层相交的里面的部分11. 取两个图层互相没有交互的部分12. 生成矩形13. 设定DRC检查RULE14. DRC检查的结果的输出 二、 PVS rule 中使用TCL BLOCK1. TCL BLOCK的使用方法2. TCL BLOCK中使用porc3. 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
[
] [-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 "   "
}
 
 
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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/997033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存