Sie sind auf Seite 1von 2585

IC Validator

Reference Manual
Version N-2017.12-SP2, March 2018
Copyright Notice and Proprietary Information
©2018 Synopsys, Inc. All rights reserved. This Synopsys software and all associated documentation are proprietary to
Synopsys, Inc. and may only be used pursuant to the terms and conditions of a written license agreement with
Synopsys, Inc. All other use, reproduction, modification, or distribution of the Synopsys software or the associated
documentation is strictly prohibited.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader's responsibility to
determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Trademarks
Synopsys and certain Synopsys product names are trademarks of Synopsys, as set forth at
http://www.synopsys.com/Company/Pages/Trademarks.aspx.
All other product or company names may be trademarks of their respective owners.
Third-Party Links
Any links to third-party websites included in this document are for your convenience only. Synopsys does not endorse
and is not responsible for such websites and their practices, including privacy practices, availability, and content.

Synopsys, Inc.
690 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com

IC Validator Reference Manual, Version N-2017.12-SP2 ii


Contents

About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxviii


Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xl

1. Tables of Runset Functions


Option Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Methodology Check Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4
Unified Fill Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
NDM Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
Parasitic Extraction Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6
Pattern Match Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7
Coloring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
All Runset Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-9

2. Runset Functions: A - I
adjacent_edge() and not_adjacent_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
and() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
and_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12
and_overlap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-14
angle_edge() and not_angle_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-17
annotate_by_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-20

iii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

area() and not_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22


aspect_ratio() and not_aspect_ratio() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-25
assign() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-30
assign_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-56
assign_openaccess() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-63
assign_openaccess_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-70
assign_openaccess_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-73
assign_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-76
buildsub() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-84
capacitor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-87
cell_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-102
cell_extent_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-105
center_to_center1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-108
center_to_center1_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-115
center_to_center1_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-121
center_to_center2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-125
center_to_center2_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-131
center_to_center2_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-135
check_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-139
check_property_off() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-144
check_symmetry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-146
checkpoint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-149
chip_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-151
coincident_edge() and not_coincident_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-153
coincident_inside_edge() and not_coincident_inside_edge() . . . . . . . . . . . . . . . . . . 2-155
coincident_outside_edge() and not_coincident_outside_edge(). . . . . . . . . . . . . . . . 2-157
color_conflict_layers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-159
color_conflict_layers_order() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-161

Contents iv
IC Validator Reference Manual Version N-2017.12-SP2

coloring_links() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-163
coloring_links_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-178
compare() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-182
connect(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-195
contains() and not_contains() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-198
copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-201
copy_by_cells(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-204
copy_by_layout_equiv_cells(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-206
copy_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-208
copy_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-210
covered_by() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-212
create_ports() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-217
cutting() and not_cutting() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-220
data_filter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-227
data_limit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-230
data_limit_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-232
delta_edge() and not_delta_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-234
delta_error() and not_delta_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-238
density() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-241
density_statistics_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-254
dev_dlink_library_close() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-255
dev_dlink_library_open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-256
device_connected_to() and device_not_connected_to() . . . . . . . . . . . . . . . . . . . . . 2-257
device_net_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-260
dfm_features() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-262
donut_holes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-269
donuts() and not_donuts(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-273
drc_features() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-275

Chapter 2: Contents
Contents 2-vv
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

drc_features_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-279
drc_features_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-282
drc_features_marker() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-287
edge_extents() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-290
edge_features_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-292
edge_grow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-295
edge_shrink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-298
edge_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-302
edge_size_by_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-307
edges() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-313
edtext_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-315
eerc_analyze_netlist(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-316
eerc_create_device_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-322
eerc_create_device_list_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-324
eerc_create_net_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-327
eerc_import_net_properties_from_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-329
eerc_setup() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-332
eerc_write_net_missing_property_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-339
eerc_write_net_property_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-341
eerc_write_vue_debug_database() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-343
empty_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-344
empty_layer_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-345
empty_layer_marker(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-346
empty_violation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-347
enclose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-348
enclose_corner(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-380
enclose_corner_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-386
enclose_edge() and not_enclose_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-392

Contents vi
IC Validator Reference Manual Version N-2017.12-SP2

enclose_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-417
enclosing() and not_enclosing() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-429
equiv_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-435
error_merge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-439
error_merge_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-442
error_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-444
error_to_link_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-461
exclude_milkyway_cell_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-464
exclude_milkyway_net_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-465
exclude_milkyway_route_guide_layers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-466
exclude_milkyway_route_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-467
exclude_ndm_blockage_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-468
exclude_ndm_design_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-469
exclude_ndm_net_types() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-470
exclude_ndm_shape_uses() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-471
extend_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-472
extent() and not_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-477
external_corner1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-480
external_corner1_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-489
external_corner1_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-499
external_corner2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-504
external_corner2_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-513
external_corner2_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-524
external1(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-529
external1_edge() and not_external1_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-559
external1_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-587
external2(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-598
external2_edge() and not_external2_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-638

Chapter 2: Contents
Contents vii
2-vii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external2_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-670
extract_devices() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-684
fill_pattern() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-686
fill_pattern_rings() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-693
filter(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-697
filter_off(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-707
flatten_by_cells(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-709
fopen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-711
four_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-712
gds_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-717
gds_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-718
gendev() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-722
gendev_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-737
get_layout_drawn_violation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-742
get_layout_grid_violation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-743
get_netlist_connect_database() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-744
get_substrate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-746
get_text_merged() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-747
get_text_reassign_shorted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-748
get_text_renamed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-749
get_text_shorted(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-750
get_text_unused(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-751
get_top_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-752
gradient_density() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-753
grid_pattern_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-763
group_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-765
grouped_by() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-766
grow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-768

Contents viii
IC Validator Reference Manual Version N-2017.12-SP2

hierarchy_auto_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-771
hierarchy_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-773
icvread() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-778
icvread_generate_results() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-780
icvread_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-783
icvread_spec_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-785
identify_fill(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-787
import_gds_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-790
import_oasis_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-792
incremental_connect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-793
incremental_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-796
inductor(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-799
init_compare_matrix() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-812
init_device_matrix(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-815
init_icvread_matrix() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-818
init_pex_layer_matrix() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-820
initialize_net_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-822
initialize_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-823
inside() and not_inside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-824
inside_hole() and not_inside_hole() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-827
inside_point_touching_edge() and not_inside_point_touching_edge() . . . . . . . . . . 2-829
inside_touching_edge() and not_inside_touching_edge() . . . . . . . . . . . . . . . . . . . . 2-833
instance_property_number() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-837
interacting() and not_interacting() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-838
interacting_edge() and not_interacting_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-846
interacting_error() and not_interacting_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-849
internal_corner1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-853
internal_corner1_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-859

Chapter 2: Contents
Contents ix
2-ix
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal_corner2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-865
internal_corner2_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-872
internal1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-879
internal1_edge() and not_internal1_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-896
internal1_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-913
internal2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-922
internal2_edge() and not_internal2_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-949
internal2_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-976
intersections() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-988
intersections_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-995

3. Runset Functions: J - Z
label_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
layer_empty() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
layer_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7
layer_extent_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9
layer_statistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10
layer_statistics_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14
layout_drawn_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15
layout_grid_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-20
layout_integrity_by_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-22
layout_integrity_by_marker_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24
layout_integrity_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-27
length_edge() and not_length_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-29
level() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-33
level_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-37
level_to() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-39
level_to_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-42

Contents x
IC Validator Reference Manual Version N-2017.12-SP2

library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-45
library_create() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-49
library_import() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-50
lvs_black_box_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-53
lvs_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-56
map_capacitor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-63
map_gendev(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-66
map_inductor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-69
map_nmos() and map_pmos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-72
map_np() and map_pn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-76
map_npn() and map_pnp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-80
map_resistor(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-84
marker_merge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-87
match() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-88
merge_parallel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-97
merge_parallel_off() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-105
merge_series() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-107
merge_series_off() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-115
milkyway_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-117
milkyway_merge_library_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-118
milkyway_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-127
milkyway_route_directives() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-137
mos_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-142
move(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-146
move_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-148
ndm_library(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-150
ndm_merge_library_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-151
ndm_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-160

Chapter 2: Contents
Contents xi
2-xi
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

negate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-168
negate_in_window() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-171
net_color_check() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-173
net_color_report_file(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-177
net_device_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-178
net_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-181
net_path_check() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-185
net_polygon_by_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-190
net_polygon_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-192
net_property_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-198
net_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-203
net_select_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-210
net_select_inside_of_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-221
net_texted_with() and net_not_texted_with() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-226
netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-229
nmos() and pmos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-232
not() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-249
not_contained_by() and contained_by() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-251
not_covered_by() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-257
not_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-266
not_enclosed_by() and enclosed_by() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-268
np() and pn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-274
npn() and pnp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-288
oasis_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-302
oasis_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-303
off_grid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-307
off_grid_xy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-309
openaccess_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-311

Contents xii
IC Validator Reference Manual Version N-2017.12-SP2

openaccess_merge_library_options(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-312
openaccess_options(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-318
optional_pattern_markers(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-332
or() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-334
or_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-336
or_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-339
or_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-341
outside() and not_outside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-343
outside_point_touching_edge() and not_outside_point_touching_edge() . . . . . . . . 3-346
outside_touching() and not_outside_touching() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-349
outside_touching_edge() and not_outside_touching_edge() . . . . . . . . . . . . . . . . . . 3-354
partition(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-357
partition_chip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-361
pattern_learn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-364
pattern_library(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-397
pattern_library_compare(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-400
pattern_library_lock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-404
pattern_library_merge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-407
pattern_library_read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-410
pattern_match(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-416
pattern_options(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-421
pex_cell_extents_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-422
pex_cell_port_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-424
pex_color_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-426
pex_conducting_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-429
pex_generate_database(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-433
pex_generate_lpp_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-437
pex_generate_process_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-440

Chapter 2: Contents
Contents xiii
2-xiii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_generate_results() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-443
pex_generate_simple_database() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-446
pex_generate_simple_results(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-449
pex_ignore_cap_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-452
pex_library_layer_map_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-455
pex_lpp_map_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-457
pex_marker_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-459
pex_process_map_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-462
pex_qtf_layers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-464
pex_qtf_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-466
pex_remove_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-470
pex_runset_report_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-473
pex_simple_layer_maps(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-475
pex_unconnected_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-477
pex_via_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-482
pex_viewonly_layer_map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-485
point_touching_edge() and not_point_touching_edge() . . . . . . . . . . . . . . . . . . . . . . 3-488
polygon_centers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-491
polygon_extents() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-493
polygon_features() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-496
polygons() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-499
property_annotation_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-501
property_layer_convert(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-502
property_to_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-503
prototype_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-507
pull_down() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-511
pull_down_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-514
pull_down_to() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-516

Contents xiv
IC Validator Reference Manual Version N-2017.12-SP2

pull_down_to_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-519
python_validate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-521
read_group() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-523
read_group_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-526
read_group_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-528
read_layout_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-530
recalculate_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-538
recognize_gate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-541
recognize_gate_off() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-549
rectangle_overlap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-551
rectangle_spacing1() and not_rectangle_spacing1() . . . . . . . . . . . . . . . . . . . . . . . . 3-554
rectangle_spacing2() and not_rectangle_spacing2() . . . . . . . . . . . . . . . . . . . . . . . . 3-561
rectangles() and not_rectangles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-567
rectangles_interacting() and not_rectangles_interacting() . . . . . . . . . . . . . . . . . . . . 3-569
reduce_four_color_graph() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-574
reduce_three_color_graph() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-577
redundant_vias(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-583
remove_fill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-589
remove_fill_to_target() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-592
replace_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-598
required_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-600
res_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-601
resistor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-604
resolution_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-618
restart() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-621
restart_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-623
restart_layer_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-624
restart_layer_text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-625

Chapter 2: Contents
Contents xv
2-xv
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

route_directives() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-626
run_options(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-631
schematic() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-638
sconnect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-647
select_by_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-649
select_marker_by_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-651
select_marker_by_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-653
shift_symmetry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-655
short_equivalent_nodes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-658
short_equivalent_nodes_off() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-664
shrink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-666
size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-669
size_inside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-674
size_outside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-682
size_overlap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-691
snap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-693
snap_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-695
snap_to_pattern() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-697
snap_to_pattern_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-702
snapshot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-705
soft_check() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-706
soft_connect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-709
soft_connect_check() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-713
spice_netlist_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-716
stamp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-717
stamp_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-720
system() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-724
text_net(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-725

Contents xvi
IC Validator Reference Manual Version N-2017.12-SP2

text_options() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-747
text_origin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-760
text_to_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-762
text_to_string_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-764
texted_with() and not_texted_with() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-766
three_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-769
touching() and not_touching(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-774
touching_edge() and not_touching_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-777
two_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-780
unified_fill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-793
vertex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-866
vertex_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-870
vertices() and not_vertices() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-872
vertices_edge() and not_vertices_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-874
violation_empty() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-876
violations_empty(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-878
wide() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-879
wide_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-882
write_annotation_file(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-884
write_customized_spice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-886
write_gds() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-891
write_group(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-907
write_milkyway() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-909
write_ndm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-924
write_oasis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-935
write_openaccess(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-947
write_spice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-960
write_xref_spice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-965

Chapter 2: Contents
Contents xvii
2-xvii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-970
xor_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-972
xref_to_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-974
xref_to_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-977

4. Utility Functions
General-Purpose Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
Math Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
Trigonometry Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
Equivalence Comparison Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
Double Comparison Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
Miscellaneous Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Matrix Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
matrix_max(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
matrix_min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
String Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
find() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
rfind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
split_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
strcasecmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
strcmp(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22
strcspn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-23
string_match(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-23
strncasecmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-24
strncmp(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-25
strspn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-26
strtod() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-27
strtoi() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-27
substr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-28
tolower() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29
toupper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29
Diagnostics Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29
error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29
fatal(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-30
note() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-30
warning(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-30
Decimal and Integer Number Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-30
double_to_integer_coordinate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-31
integer_coordinate_to_double() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-31

Contents xviii
IC Validator Reference Manual Version N-2017.12-SP2

File Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-31


search_include_path() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-31
Introduction to Remote Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-32
Device Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-34
Capacitor Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-35
cap_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-36
cap_area_capval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-36
cap_area_capval_assigned() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-36
cap_coincident_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37
cap_coinedge_capval(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37
cap_coinedge_capval_assigned() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37
cap_fringe_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37
cap_fringe_edge_capval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
cap_fringe_edge_capval_assigned() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
cap_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
cap_perim(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
cap_perim_capval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39
cap_perim_capval_assigned() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39
cap_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39
Inductor Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39
ind_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-40
ind_bbox_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-40
ind_bbox_height() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-40
ind_bbox_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-41
ind_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-41
ind_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-41
ind_space() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-41
ind_turn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-42
ind_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-42
NMOS and PMOS Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-43
mos_contact_diffusion_area_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-43
mos_drain_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-47
mos_drain_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-47
mos_gate_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-48
mos_gate_perim(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-48
mos_get_dfm_double(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-48
mos_length_1(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-49
mos_length_2(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-49
mos_length_avg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-49
mos_length_max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-49

Chapter 2: Contents
Contents xix
2-xix
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

mos_length_min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-50
mos_length_num_45() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-50
mos_length_num_90() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-50
mos_nrd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-50
mos_nrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-51
mos_proximity_corner_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-51
mos_proximity_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-54
mos_source_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-60
mos_source_perim(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-61
mos_width_1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-61
mos_width_2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-61
mos_width_avg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-61
mos_width_bend_1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-62
mos_width_bend_2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-62
mos_width_max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-62
mos_width_min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-62
mos_width_num_45() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-63
mos_width_num_90() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-63
Diode (NP and PN) Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-63
diode_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-63
diode_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-63
Bipolar Transistor (NPN and PNP) Utility Functions . . . . . . . . . . . . . . . . . . . . . 4-64
bjt_base_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-64
bjt_base_perim(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-64
bjt_body_position() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-65
bjt_collector_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-65
bjt_collector_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-65
bjt_emitter_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-65
bjt_emitter_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-66
Resistor Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-66
res_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-66
res_length_1(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-67
res_length_2(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-67
res_length_avg(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-67
res_length_max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-67
res_length_min(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-68
res_length_num_45() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-68
res_length_num_90() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-68
res_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-68
res_resval(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-69
res_resval_assigned() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-69

Contents xx
IC Validator Reference Manual Version N-2017.12-SP2

res_width_avg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-69
res_width_max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-69
res_width_min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-70
res_width_num_45() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-70
res_width_num_90() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-71
res_width_term_a(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-72
res_width_term_b(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-72
Device Body Coordinate Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-72
dev_body_coordinate_list(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-73
Device Parallel Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-73
dev_parallel_device_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-74
dev_parallel_device_body() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-74
dev_parallel_device_count(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-75
dev_parallel_device_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-75
dev_parallel_device_pin(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-76
dev_parallel_device_polygon_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-76
dev_parallel_device_processing_layer_polygon_id() . . . . . . . . . . . . . . . . . 4-77
dev_parallel_device_sum_double_property(). . . . . . . . . . . . . . . . . . . . . . . 4-77
dev_parallel_device_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-78
Device Error Utility Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-79
dev_set_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-79
polygon_set Property Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-79
dev_box_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-79
dev_box_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-80
dev_coil_space(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-80
dev_coil_turns() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-80
dev_coil_width() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-81
dev_count_devices(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-81
dev_count_polygon_coordinates() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-82
dev_count_polygons() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-82
dev_generate_compound_device_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-82
dev_get_polygon_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-83
dev_get_polygon_list_of_list_of_double_property() . . . . . . . . . . . . . . . . . . 4-84
dev_get_polygon_matrix_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-85
dev_get_polygon_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-86
dev_grow_polygon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-86
dev_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-87
dev_polygon_bends() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-88
dev_polygon_coordinates() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-88
dev_polygon_perim() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-89
dev_single_polygon_set(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-89

Chapter 2: Contents
Contents xxi
2-xxi
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_size_polygon(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-89
dev_top_polygon_coordinate_list(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-90
polygon_set to polygon_set Property Utility Functions . . . . . . . . . . . . . . . . . . . 4-90
dev_and() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-90
dev_coil_path_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-91
dev_count_coincident_edges(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-91
dev_count_inside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-91
dev_count_outside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-92
dev_cutting() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-92
dev_inside() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-92
dev_inside_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-93
dev_inside_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-93
dev_inside_touch_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-94
dev_interacting() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-94
dev_not(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-94
dev_or() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-95
dev_outside_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-95
dev_outside_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-95
dev_outside_touch_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-96
dev_proximity_list(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-97
dev_touch_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-101
dev_touching() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-102
Saving Properties Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-102
dev_device_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-102
dev_is_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-103
dev_pin_net_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-103
dev_save_double_list_properties(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-103
dev_save_double_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-104
dev_save_polygon_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-104
dev_save_string_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-105
dev_set_pin_coordinates() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-105
dev_unique_identifier() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-106
Retrieving polygon_set Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-107
dev_body() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-107
dev_pin(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-107
dev_processing_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-108
dev_processing_layer_polygon_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-108
dev_processing_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-109
dev_recognition_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-110
Flexible Netlisting Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-110

Contents xxii
IC Validator Reference Manual Version N-2017.12-SP2

flx_device_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-111
flx_device_type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-112
flx_get_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-112
flx_get_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-112
flx_instance_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-113
flx_is_shorted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-113
flx_pin_net_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-113
flx_write_to_spice_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-113
Dynamic Linking Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-114
dev_dlink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-114
dev_dlink_library() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-115
Density Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-116
Layout Density Utility Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-116
den_generate_next_step() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-116
den_layer_empty() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-120
den_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-121
den_save_sized_window() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-121
den_save_window() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-122
den_window_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-123
den_window_bottom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-124
den_window_left(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-124
den_window_right() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-124
den_window_statistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-124
den_window_top() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-125
Gradient Density Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-125
gden_layer_empty() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-127
gden_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-127
gden_save_window() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-128
gden_window_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-129
gden_window_bottom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-130
gden_window_left(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-130
gden_window_right() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-130
gden_window_statistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-130
gden_window_top() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-131
gden_window_valid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-131
Fill Pattern Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-132
fp_generate_fill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-132
fp_get_current_polygon(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-137

Chapter 2: Contents
Contents xxiii
2-xxiii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fp_new_polygon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-137
fp_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-138
fp_polygon_center_diamond() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-138
fp_polygon_center_square() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-139
fp_polygon_center_triangle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-139
fp_polygon_coordinate_x() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-140
fp_polygon_coordinate_y() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-140
fp_polygon_diagonal_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-140
fp_polygon_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-141
fp_polygon_max_rectangle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-141
fp_polygon_max_square() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-141
fp_polygon_num_coordinates() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-142
fp_set_polygon_coordinate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-142
Net Polygon Select Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-142
nps_get_sum_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-143
nps_net_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-143
nps_net_data_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-144
nps_net_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-144
nps_polygon_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-145
nps_polygon_extent_bottom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-145
nps_polygon_extent_left() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-145
nps_polygon_extent_right() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-145
nps_polygon_extent_top() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-146
nps_polygon_perimeter(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-146
nps_read_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-146
nps_save_polygon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-147
nps_save_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-147
nps_save_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-148
Net Select Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-148
ns_coupled_layer_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-149
ns_coupled_layer_exist(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-149
ns_coupled_net_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-150
ns_coupled_net_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-151
ns_get_coupled_net_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-151
ns_get_net_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-152
ns_get_sum_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-152

Contents xxiv
IC Validator Reference Manual Version N-2017.12-SP2

ns_net_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-153
ns_net_data_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-153
ns_net_id(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-154
ns_net_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-154
ns_net_texted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-154
ns_save_all_nets(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-155
ns_save_coupled_layer(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-155
ns_save_coupled_layer_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-156
ns_save_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-157
Net Select Inside of Layer Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-157
nsil_net_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-158
nsil_net_data_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-158
nsil_save_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-158
nsil_save_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-159
Net Property Select Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-160
nprops_net_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-160
nprops_net_data_count(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-160
nprops_net_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-161
nprops_net_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-161
nprops_net_texted(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-161
nprops_read_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-162
nprops_save_net(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-162
nprops_save_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-163
Net Polygon by Property Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-163
npbp_get_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-164
npbp_get_max_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-164
npbp_get_min_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-165
npbp_net_data_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-166
npbp_net_data_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-166
npbp_net_data_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-166
npbp_save_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-167
npbp_save_properties(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-167
Property to Net Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-168
ptn_get_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-168
ptn_get_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-168

Chapter 2: Contents
Contents xxv
2-xxv
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ptn_get_max_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-169
ptn_get_min_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-170
ptn_get_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-172
ptn_net_data_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-173
ptn_save_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-173
ptn_save_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-173
ptn_save_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-174
Polygon Features Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-174
pf_fnote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-175
pf_get_current_polygon(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-176
pf_new_polygon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-176
pf_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-177
pf_polygon_center_diamond() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-177
pf_polygon_center_square() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-177
pf_polygon_center_triangle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-178
pf_polygon_coordinate_x() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-179
pf_polygon_coordinate_y() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-179
pf_polygon_diagonal_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-179
pf_polygon_extent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-179
pf_polygon_max_rectangle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-180
pf_polygon_max_square() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-180
pf_polygon_num_coordinates() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-180
pf_save_polygon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-181
pf_set_polygon_coordinate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-181
Compare Utility Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-181
Writing Compare Remote Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-182
Filter Remote Functions During Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . 4-182
Exclude Remote Functions During Merging . . . . . . . . . . . . . . . . . . . . . . . . 4-182
Property Remote Functions During Merging . . . . . . . . . . . . . . . . . . . . . . . 4-183
Property Remote Functions During Check Property. . . . . . . . . . . . . . . . . . 4-183
Special-Purpose Compare Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-184
lvs_count_candidates(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-184
lvs_current_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-184
lvs_exclude_from_merge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-184
lvs_get_candidate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-185
lvs_layout_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-185
lvs_property_error() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-185

Contents xxvi
IC Validator Reference Manual Version N-2017.12-SP2

lvs_remove_device(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-186
lvs_save_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-186
lvs_save_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-187
lvs_schematic_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-187
General-Purpose Compare Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-187
lvs_all_equal(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-187
lvs_are_nets_identical() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-188
lvs_avg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-188
lvs_count_device_pins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-188
lvs_count_devices_on_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-189
lvs_count_members() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-189
lvs_count_pins_on_net(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-189
lvs_device_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-190
lvs_device_type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-190
lvs_get_compare_tolerance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-190
lvs_get_device_nets_by_index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-192
lvs_get_device_nets_by_pin_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-192
lvs_get_device_on_net(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-193
lvs_get_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-194
lvs_get_exclude_tolerance(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-194
lvs_get_member(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-195
lvs_get_pin_name_on_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-195
lvs_get_parent_instance_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-196
lvs_get_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-196
lvs_instance_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-197
lvs_is_capacitor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-197
lvs_is_composite() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-197
lvs_is_generic(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-198
lvs_is_inductor() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-198
lvs_is_layout_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-198
lvs_is_member() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-199
lvs_is_net_floating() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-199
lvs_is_net_ground() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-199
lvs_is_net_port() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-199
lvs_is_net_power() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-200
lvs_is_nmos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-200
lvs_is_np() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-200
lvs_is_npn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-201
lvs_is_parallel(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-201
lvs_is_parallel_chain() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-201
lvs_is_pmos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-202

Chapter 2: Contents
Contents xxvii
2-xxvii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_is_pn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-202
lvs_is_pnp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-202
lvs_is_resistor(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-202
lvs_is_schematic_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-203
lvs_is_series(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-203
lvs_is_top_block() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-203
lvs_max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-204
lvs_min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-204
lvs_net_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-204
lvs_product() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-205
lvs_same_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-205
lvs_schematic_layout_net_match() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-205
lvs_split_series_chain() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-206
lvs_sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-206
lvs_sum_of_divisions() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-207
lvs_sum_of_products() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-207
lvs_sum_of_reciprocals() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-208
Edge Features Edge Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-208
efe_get_current_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-208
efe_new_edge(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-209
efe_edge_coordinate_x(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-209
efe_edge_coordinate_y(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-209
efe_save_edge() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-210
efe_set_edge_coordinate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-210
DRC Features Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-211
df_common_double_property_index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-212
df_edge_count(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-213
df_edge_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-214
df_edge_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-214
df_edge_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-215
df_edge_horizontal_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-215
df_edge_max_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-216
df_edge_min_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-216
df_edge_proximity() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-217
df_edge_sum_horizontal_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-221
df_edge_sum_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-221
df_edge_sum_vertical_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-222
df_edge_sum_x_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-222

Contents xxviii
IC Validator Reference Manual Version N-2017.12-SP2

df_edge_sum_y_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-223
df_edge_vertical_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-223
df_edge_x_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-223
df_edge_y_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-224
df_error_angle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-224
df_error_max_angle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-225
df_error_min_angle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-225
df_error_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-226
df_error_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-226
df_error_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-227
df_error_horizontal_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-227
df_error_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-228
df_error_max_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-228
df_error_max_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-229
df_error_max_sum_orthogonal_projection_length() . . . . . . . . . . . . . . . . . . . . . 4-229
df_error_min_distance(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-230
df_error_min_projection_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-231
df_error_min_sum_orthogonal_projection_length(). . . . . . . . . . . . . . . . . . . . . . 4-231
df_error_parallel_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-232
df_error_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-232
df_error_sum_angle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-233
df_error_sum_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-233
df_error_sum_horizontal_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-234
df_error_sum_horizontal_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . 4-234
df_error_sum_parallel_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-235
df_error_sum_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-236
df_error_sum_vertical_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-236
df_error_sum_vertical_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-236
df_error_sum_x_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-237
df_error_sum_x_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-238
df_error_sum_y_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-238
df_error_sum_y_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-239
df_error_vertical_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-239
df_error_x_distance(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-240
df_error_x_projection_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-240
df_error_y_distance(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-241

Chapter 2: Contents
Contents xxix
2-xxix
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_error_y_projection_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-241
df_fnote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-242
df_get_current_data() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-243
df_get_edge_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-243
df_get_edge_matrix_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-244
df_get_edge_max_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-244
df_get_edge_min_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-245
df_get_edge_net_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-246
df_get_edge_net_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-246
df_get_edge_net_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-247
df_get_edge_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-248
df_get_edge_string_property_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-249
df_get_edge_sum_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-249
df_get_error_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-250
df_get_error_max_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-251
df_get_error_min_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-251
df_get_error_string_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-252
df_get_error_string_property_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-253
df_get_error_sum_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-254
df_get_marker_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-254
df_get_marker_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-255
df_get_polygon_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-256
df_get_polygon_list_of_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . 4-257
df_get_polygon_max_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-257
df_get_polygon_min_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-258
df_get_polygon_net_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-259
df_get_polygon_net_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . 4-260
df_get_polygon_net_string_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-260
df_get_polygon_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-261
df_get_polygon_string_property_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-262
df_get_polygon_sum_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-263
df_marker_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-263
df_marker_exist(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-264
df_marker_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-264
df_marker_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-265
df_polygon_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-265

Contents xxx
IC Validator Reference Manual Version N-2017.12-SP2

df_nets_in_sync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-266
df_polygon_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-266
df_polygon_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-267
df_polygon_horizontal_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-267
df_polygon_layer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-268
df_polygon_max_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-268
df_polygon_max_perimeter(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-269
df_polygon_min_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-269
df_polygon_min_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-270
df_polygon_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-270
df_polygon_same_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-271
df_polygon_sum_area(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-271
df_polygon_sum_horizontal_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-271
df_polygon_sum_perimeter(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-272
df_polygon_sum_vertical_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-272
df_polygon_sum_x_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-273
df_polygon_sum_y_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-273
df_polygon_vertical_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-274
df_polygon_x_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-274
df_polygon_y_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-275
df_report_double() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-275
df_report_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-276
df_save_data(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-277
df_save_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-278
df_save_list_of_list_of_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-278
df_save_matrix_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-279
df_save_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-280
df_save_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-281
DFM Features Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-282
dfm_aggregate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-282
dfm_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-283
dfm_count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-283
dfm_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-283
dfm_exist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-284
dfm_fnote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-285
dfm_get_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-285

Chapter 2: Contents
Contents xxxi
2-xxxi
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_get_max_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-286
dfm_get_min_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-286
dfm_get_product_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-287
dfm_get_sum_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-287
dfm_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-288
dfm_max_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-288
dfm_max_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-288
dfm_max_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-289
dfm_max_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-289
dfm_max_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-290
dfm_min_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-290
dfm_min_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-290
dfm_min_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-291
dfm_min_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-291
dfm_min_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-292
dfm_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-292
dfm_product_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-292
dfm_product_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-293
dfm_product_length(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-293
dfm_product_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-294
dfm_product_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-294
dfm_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-295
dfm_report_double() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-295
dfm_save_data() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-295
dfm_save_double_property(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-296
dfm_sum_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-296
dfm_sum_distance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-297
dfm_sum_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-297
dfm_sum_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-298
dfm_sum_projection_length() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-298
dfm_window_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-298
dfm_window_bottom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-299
dfm_window_left() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-299
dfm_window_perimeter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-299
dfm_window_right() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-300
dfm_window_top() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-300

Contents xxxii
IC Validator Reference Manual Version N-2017.12-SP2

Unified Fill Utility Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-301


uf_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-301
uf_save_window() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-301
uf_window_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-302
EERC Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-303
Finding Functions by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-304
Netlist Setup and Debug Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-304
Hierarchical Netlist Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-305
Iterator Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-306
Netlist Object Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-308
Error Reporting and Layer Generation Functions. . . . . . . . . . . . . . . . . . . . 4-311
Functions Listed by Input Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-312
ndb_cache_to_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-315
ndb_cell_device(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-315
ndb_cell_instance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-316
ndb_cell_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-317
ndb_cell_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-317
ndb_cells() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-318
ndb_debug_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-318
ndb_debug_snapshot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-319
ndb_device_double_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-320
ndb_device_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-320
ndb_device_model_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-321
ndb_device_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-322
ndb_device_pin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-322
ndb_device_pins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-323
ndb_device_string_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-324
ndb_device_type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-324
ndb_devices() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-325
ndb_find_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-326
ndb_find_instance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-335
ndb_find_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-339
ndb_get_ground_net_names() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-350
ndb_get_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-351
ndb_get_netlist_attribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-351
ndb_get_power_net_names() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-352
ndb_import_tags_from_cache_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-353

Chapter 2: Contents
Contents xxxiii
2-xxxiii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_instance_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-354
ndb_instance_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-354
ndb_instance_pin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-355
ndb_instance_pins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-355
ndb_instances() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-356
ndb_is_net_port(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-356
ndb_is_selected_rule() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-357
ndb_net_device_pins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-357
ndb_net_double_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-358
ndb_net_instance_pins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-358
ndb_net_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-359
ndb_netlist_cell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-359
ndb_netlist_top_cell(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-360
ndb_nets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-360
ndb_pin_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-361
ndb_pin_instance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-361
ndb_pin_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-362
ndb_pin_net(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-362
ndb_ports() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-363
ndb_propagate_net_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-363
ndb_propagate_tags() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-367
ndb_remove_tags() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-370
ndb_report_device(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-371
ndb_report_instance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-376
ndb_report_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-381
ndb_report_top_cell_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-385
ndb_report_top_cell_instance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-387
ndb_report_top_cell_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-389
ndb_reset_cache(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-391
ndb_save_device_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-391
ndb_save_netlist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-392
ndb_save_top_cell_device() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-393
ndb_save_top_cell_device_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-393
ndb_save_top_cell_net() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-394
ndb_set_device_report_info() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-395
ndb_set_device_tag_by_hierarchical_name() . . . . . . . . . . . . . . . . . . . . . . . . . . 4-397

Contents xxxiv
IC Validator Reference Manual Version N-2017.12-SP2

ndb_set_instance_report_info() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-398
ndb_set_instance_tag_by_hierarchical_name() . . . . . . . . . . . . . . . . . . . . . . . . 4-401
ndb_set_net_report_info() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-401
ndb_set_net_tag_by_hierarchical_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-403
ndb_set_netlist_attribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-404
ndb_set_sum_values() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-405
ndb_set_top_cell_device_tag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-405
ndb_set_top_cell_instance_tag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-406
ndb_set_top_cell_net_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-406
ndb_set_top_cell_net_tag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-407
ndb_sum_device_values(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-407
ndb_top_cell_device_tag(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-410
ndb_top_cell_instance_tag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-411
ndb_top_cell_net_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-411
ndb_top_cell_net_tag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-412
ndb_total_resistance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-412

Appendix A. Runset Basics


Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3
Function Naming Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3
Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-4
Connect Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-5
Units of Measure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-6
Results of Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-6
Layout Layer and Datatype Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-6
Limits on Number of Vertices of a Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-8
Strings and Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-8
Length of Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-8
Cell Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-9
Net Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-9
Device Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-9
Text Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-10
String Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-11

Chapter 2: Contents
Contents xxxv
2-xxxv
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Order in Runsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-11


Layer Ancestry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-12
Polygon Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-12
Polygon Creator Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-12
Polygon Selector Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-13
Hybrid Polygon Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-14
Edge Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-15
Edge Creator Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-15
Edge Selector Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-16
Hybrid Edge Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-17
Polygon Membership of Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-18
Using Copy Functions Versus Variable Assignment . . . . . . . . . . . . . . . . . . . . . A-18
Spacing Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-18
Precision of 45-Degree Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-19
Edge Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-21
Opposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-21
Check Region Formation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-24
NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-24
NONE_INCLUSIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-25
RADIAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-25
SQUARE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-25
RECTANGLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-26
EDGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-26
Boundary Conditions with Inclusive Constraints. . . . . . . . . . . . . . . . . . . . . A-27
Output Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-28
Point-to-Point Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-31

Appendix B. Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
Data Creation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-40
Compare Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-49

Glossary

Index

Contents xxxvi
Preface
This preface includes the following sections:
• About This Manual
• Customer Support

xxxvii
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

About This Manual


This manual describes the IC Validator functions.

Audience
This manual is designed to enhance both beginning and advanced users’ knowledge of the
IC Validator functions.

Related Publications
For additional information about the IC Validator tool, see the documentation on the
®
SolvNet online support site at the following address:
https://solvnet.synopsys.com/DocsOnWeb
You might also want to see the documentation for the following related Synopsys products:

• Custom Compiler
• IC Compiler™
• IC Compiler II™
• StarRC™

Release Notes
Information about new features, enhancements, changes, known limitations, and resolved
Synopsys Technical Action Requests (STARs) is available in the IC Validator Release Notes
on the SolvNet site.
To see the IC Validator Release Notes,
1. Go to the SolvNet Download Center located at the following address:
https://solvnet.synopsys.com/DownloadCenter
2. Select IC Validator, and then select a release in the list that appears.

Preface
About This Manual xxxviii
IC Validator Reference Manual Version N-2017.12-SP2

Conventions
The following conventions are used in Synopsys documentation.

Convention Description

Courier Indicates syntax, such as write_file.

Courier italic Indicates a user-defined value in syntax, such as


write_file design_list.

Courier bold Indicates user input—text you type verbatim—in


examples, such as
prompt> write_file top

[] Denotes optional arguments in syntax, such as


write_file [-format fmt]

... Indicates that arguments can be repeated as many


times as needed, such as
pin1 pin2 ... pinN

| Indicates a choice among alternatives, such as


low | medium | high

Ctrl+C Indicates a keyboard combination, such as holding


down the Ctrl key and pressing C.

\ Indicates a continuation of a command line.

/ Indicates levels of directory structure.

Edit > Copy Indicates a path to a menu command, such as


opening the Edit menu and choosing Copy.

Preface 3: Preface
Chapter
About This Manual 3-xxxix
xxxix
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Customer Support
Customer support is available through SolvNet online customer support and through
contacting the Synopsys Technical Support Center.

Accessing SolvNet
The SolvNet site includes a knowledge base of technical articles and answers to frequently
asked questions about Synopsys tools. The SolvNet site also gives you access to a wide
range of Synopsys online services including software downloads, documentation, and
technical support.
To access SolvNet, go to the following address:
https://solvnet.synopsys.com
If prompted, enter your user name and password. If you do not have a Synopsys user name
and password, follow the instructions to sign up for an account.
If you need help using the SolvNet site, click HELP in the top-right menu bar.

Contacting the Synopsys Technical Support Center


If you have problems, questions, or suggestions, you can contact the Synopsys Technical
Support Center in the following ways:
• Open a support case to your local support center online by signing in to the SolvNet site
at https://solvnet.synopsys.com, clicking Support, and then clicking “Open A Support
Case.”
• Send an e-mail message to your local support center.
❍ E-mail support_center@synopsys.com from within North America.
❍ Find other local support center e-mail addresses at
https://www.synopsys.com/support/global-support-centers.html
• Telephone your local support center.
❍ Call (800) 245-8005 from within North America.
❍ Find other local support center telephone numbers at
https://www.synopsys.com/support/global-support-centers.html

Preface
Customer Support xl
1
Tables of Runset Functions 1

This chapter provides listings of the IC Validator runset functions.

The functions listed in this chapter are described in Chapter 2, “Runset Functions: A - I” and
Chapter 3, “Runset Functions: J - Z.” The functions described in Chapter 4, “Utility
Functions” are not listed in this chapter.
To help you understand and use the functions, see the IC Validator User Guide, including
the Command-Line Options section in the “IC Validator Basics” chapter. In addition, see the
basic runset information in Appendix A, “Runset Basics.”
The functions are listed in these sections:
• Option Functions
• Methodology Check Functions
• Unified Fill Functions
• Parasitic Extraction Functions
• Pattern Match Functions
• Coloring Functions
• All Runset Functions

1-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Option Functions
The option functions control how input data is processed and provide control to the
IC Validator tool. In the runset, these functions must come before the assign and command
functions.
Table 1-1 Summary of the Option Functions

Function Definition

equiv_options() Specifies cells in the schematic and layout netlists for


comparison.

error_options() Specifies the error output for the design being verified.

gds_options() Specifies the behavior when reading GDSII input.

hierarchy_auto_options() Specifies the hierarchy optimizations that are automatically


performed on the input design hierarchy.

hierarchy_options() Modifies the hierarchy in the input layout.

incremental_options() Specifies a subset of the input layout to be processed.

layout_drawn_options() Specifies criteria for checking and correction of various invalid


layout data.

layout_grid_options() Specifies criteria for grid checking of layers.

layout_integrity_by_cell() Checks the specified cells against the specified layout


integrity databases (LIDBs).

layout_integrity_by_marker_lay Checks any design cell containing data on the specified


er() marker layer against the specified layout integrity databases
(LIDBs).

layout_integrity_options() Specifies which layout integrity databases (LIDBs) should be


used for checking cells in the design.

library() Registers a library for other functions.

library_create() Creates a one-cell library that has no data.

library_import() Reads in the specified library and places its top cell under the
top cell of the design library.

lvs_black_box_options() Defines which equivalence cells are black-box cells.

Chapter 1: Tables of Runset Functions


Option Functions 1-2
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-1 Summary of the Option Functions (Continued)

Function Definition

lvs_options() Generates user-intended and system-generated equivalence


cell pairings.

milkyway_merge_library_options Specifies a mapping from the master and reference Milkyway


() libraries to replacement libraries that are read in with
Milkyway data at the start of a verification run.

milkyway_options() Specifies the behavior when reading a Milkyway library.

net_options() Controls the declaration of schematic power, ground, and


global nets in the schematic netlist.

oasis_options() Specifies the behavior when reading OASIS input.

openaccess_options() Specifies the behavior when reading OpenAccess input.

pattern_options() Defines the pattern library path to access a pattern library


used by the pattern_learn() and pattern_match()
functions.

prototype_options() Defines the criteria for the creation of prototype cells during
hierarchical preprocessing.

resolution_options() Specifies resolution and snapping values.

run_options() Specifies directories, files, and run variations.

text_options() Specifies how layout text objects are processed as they are
read in as a text layer.

Chapter 1: Tables of Runset Functions


Option Functions 1-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Methodology Check Functions


Only use the methodology check functions if you are doing hierarchy-specific manipulation
of data.
Disclaimers
The following disclaimers apply to these functions. For each function, the applicable
disclaimers are listed in their description section.
1. Preserving Cells: Cell names specified in these methodology check functions are
automatically added to the no_explode argument list in the hierarchy_options()
function. An exception to this preserving of cells is that "*" does not add to the
no_explode list.
If the keep_cells argument in a methodology check function is set to false, the
selected cells are not marked no_explode. This means they might be exploded during
hierarchy optimization. If a selected cell does get exploded, the selected data is placed
in the parent cell.
Note:
Disabling or limiting automatic hierarchy optimization can have a significant negative
impact on performance and is discouraged.
2. Hierarchy: Although efforts are made to maintain the most efficient hierarchy, the
hierarchical location of geometric data in derived layers is not guaranteed. Layer
operations can move data up or down the hierarchy to facilitate their implementation.
This hierarchy movement can lead to unexpected results from methodology check
functions that specify cell names with derived layers.
Table 1-2 Summary of the Methodology Check Functions

Function Definition

cell_extent() Creates a polygon layer that consists of a rectangle in each of


the specified cells that is equal to the extents of the cell. The
extents of the cell are defined by all layers read from the input
library and include geometric data and placements.

cell_extent_layer() Creates a polygon layer that consists of a rectangle in each of


the specified cells that is equal to the extents of the cell. The
extents of the cell are defined by a layer and include
geometric data and placements.

copy_by_cells() Creates a layer by copying the specified layer from the


specified list of cells.

flatten_by_cells() Creates a copy of a layer by flattening the specified cells.

Chapter 1: Tables of Runset Functions


Methodology Check Functions 1-4
IC Validator Reference Manual Version N-2017.12-SP2

Unified Fill Functions


Use the function listed in Table 1-3 for unified fill operations.
Table 1-3 Summary of the Unified Fill Functions

Function Definition

unified_fill() Automatically generates a wide range of fill pattern types


while satisfying stringent spacing rules and target densities.

NDM Functions
Use the functions listed in Table 1-4 for NDM operations.
Table 1-4 Summary of the NDM Functions

Function Definition

exclude_ndm_blockage_types() Returns a list of NDM blockage types that are not specified in
the exclude argument.

exclude_ndm_design_types() Returns a list of NDM design types that are not specified in the
exclude argument.

exclude_ndm_net_types() Returns a list of NDM net types that are not specified in the
exclude argument.

exclude_ndm_shape_uses() Returns a list of NDM design types that are not specified in the
exclude argument.

ndm_library() Defines an NDM library name and returns a handle to be used


by the output_library argument of the write_ndm()
function.

ndm_merge_library_options() Specifies a mapping from the master and reference NDM


libraries to replacement GDSII and OASIS libraries that are
read in with NDM data at the start of a verification run.

ndm_options() Specifies the behavior of the IC Validator tool when reading an


NDM library.

write_ndm() Writes layers and violations to an NDM library.

Chapter 1: Tables of Runset Functions


Unified Fill Functions 1-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Parasitic Extraction Functions


Use the functions listed in Table 1-5 for parasitic extraction.
Table 1-5 Summary of the Parasitic Extraction Functions

Function Definition

init_pex_layer_matrix() Creates a PEX layer matrix database.

pex_cell_extents_file() Defines a cell extents file.

pex_cell_port_file() Defines a cell port file.

pex_color_layer_map() Stores, in the PEX layer matrix, mapping between PXL layer
objects and parasitic extraction color layer parameters.

pex_conducting_layer_map() Stores mapping between PXL layer objects and parasitic


extraction conducting layer parameters.

pex_generate_database() Generates the outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_lpp_map() Generates the parasitic extraction LPP mapping file.

pex_generate_process_map() Generates the parasitic extraction layer mapping file.

pex_generate_results() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_simple_database() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_simple_results() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_ignore_cap_layer_map() Creates entries in the IGNORE_CAP_LAYERS section of the


pex_process_map_file based on PXL layer objects.

pex_library_layer_map_file() Defines a layout library map file.

pex_lpp_map_file() Generates a file handle for the output of the StarRC parasitic
extraction OA_LAYER_MAPPING_FILE.

pex_marker_layer_map() Stores mapping between PXL layer objects and parasitic


extraction marker layers parameters.

Chapter 1: Tables of Runset Functions


Parasitic Extraction Functions 1-6
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-5 Summary of the Parasitic Extraction Functions (Continued)

Function Definition

pex_process_map_file() Generates a file handle for the output of the StarRC parasitic
extraction MAPPING_FILE.

pex_qtf_layers() Specifies which layers from Quickcap Technology File (QTF)


are used during StarRC–QTF extraction flow.

pex_qtf_layer_map() Stores, in the PEX layer matrix, mapping between PXL layer
objects and parasitic extraction QTF layer parameters.

pex_remove_layer_map() Stores a PXL layer object as a parasitic extraction remove


layer in the PEX layer matrix.

pex_runset_report_file() Generates a handle for the output of the parasitic extraction


runset report file.

pex_simple_layer_maps() Specifies the tag name for a layer.

pex_unconnected_layer_map() Writes unconnected layers to the output parasitic extraction


layout database for the StarRC tool and to the corresponding
section in the StarRC MAPPING_FILE.

pex_via_layer_map() Stores mapping between PXL layer objects and parasitic


extraction via layer parameters.

pex_viewonly_layer_map() Stores extra PXL layer objects within the output StarRC
parasitic extraction layout database.

Pattern Match Functions


This section lists the pattern match functions in the IC Validator tool.
Table 1-6 Summary of the Pattern Match Functions

Function Definition

marker_merge() Converts a marker layer to a polygon layer.

optional_pattern_markers() Returns a list of polygon layers associated with the


pattern marker layer that is returned by the
pattern_match() function.

Chapter 1: Tables of Runset Functions


Pattern Match Functions 1-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-6 Summary of the Pattern Match Functions (Continued)

Function Definition

pattern_learn() Creates a new pattern library or updates an existing


pattern library with input source patterns.

pattern_library() Defines the name and path of a pattern library and


returns a handle to be used by the
pattern_library_handle argument of all the pattern
matching functions.

pattern_library_compare() Compares two pattern libraries and outputs a text


report.

pattern_library_lock() Adds the write and view protection to a pattern library.

pattern_library_merge() Merges a list of pattern libraries into one pattern library.

pattern_library_read() Converts a pattern library to IC Validator group files.

pattern_match() Captures patterns on a design that match patterns in a


specified pattern library.

pattern_options() Defines the pattern library path to access a pattern


library used by the pattern_library_lock(),
pattern_library_read(), pattern_learn(), and
pattern_match() functions.

select_marker_by_double_property() Retrieves the pattern markers based on the specified


property name and double value pair.

select_marker_by_string_property() Retrieves the pattern markers based on the specified


property name and string value pair.

Coloring Functions
This section lists the coloring functions in the IC Validator tool.
Table 1-7 Summary of the Coloring Functions

Function Definition

coloring_links() Generates link polygons that are used in multiple


patterning flows.

Chapter 1: Tables of Runset Functions


Coloring Functions 1-8
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-7 Summary of the Coloring Functions (Continued)

Function Definition

coloring_links_edge() Generates link edges that are used in multiple


patterning flows.

four_color() In multi-patterning flows, checks whether a given layer


can be decomposed into four colors.

three_color() In triple-patterning flows, checks whether a given layer


can be decomposed into three colors.

two_color() In double-patterning flows, checks whether a given


layer can be decomposed into two colors.

All Runset Functions


Table 1-8 contains a summary of all IC Validator runset functions. These functions are
described in Chapter 2, “Runset Functions: A - I,” and Chapter 3, “Runset Functions: J - Z.”
Note:
The utility functions are not listed in Table 1-8. See Chapter 4, “Utility Functions,” for
descriptions of these functions.
Table 1-8 Summary of All Runset Functions

Function Definition

adjacent_edge() and Selects edges based on their length, the angles at their
not_adjacent_edge() endpoints, and their respective adjacent lengths. The
complement of the adjacent_edge() function is the
not_adjacent_edge() function.

and() Creates polygons that represent the intersection of the layers.

and_edge() Selects the portion of all edges on a layer that are inside
polygons of another layer.

and_overlap() Creates polygons that represent the hierarchical intersections


of the material in two layers.

angle_edge() and Selects edges based on the specified minimum angle with the
not_angle_edge() x-axis. The complement of the angle_edge() function is the
not_angle_edge() function.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

annotate_by_property() Makes a copy of a polygon layer annotated with user-defined


properties from nets in the connect database.

area() and not_area() Selects polygons whose area fits the specified value. The
complement of the area() function is the not_area()
function.

aspect_ratio() and Selects polygons on a layer that are rectangles which fit the
not_aspect_ratio() specified aspect ratio. The complement of the
aspect_ratio() function is the not_aspect_ratio()
function.

assign() Assigns a polygon-layer variable to data found on layers in the


layout.

assign_edge() Assigns an edge-layer variable to data found on layers in the


layout.

assign_openaccess() Assigns a polygon-layer variable to data found on layers in the


layout.

assign_openaccess_edge() Assigns an edge-layer variable to data found on layers in the


layout.

assign_openaccess_text() Assigns a text-layer variable to the text found on layers in the


layout.

assign_text() Assigns a text-layer variable to the text found on layers in the


layout.

buildsub() Creates isolated substrate regions from a layer containing


isolation definition data.

capacitor() Collects extraction configuration information about intentional


capacitors that are defined by a device body layer and two
terminal layers.

cell_extent() Creates a polygon layer that consists of a rectangle in each of


the specified cells which is equal to the extents of the cell. The
extents of the cell are defined by all layers read from the input
library and include geometric data and placements.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-10
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

cell_extent_layer() Creates a polygon layer that consists of a rectangle in each of


the specified cells which is equal to the extents of the cell. The
extents of the cell are defined by a layer and include
geometric data and placements.

center_to_center1() Creates polygons that consist of rectangles formed by


center-to-center violations.

center_to_center1_edge() Creates edges that consist of center-to-center violations.

center_to_center1_error() Creates errors that consist of center-to-center violations.

center_to_center2() Creates polygons that consist of rectangles formed by


center-to-center violations.

center_to_center2_edge() Creates edges that consist of center-to-center violations.

center_to_center2_error() Creates errors that consist of center-to-center violations.

check_property() Checks whether properties are equal between matched


devices within a specified tolerance.

check_property_off() Disables checking of properties for specified devices.

check_symmetry() Checks the symmetry of the target layer polygons against the
created, mirrored context layer polygons.

checkpoint() Saves the state of a run.

chip_extent() Creates a polygon layer that consists of a single rectangle in


the top cell which is equal to the extents of the top cell.

coincident_edge() and Selects the portion of all edges on a layer that are coincident
not_coincident_edge() with edges of another layer. The complement of the
coincident_edge() function is the not_coincident_edge()
function.

coincident_inside_edge() and Selects the portion of all edges on a layer that are inside
not_coincident_inside_edge() coincident with the edges on another layer. The complement
of the coincident_inside_edge() function is the
not_coincident_inside_edge() function.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

coincident_outside_edge() and Selects the portion of all edges on a layer that are outside
not_coincident_outside_edge() coincident with the edges on another layer. The complement
of the coincident_outside_edge() function is the
not_coincident_outside_edge() function.

color_conflict_layers() Assigns color-layer groups.

color_conflict_layers_order() Assigns ordered color-layer groups.

compare() Starts the netlist comparison.

connect() Creates a connect database that defines electrical


connectivity for layers.

contains() and not_contains() Selects polygons that are large enough to fully enclose the
specified rectangle. The complement of the contains()
function is the not_contains() function.

copy() Creates a copy of a polygon layer.

copy_by_cells() Creates a layer by copying the specified layer from the


specified list of cells.

copy_by_layout_equiv_cells() Creates a layer by copying the specified layer from the layout
equivalence cells that are identified in the runset using the
equiv_options() function.

copy_edge() Creates a copy of an edge layer.

copy_error() Creates a copy of the geometric data in an error layer.

covered_by() Selects rectangles from one layer that fit enclosure


specifications within another layer using a spacing check.

create_ports() Creates top-level ports for the specified connect database.

cutting() and not_cutting() Selects data from one layer that cuts data from another layer.
The complement of the cutting() function is the
not_cutting() function.

data_filter() Outputs a specific number of polygons from the input layer


that are connected to each net

data_limit() Copies polygons of a layer based on a specified limit.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-12
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

data_limit_edge() Copies edges of a layer based on a specified limit.

delta_edge() and Selects edges that meet the specified delta-x and delta-y
not_delta_edge() constraints. The complement of the delta_edge() function is
the not_delta_edge() function.

delta_error() and Selects errors that meet the specified delta-x and delta-y
not_delta_error() constraints for error distance. The complement of the
delta_error() function is the not_delta_error() function.

density() Checks the layout density based on user-programmable


density equations.

density_statistics_file() Defines a statistics file.

dev_dlink_library_close() Closes the dynamic-link library.

dev_dlink_library_open() Opens the dynamic-link library.

device_connected_to() and Selects polygons from devices that are connected to nets with
device_not_connected_to() the specified text. The complement of the
device_connected_to() function is the
device_not_connected_to() function.

device_net_count() Selects polygons from devices that have the specified net
count.

dfm_features() Provides access to aggregate geometric data on multiple


layers of all types in the context of a specified window.

donut_holes() Creates polygons that define the holes in any donut-shaped


data on a layer.

donuts() and not_donuts() Selects polygons of a layer that contain one or more holes.
The complement of the donuts() function is the
not_donuts() function.

drc_features() Provides access to geometric data on multiple layers.

drc_features_edge() Provides access to geometric data on multiple layers.

drc_features_error() Provides access to geometric data on multiple layers.

drc_features_marker() Provides access to geometric data on multiple layers.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

edge_extents() Creates rectangles from the extents of the edges of a layer.

edge_features_edge() Creates an edge layer from user-defined geometries based


on the characteristics of the input layer edges.

edge_grow() Creates polygons from the input layer that are oversized in the
specified directions by the specified distances.

edge_shrink() Creates polygons from the input layer that are undersized in
the specified directions by the specified distances.

edge_size() Creates polygons from a layer by expanding the individual


edges inward and outward.

edge_size_by_property() Creates rectangles from edges by expanding edges inward


and outward, extending edges, and shifting edges.

edges() Creates edges in the top cell using specified coordinates.

edtext_file() Defines an Edtext file handle.

eerc_analyze_netlist() Executes an EERC Python remote function for netlist


processing.

eerc_create_device_layer() Returns the body shapes for all of the devices in the results
database returned by an eerc_analyze_netlist() function.

eerc_create_device_list_layer( Returns either the body shapes or extents of each group of


) devices in the results database returned by an
eerc_analyze_netlist() function.

eerc_create_net_layer() Returns the shapes from the specified list of layers for all of
the nets in the results database returned by an
eerc_analyze_netlist() function.

eerc_import_net_properties_fro Reads a file from disk. The file contains a list of net names,
m_file() with one name on each line. Each column in the file
represents the name or value of a double property that should
be assigned to a net.

eerc_setup() Reads a netlist from disk, or from a layout extraction, and


prepares it for use in an EERC remote block through the
eerc_analyze_netlist() function.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-14
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

eerc_write_net_missing_propert Writes an output file containing the instance-based net names


y_file() of the nets that did not have properties propagated to them.

eerc_write_net_property_file() Writes an output file of instance-based net names and


associated propagated properties in the same format as the
file used for the
eerc_import_net_properties_from_file() function.

eerc_write_vue_debug_database( Writes debugging information for use in the IC Validator VUE


) tool.

empty_layer() Creates an empty polygon layer.

empty_layer_edge() Creates an empty edge layer.

empty_layer_marker() Creates an empty marker layer.

empty_violation() Creates an empty violation.

enclose() Creates polygons that are formed by pairs of violation edges.

enclose_corner() Creates polygons that are formed by pairs of violation


corners.

enclose_corner_edge() Creates edges that consist of pairs of violation corners.

enclose_edge() and Selects the portion of edges of two layers that violates the
not_enclose_edge() spacing constraints. The complement of the enclose_edge()
function is the not_enclose_edge() function.

enclose_error() Specifies the error output for the design being verified.

enclosing() and Selects polygons of a layer that fully enclose polygons of


not_enclosing() another layer. The complement of the enclosing() function
is the not_enclosing() function.

equiv_options() Specifies cells in the schematic and layout netlists for


comparison.

error_merge() Converts the errors to polygons.

error_merge_edge() Converts the errors to edges.

error_options() Specifies the error output for the design being verified.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

error_to_link_edge() Selects polygons from an error layer and returns an edge


layer that represents the shortest edge layer between each
error layer pair.

exclude_milkyway_cell_types() Returns a list of Milkyway cell types that are not specified.

exclude_milkyway_net_types() Returns a list of Milkyway net types that are not specified.

exclude_milkyway_route_guide_l Returns a list of Milkyway route guides that are not specified.
ayers()

exclude_milkyway_route_types() Returns a list of Milkyway route types that are not specified.

exclude_ndm_blockage_types() Returns a list of NDM blockage types that are not specified in
the exclude argument.

exclude_ndm_design_types() Returns a list of NDM design types that are not specified in the
exclude argument.

exclude_ndm_net_types() Returns a list of NDM net types that are not specified in the
exclude argument.

exclude_ndm_shape_uses() Returns a list of NDM design types that are not specified in the
exclude argument.

extend_edge() Creates an edge from an edge by extending or shortening the


endpoints.

extent() and not_extent() Selects polygons whose extents fit the specified dimensions.
The complement of the extent() function is the
not_extent() function.

external_corner1() Measures outside-to-outside spacing on a layer based on the


distance specified and creates polygons that are formed by
pairs of violation corners.

external_corner1_edge() Measures outside-to-outside spacing on a layer based on the


distance specified and creates edges that consist of pairs of
violation corners.

external_corner1_error() Creates polygons that are formed by pairs of violation


corners. It measures outside-to-outside spacing on layer1
based on the distance specified.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-16
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

external_corner2() Measures outside-to-outside spacing between two layers


based on the distance specified and creates polygons that are
formed by pairs of violation corners.

external_corner2_edge() Measures outside-to-outside spacing between two layers


based on the distance specified and creates edges that
consist of pairs of violation corners.

external_corner2_error() Creates polygons that are formed by pairs of violation


corners. It measures outside-to-outside spacing between two
layers based on the distance specified.

external1() Measures outside-to-outside spacing on a layer based on the


specified distance and creates polygons that are formed by
pairs of violation edges.

external1_edge() and Selects the portion of edges of a layer that violates the
not_external1_edge() spacing constraints. The complement of the
external1_edge() function is the not_external1_edge()
function.

external1_error() Measures outside-to-outside spacing between the edges of


one layer based on the specified distance.

external2() Measures outside-to-outside spacing between two layers


based on the specified distance and creates polygons that are
formed by pairs of violation edges.

external2_edge() and Selects the portion of edges on two layers that violates the
not_external2_edge() spacing constraints. The complement of the
external2_edge() function is the not_external2_edge()
function.

external2_error() Measures outside-to-outside spacing between two layers


based on the specified distance.

extract_devices() Extracts the device information defined in the device matrix


into a device database.

fill_pattern() Creates a set of fill rectangles within a layer.

fill_pattern_rings() Creates fill rectangles around the layer1 polygon that have
an orientation which follows the orientation of the signal
polygons.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

filter() Filters devices based on predefined filter options and filter


functions.

filter_off() Disables filtering of the specified devices.

flatten_by_cells() Creates a copy of a layer by flattening the specified cells.

fopen() Generates a handle for the file to be written by the


df_fnote(), dfm_fnote(), and pf_fnote() utility functions.

four_color() In multi-patterning flows, checks whether a given layer can be


decomposed into four colors.

gds_library() Defines a GDSII file name.

gds_options() Specifies the behavior when reading GDSII input.

gendev() Collects extraction configuration information about generic


devices.

gendev_select() Selects device polygons from generic devices on the


specified layers that fit the specified criteria.

get_layout_drawn_violation() Returns the violation to which layout drawn errors are written
during preprocessing.

get_layout_grid_violation() Returns the violation to which layout grid errors are written
during preprocessing.

get_netlist_connect_database() Allows you to access the connect database from which the
layout netlist is generated from the given device database.

get_substrate() Returns a hierarchical layer representing the substrate.

get_text_merged() Returns a new violation that contains only the merged text
opens from the input violation.

get_text_reassign_shorted() Returns a new violation that contains only the reassigned text
shorts from the input violation.

get_text_renamed() Returns a new violation that contains only the renamed text
opens from the input violation.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-18
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

get_text_shorted() Returns a new violation that contains only the text shorts from
the input violation.

get_text_unused() Returns a new violation that contains only the unused text
errors from the input violation.

get_top_cell() Returns the top cell name.

gradient_density() Checks layout density changes between neighboring


subwindows based on user-programmable density equations.

grid_pattern_edge() Outputs the imaginary grid lines that are inside or coincident
with the layer extent of the union of the bounding layer and
reference layer.

group_library() Defines a group library path.

grouped_by() Selects polygons from one layer that interact with another
layer.

grow() Creates polygons from the input layer that are oversized in the
specified directions by the specified distances.

hierarchy_auto_options() Specifies the hierarchy optimizations that are automatically


performed on the input design hierarchy.

hierarchy_options() Modifies the hierarchy in the input layout.

icvread() Runs the ICVread application.

icvread_generate_results() Generates the outputs needed by the ICVread application.

icvread_layer_map() Stores mapping between PXL layer objects and ICVread layer
parameters.

icvread_spec_file() Generates a handle for the specification file read by the


ICVread application.

identify_fill() Identifies floating fills in a layer by another layer.

import_gds_cell() Reads the hierarchy tree of a cell from the specified GDSII
library.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

import_oasis_cell() Reads the hierarchy tree of a cell from the specified OASIS
library.

incremental_connect() Creates a new connect database by adding electrical


connectivity for layers to a previously created connect
database.

incremental_options() Specifies a subset of the input layout to be processed.

inductor() Collects extraction configuration information about designed


inductors that have a device layer and two terminal layers.

init_compare_matrix() Creates a compare matrix.

init_device_matrix() Creates the device matrix.

init_icvread_matrix() Creates an ICVread matrix.

init_pex_layer_matrix() Creates a PEX layer matrix database.

initialize_net_property() Initializes the net-based property that is used as input to the


in_property argument of the net_property_select()
function.

initialize_property() Creates a property layer from a polygon layer.

inside() and not_inside() Selects polygons of a layer that are inside the polygons of
another layer. The complement of the inside() function is
the not_inside() function.

inside_hole() and Selects polygons of a layer that fill the holes in polygons of
not_inside_hole() another layer. The complement of the inside_hole()
function is the not_inside_hole() function.

inside_point_touching_edge() Selects entire layer1 edges that have any inside point
and touching with layer2 edges. The complement of this function
not_inside_point_touching_edge is the not_inside_point_touching_edge() function.
()

inside_touching_edge() and Selects entire edges of a layer that have any inside
not_inside_touching_edge() coincidence with edges of another layer. The complement of
the inside_touching_edge() function is the
not_inside_touching_edge() function.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-20
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

instance_property_number() Redefines the property number used for cell instance names.

interacting() and Selects polygons of a layer that touch or overlap polygons of


not_interacting() another layer. The complement of the interacting()
function is the not_interacting() function.

interacting_edge() and Selects entire edges of a layer that touch or overlap polygons
not_interacting_edge() or edges of another layer. The complement of the
interacting_edge() function is the
not_interacting_edge() function.

interacting_error() and Selects entire layer1 errors that touch or overlap layer2
not_interacting_error() polygons. The complement of the interacting_error()
function is the not_interacting_error() function.

internal_corner1() Measures inside-to-inside spacing on a layer based on


distance specified and creates polygons that are formed by
pairs of violation corners.

internal_corner1_edge() Measures inside-to-inside spacing on a layer based on


distance specified and creates edges that consist of pairs of
violation corners.

internal_corner2() Measures inside-to-inside spacing between two layers based


on the distance specified and creates polygons that are
formed by pairs of violation corners.

internal_corner2_edge() Measures inside-to-inside spacing between two layers based


on the distance specified and creates edges that consist of
pairs of violation corners.

internal1() Measures inside-to-inside spacing on one layer based on the


distance specified and creates polygons that are formed by
pairs of violation edges.

internal1_edge() and Selects the portion of edges of a layer that violates the
not_internal1_edge() spacing constraints. The complement of the
internal1_edge() function is the not_internal1_edge()
function.

internal1_error() Measures inside-to-inside spacing between the edges of one


layer based on the specified distance.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

internal2() Measures inside-to-inside spacing between two layers based


on the distance specified and creates polygons that are
formed by pairs of violation edges.

internal2_edge() and Selects the portion of edges of two layers that violates the
not_internal2_edge() spacing constraints. The complement of the
internal2_edge() function is the not_internal2_edge()
function.

internal2_error() Measures inside-to-inside spacing between two layers based


on the specified distance.

intersections() Creates polygons that represent the specified intersections


with the specified output format.

intersections_edge() Creates edges that represent the specified intersections with


the specified output format.

label_text() Creates a text layer that contains text strings for any probe
layer polygon that edge touches or overlaps a connect layer
polygon.

layer_empty() Runset runtime-conditional function that returns a value of


true if the specified layer is empty.

layer_extent() Creates a polygon layer that consists of a single rectangle in


the top cell which is equal to the extents of a layer in the top
cell and all its placements.

layer_extent_list() Creates a polygon layer consisting of a single rectangle in the


top cell that is equal to the extents of the input layers in the top
cell and all its placements.

layer_statistics() Reports statistics of a layer.

layer_statistics_file() Defines a layer statistics file.

layout_drawn_options() Specifies criteria for checking and correction of various invalid


layout data.

layout_grid_options() Specifies criteria for grid checking of layers.

layout_integrity_by_cell() Checks the specified cells against the specified layout


integrity databases (LIDBs).

Chapter 1: Tables of Runset Functions


All Runset Functions 1-22
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

layout_integrity_by_marker_lay Checks any design cell containing data on the specified


er() marker layer against the specified layout integrity databases
(LIDBs).

layout_integrity_options() Specifies which layout integrity databases (LIDBs) should be


used for checking cells in the design.

length_edge() and Selects edges based on their length. The complement of the
not_length_edge() length_edge() function is the not_length_edge() function.

level() Creates a copy of a polygon layer, where hierarchically


interacting data is moved up to a common point in the
hierarchy.

level_edge() Creates a copy of an edge layer, where hierarchically


interacting data is moved up to a common point in the
hierarchy.

level_to() Creates a copy of a polygon layer where data that is


hierarchically interacting with data in another layer is moved
up to a common point in the hierarchy.

level_to_edge() Creates a copy of an edge layer where data that is


hierarchically interacting with another layer data is moved up
to a common point in the hierarchy.

library() Registers a library for other functions.

library_create() Creates a one-cell library that has no data.

library_import() Reads in the specified library and places its top cell under the
top cell of the design library.

lvs_black_box_options() Defines which equivalence cells are black-box cells.

lvs_options() Generates user-intended and system-generated equivalence


cell pairings.

map_capacitor() Specifies characteristics of capacitor device instances and


provides device mappings between the two netlists being
compared.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-23
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

map_gendev() Specifies characteristics of generic device instances and


provides device mappings between the two netlists being
compared.

map_inductor() Specifies characteristics of inductor device instances and


provides device mappings between the two netlists being
compared.

map_nmos() and map_pmos() Specifies characteristics of NMOS or PMOS device instances


and provides device mappings between the two netlists being
compared.

map_np() and map_pn() Specifies characteristics of NP or PN diode instances and


provides device mappings between the two netlists being
compared.

map_npn() and map_pnp() Specifies characteristics of NPN or PNP transistor instances


and provides device mappings between the two netlists being
compared.

map_resistor() Specifies characteristics of resistor device instances and


provides device mappings between the two netlists being
compared.

marker_merge() Converts a marker layer to a polygon layer.

match() Sets matching criteria.

merge_parallel() Defines the criteria for merging devices connected in parallel


during the compare operation.

merge_parallel_off() Disables parallel merging for specific devices.

merge_series() Defines the criteria for merging devices connected in series


during the compare operation.

merge_series_off() Disables series merging for specific devices.

milkyway_library() Defines a Milkyway library name.

milkyway_merge_library_options Specifies a mapping from the master and reference Milkyway


() libraries to replacement libraries that are read in with
Milkyway data at the start of a verification run.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-24
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

milkyway_options() Specifies the behavior when reading a Milkyway library.

milkyway_route_directives() Provides better control over automatic DRC repair.

mos_select() Selects device polygons from MOS devices on layers that fit
the specified criteria.

move() Creates polygons by shifting all polygons on a layer by the


specified offsets.

move_edge() Creates edges by shifting all edges on a layer by the specified


offsets.

ndm_library() Defines an NDM library name and returns a handle to be used


by the output_library argument of the write_ndm()
function.

ndm_merge_library_options() Specifies a mapping from the master and reference NDM


libraries to replacement GDSII and OASIS libraries that are
read in with NDM data at the start of a verification run.

ndm_options() Specifies the behavior of the IC Validator tool when reading an


NMD library.

negate() Creates the inverse of a layer.

negate_in_window() Creates the inverse of a layer that is within the specified


window.

net_color_check() Checks the specified nets to determine if the color of the net
is expected.

net_color_report_file() Defines a file where error data is reported.

net_device_count() Selects polygons from nets in the device database that fit the
specified criteria.

net_options() Controls the declaration of schematic power, ground, and


global nets in the schematic netlist.

net_path_check() Selects polygons from nets on the specified path of the device
database that fit the specified criteria.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-25
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

net_polygon_select() Selects polygons from nets in the connect database that fit the
specified criteria.

net_polygon_by_property() Makes a copy of a polygon layer with properties collected


from net information.

net_property_select() Selects polygons from nets in the connect database that meet
the criteria specified in the function arguments and remote
function.

net_select() Selects polygons from nets in the connect database that fit the
specified criteria.

net_select_error() Selects error layer polygons that fit the specified criteria.

net_select_inside_of_layer() Selects net polygons inside a layer in the specified connect


database. Only polygons that fit the specified criteria and are
located inside the layer specified by the inside_of_layer
argument are selected.

net_texted_with() and Selects polygons from nets that are texted with the specified
net_not_texted_with() strings. The complement of the net_texted_with() function
is the not_net_texted_with() function.

netlist() Invokes the netlist utility to generate the layout netlist output
file for LVS comparison.

nmos() and pmos() Collects extraction configuration about N-type or P-type MOS
transistors that have a gate layer, source layer, drain layer,
and optional pin layers.

not() Creates polygons that represent the polygons of a layer that


are not common to the polygons of another layer.

not_contained_by() and Check multiple containment specifications for rectangles


contained_by() using a logical operation. The not_contained_by() function
selects rectangles from layer1 that do not fit containment
specifications within layer2. The contained_by() function
selects rectangles from layer1 that fit containment
specifications within layer2.

not_covered_by() Checks multiple enclosure specifications for rectangles using


a spacing check.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-26
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

not_edge() Selects the portion of all edges on a layer that are outside the
polygons of another layer.

not_enclosed_by() and Checks whether rectangles are enclosed.


enclosed_by()

np() and pn() Collects extraction configuration about NP or PN diodes


extracted from the specified device body layer.

npn() and pnp() Collects extraction configuration about NPN-type or PNP-type


bipolar transistors that consist of an emitter layer, base layer,
collector layer, and an optional bulk layer.

oasis_library() Defines an OASIS file name.

oasis_options() Specifies the behavior when reading an OASIS file.

off_grid() Creates squares that indicate vertices and cell placements


which are off the specified grid.

off_grid_xy() Supports grid checking in the x- and y-directions.

openaccess_library() Defines an OpenAccess file name.

openaccess_merge_library_optio Specifies a mapping from the master and reference


ns() OpenAccess libraries to replacement GDSII and OASIS
libraries

openaccess_options() Specifies the behavior when reading OpenAccess input.

optional_pattern_markers() Returns a list of polygon layers associated with the pattern


marker layer that is returned by the pattern_match()
function.

or() Creates polygons that represent the union of the polygons on


two layers.

or_edge() Combines the edges of two layers.

or_error() Combines the errors of two layers.

or_list() Creates a polygon that represents the union of polygons on


input layers.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-27
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

outside() and not_outside() Selects polygons of a layer that do not share any of their
active area with polygons of another layer. The complement of
the outside() function is the not_outside() function.

outside_point_touching_edge() Selects entire layer1 edges that have any outside point
and touching with layer2 edges. The complement of this function
not_outside_point_touching_edg is the not_outside_touching_edge() function.
e()

outside_touching() and Selects polygons of a layer that do not share active area with
not_outside_touching() another layer but outside touch a polygon of that layer. The
complement of the outside_touching() function is the
not_outside_touching() function.

outside_touching_edge() and Selects entire edges of a layer that have any outside
not_outside_touching_edge() coincidence with edges of another layer. The complement of
the outside_touching_edge() function is the
not_outside_touching_edge() function.

partition() Breaks complex shapes into regular rectangles.

partition_chip() Breaks the extents of top-level cell into a specified number of


horizontal or vertical partitions of equal area to the input
polygon layer.

pattern_learn() Creates a new pattern library or updates an existing pattern


library with input source patterns

pattern_library_lock() Adds the write and view protection to a pattern library.

pattern_library_read() Converts a pattern library to IC Validator group files.

pattern_match() Captures patterns on a design that match patterns in a


specified pattern library.

pattern_options() Defines the pattern library path to access a pattern library


used by the pattern_learn() and pattern_match()
functions.

pex_cell_extents_file() Stores mapping between PXL layer objects and parasitic


extraction color layer parameters.

pex_cell_port_file() Defines a cell port file.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-28
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

pex_color_layer_map() Stores, in the PEX layer matrix, mapping between PXL layer
objects and parasitic extraction color layer parameters.

pex_conducting_layer_map() Stores mapping between PXL layer objects and parasitic


extraction conducting layer parameters.

pex_generate_database() Generates the outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_lpp_map() Generates the parasitic extraction LPP mapping file.

pex_generate_process_map() Generates the parasitic extraction layer mapping file.

pex_generate_results() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_simple_database() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_generate_simple_results() Generates outputs needed by the StarRC tool to perform


parasitic extraction.

pex_ignore_cap_layer_map() Creates entries in the IGNORE_CAP_LAYERS section of the


pex_process_map_file based on PXL layer objects.

pex_library_layer_map_file() Defines a layout library map file.

pex_lpp_map_file() Generates a file handle for the output of the StarRC parasitic
extraction OA_LAYER_MAPPING_FILE.

pex_marker_layer_map() Stores mapping between PXL layer objects and parasitic


extraction marker layers parameters.

pex_process_map_file() Generates a file handle for the output of the StarRC parasitic
extraction MAPPING_FILE.

pex_qtf_layers() Specifies which layers from Quickcap Technology File (QTF)


are used during StarRC–QTF extraction flow.

pex_qtf_layer_map() Stores, in the PEX layer matrix, mapping between PXL layer
objects and parasitic extraction QTF layer parameters.

pex_remove_layer_map() Stores a PXL layer object as a parasitic extraction remove


layer in the PEX layer matrix.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-29
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

pex_runset_report_file() Generates a handle for the output of the parasitic extraction


runset report file.

pex_simple_layer_maps() Specifies the tag name for a layer.

pex_unconnected_layer_map() Writes unconnected layers to the output parasitic extraction


layout database for the StarRC tool and to the corresponding
section in the StarRC MAPPING_FILE.

pex_via_layer_map() Stores mapping between PXL layer objects and parasitic


extraction via layer parameters.

pex_viewonly_layer_map() Stores extra PXL layer objects within the output StarRC
parasitic extraction layout database.

point_touching_edge() and Selects entire layer1 edges that have any point touching with
not_point_touching_edge() layer2 edges. Selection includes inside and outside edge
point touching. The complement of this function is the
not_point_touching_edge() function.

polygon_centers() Creates a square at the center of the extents of each polygon


in a layer.

polygon_extents() Creates rectangles from the extents of each polygon in a


layer.

polygon_features() Creates user-defined geometries based on characteristics of


input polygons.

polygons() Creates polygons in the top cell using specified coordinates.

property_annotation_file() Defines an annotation file name.

property_layer_convert() Copies a version of the polygon layer from the original


property layer.

property_to_net() Attaches properties to nets.

prototype_options() Defines the criteria for the creation of prototype cells during
hierarchical preprocessing.

pull_down() Creates a copy of a polygon layer where the hierarchically


interacting data is moved down to the lowest possible level of
the hierarchy.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-30
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

pull_down_edge() Creates a copy of an edge layer where the hierarchically


interacting data is moved down to the lowest possible level of
the hierarchy.

pull_down_to() Creates a copy of the input layer where the hierarchically


interacting data is moved down to the lowest possible level of
cells containing the data layer.

pull_down_to_edge() Creates a copy of the input layer where the hierarchically


interacting data is moved down to the lowest possible level of
cells containing the data layer.

python_validate() Resolves the directory location of the specified Python


module file, by using the IC Validator -I command-line option,
and checks the file for Python parse errors.

read_group() Matches cells by name and matches cell placements by x-


and y-position, rotation, and reflection, and flattens cells from
the input layer that do not match a placement in the current
run. Returns a polygon layer.

read_group_edge() Matches cells by name and matches cell placements by x-


and y-position, rotation, and reflection, and flattens cells from
the input layer that do not match a placement in the current
run. Returns an edge layer.

read_layout_netlist() Reads one of the two netlists compared in the


netlist-versus-netlist flow and translates it to IC Validator
netlist format.

recalculate_property() Defines the properties of primitive devices that are


recalculated during the compare operation.

recognize_gate() Tells the IC Validator tool to analyze transistor-level circuitry


by looking for logic gates.

recognize_gate_off() Disables gate recognition for specific devices.

rectangle_overlap() Oversizes orthogonal rectangles from a layer that meet the


specified dimensions, and then creates polygons which
represent the area where the oversized rectangles overlap.

rectangle_spacing1() and Selects rectangles that fit the specified count and distance
not_rectangle_spacing1() constraints.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-31
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

rectangle_spacing2() and Selects layer1 rectangles that fit the specified count and
not_rectangle_spacing2() distance constraints for interaction with layer2 rectangles.

rectangles() and Selects rectangles in a layer that fit the specified dimensions.
not_rectangles() The complement of the rectangles() function is the
not_rectangles() function.

rectangles_interacting() and Oversizes orthogonal rectangles of a layer that meet the


not_rectangles_interacting() specified dimensions. The complement of the
rectangles_interacting() function is the
not_rectangles_interacting() function.

reduce_four_color_graph() In multi-patterning flows, outputs a smaller layout after graph


reduction, which consists of recursively deleting low-degree
nodes. A node has a low degree if the degree is less than 4.

reduce_three_color_graph() In multi-patterning flows, outputs a smaller layout after graph


reduction, which consists of recursively deleting low-degree
nodes. A node has a low degree if the degree is less than 3.

redundant_vias() Identifies redundant via polygons and saves properties to


each output redundant via polygon.

remove_fill() Removes rectangles that share active area with a blocking


layer.

replace_text() Creates a text layer from a text layer by replacing the


specified text strings.

required_layer() Restricts the pruning of any layer in the runset.

res_select() Selects the device polygons that fit the specified dimensional
criteria or geometric error-checking criteria.

resistor() Collects extraction configuration about designed resistors.

resolution_options() Specifies resolution and snapping values.

restart() Loads a previously saved checkpoint and restores the state of


the run at the checkpoint.

restart_layer() Specifies the polygon layers for the restart run.

restart_layer_edge() Specifies the edge layers for the restart run.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-32
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

restart_layer_text() Specifies the text layers for the restart run.

route_directives() Provides better control over automatic DRC repair.

run_options() Specifies directories, files, and run variations.

schematic() Reads a schematic file and translates it to IC Validator netlist


format.

sconnect() Selects polygons of a layer that intersect polygons of another


layer which belong to the net with the highest polygon count of
the first layer.

select_by_double_property() Sorts the polygons of the input layer into a polygon layer
based on the specified property name and value pair.

select_marker_by_double_proper Retrieves the pattern markers based on the specified property


ty() name and double value pair.

select_marker_by_string_proper Retrieves the pattern markers based on the specified property


ty() name and string value pair.

shift_symmetry() Checks the symmetry of the target layer polygons against the
created, mirrored polygons.

short_equivalent_nodes() Creates shorts between electrically equivalent nodes before


parallel merging.

short_equivalent_nodes_off() Prevents equivalent node shorts from being created on a path


that contains one of the specified devices.

shrink() Creates polygons from a layer, which are undersized in the


specified directions by the specified distances.

size() Oversizes the polygons on a layer by the specified value.

size_inside() Bounded, incremental, oversize operation that finds the active


area shared by two layers.

size_outside() Incremental oversize operation that sizes around polygons,


filling the “empty space” around the specified outside layer
shapes.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-33
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

size_overlap() Oversizes the polygons on a layer by the specified value, and


then creates polygons that represent the area where the
separate, oversized polygons overlap.

snap() Creates polygons that represent the input polygons with all
vertices snapped to the specified resolution.

snap_edge() Creates edges that represent the input edges with all
endpoints snapped to the specified resolution.

snap_to_pattern() Creates data that represent the input data snapped to the
specified grid_pattern. This function is a cell-level
operation.

snap_to_pattern_edge() creates data that represent the input data snapped to the
specified grid_pattern. This function is a cell-level
operation.

snapshot() Marks the location in a runset where the IC Validator tool


saves data about the state of a run and resumes the run.

soft_check() Verifies that all polygons of a layer which intersect with the
same polygon of another layer belong to the same net.

soft_connect() Creates a connect database that defines electrical


connectivity for the specified layers.

soft_connect_check() Processes a connect database generated by the


soft_connect() function to verify that the lower layer
touches only one upper layer net.

spice_netlist_file() Defines a SPICE file name.

stamp() Passes connectivity from one layer to another without


modifying the connectivity of the connected layer.

stamp_edge() Passes connectivity from a polygon layer to an edge layer


without modifying the connectivity of the connected layer.

system() Executes any valid UNIX command during an IC Validator


run.

text_net() Applies the specified text to the specified layers in the


specified connect database.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-34
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

text_options() Specifies how layout text objects are processed as they are
read in as a text layer.

text_origin() Creates squares at the origin of the specified text in the


specified cells.

text_to_double_property() Turns text into a polygon property.

text_to_string_property() Creates a square marker at the location of each text with the
string value of the text attached to the polygon.

texted_with() and Selects polygons of a layer that are attached with the
not_texted_with() specified text in another layer. The complement of the
texted_with() function is the not_texted_with() function.

three_color() In triple-patterning flows checks whether a given layer can be


decomposed into three colors.

touching() and not_touching() Selects polygons of a layer that have any inside or outside
edge coincidence with the edges of another layer. The
complement of the touching() function is the
not_touching() function.

touching_edge() and Selects entire edges of a layer that have any coincidence with
not_touching_edge() edges of another layer. The complement of the
touching_edge() function is the not_touching_edge()
function.

two_color() In double-patterning flows checks whether a given layer can


be decomposed into two colors.

unified_fill() Generates fill patterns.

vertex() Creates polygons that represent the specified vertices with


the specified output format.

vertex_edge() Selects edges of a layer that form the specified vertices.

vertices() and not_vertices() Selects polygons based on their number of vertices. The
complement of the vertices() function is the
not_vertices() function.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-35
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

vertices_edge() and Selects edge chains based on their number of vertices. The
not_vertices_edge() complement of the vertices_edge() function is the
not_vertices_edge() function.

violation_empty() Runset runtime-conditional function that returns a value of


true if the specified violation is empty.

wide() Creates polygons that consist of the regions of a layer which


are wider than the specified distance.

wide_edge() Creates edges that consist of edges of a layer which define


regions which are wider than the specified distance.

write_annotation_file() Generates a property annotation file that contains flattened


device instances and their corresponding
environment-sensitive property values.

write_customized_spice() Invokes the netlist utility, icv_netlist, to generate a SPICE


netlist.

write_gds() Writes layers and violations to a GDSII file.

write_group() Writes layers into the specified output library.

write_milkyway() Writes layers and violations to a Milkyway library.

write_ndm() Writes layers and violations to an NDM library.

write_oasis() Writes layers and violations to an OASIS file.

write_openaccess() Writes layers and violations to an OpenAccess library.

write_spice() Invokes the netlist utility to generate a SPICE netlist.

write_xref_spice() Invokes the netlist utility to generate a cross-referenced


SPICE netlist.

xor() Creates polygons that represent the unique data from the
layers.

xor_edge() Creates the edges that represent the difference between two
layers.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-36
IC Validator Reference Manual Version N-2017.12-SP2

Table 1-8 Summary of All Runset Functions (Continued)

Function Definition

xref_to_double_property() Creates a polygon layer annotated with voltage property


values for the matching layout nets.

xref_to_property() Creates a polygon layer annotated with voltage property


values for the matching layout nets.

Chapter 1: Tables of Runset Functions


All Runset Functions 1-37
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Chapter 1: Tables of Runset Functions


All Runset Functions 1-38
2
Runset Functions: A - I 2

This chapter provides an alphabetical listing of the functions available with the IC Validator
physical verification tool.

See Chapter 3, “Runset Functions: J - Z,” for more functions. Chapter 1, “Tables of Runset
Functions,” lists the runset functions by various types, in addition to a table of all runset
functions.
To help you understand and use the functions, see Appendix A, “Runset Basics,” and the
IC Validator User Guide.
In addition to the documentation conventions shown in the Preface, the following convention
is used in the documentation of the IC Validator syntax.

Convention Description

default Indicates the default, such as


low | medium | high

2-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

adjacent_edge() and not_adjacent_edge()


The adjacent_edge() function selects edges based on their length, the angles at their
endpoints, and their respective adjacent lengths. The complement of this function is the
not_adjacent_edge() function.
Note:
If the input layer is an edge layer, this function can only select edges that have an
adjacent edge at both endpoints.

Syntax
adjacent_edge(
layer1 = data_layer,
length = doubleconstraint,
angle1 = doubleconstraint, //optional
angle2 = doubleconstraint, //optional
adjacent_length1 = doubleconstraint, //optional
adjacent_length2 = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
adjacent1 = PRESENT | MISSING | ALL, //optional
adjacent2 = PRESENT | MISSING | ALL //optional
);

not_adjacent_edge(
layer1 = data_layer,
length = doubleconstraint,
angle1 = doubleconstraint, //optional
angle2 = doubleconstraint, //optional
adjacent_length1 = doubleconstraint, //optional
adjacent_length2 = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
adjacent1 = PRESENT | MISSING | ALL, //optional
adjacent2 = PRESENT | MISSING | ALL //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

length
Required. Specifies the length for any edge to be selected. See “Constraints” on
page A-4 for more information.

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-2
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-1 shows the effect of the length argument settings with the adjacent_edge()
function.
Figure 2-1 Example of length Argument

length = 10.0 length = 5.0 length <5.0

layer1 Result

angle1
Optional. Specifies the angle that must be formed at one of the endpoints. The angle is
measured internally. The angles must be greater than 0 and less than 360. See
“Constraints” on page A-4 for more information. The default is >0.

angle2
Optional. Specifies the angle that must be formed at one of the endpoints. The angle is
measured internally. The angles must be greater than 0 and less than 360. See
“Constraints” on page A-4 for more information. The default is >0.
Figure 2-2 shows the effect of the angle arguments with the adjacent_edge() function.
Figure 2-2 Example of angle Arguments

angle1 = 135 angle1 = 225 angle1 = 135


angle2 = 135 angle2 = 225 angle2 = 90

layer1 Result

adjacent_length1
Optional. Specifies the length that must be satisfied by the edges adjacent to an angle1
angle. See “Constraints” on page A-4 for more information. The default is >0.

adjacent_length2
Optional. Specifies the length that must be satisfied by the edges adjacent to an angle2
angle. See “Constraints” on page A-4 for more information. The default is >0.

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-3 shows the effect of the adjacent length arguments with the adjacent_edge()
function.
Figure 2-3 Example of adjacent_length Arguments

length = 5 length = 1.0 length <=10 length <= 10


adjacent_ adjacent_ adjacent_ adjacent_
length1 = 10 length1 = 10 length1 = 1.0 length1 = 1.0
adjacent_ adjacent_ adjacent_ adjacent_
length2 <= 1.0 length2 < 10 length2 = length2 = [4.0, 5.0)
[4.0, 5.0]
layer1 Result

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

adjacent1
Optional. Specifies for the endpoint of the edge that has angle as angle1 whether the
other edge adjacent to this endpoint must be existing, missing, or both existing and
missing. The default is PRESENT.
❍ PRESENT. Specifies that an adjacent edge of an edge must be existing.

❍ MISSING. Specifies that an adjacent edge of an edge must be missing.

❍ ALL. Specifies that an adjacent edge of an edge can be existing or missing.

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-4
IC Validator Reference Manual Version N-2017.12-SP2

adjacent2
Optional. Specifies for the endpoint of the edge that has angle as angle2 whether the
other edge adjacent to this endpoint must be existing, missing, or both existing and
missing. The default is PRESENT.
❍ PRESENT. Specifies that an adjacent edge of an edge must be existing.

❍ MISSING. Specifies that an adjacent edge of an edge must be missing.

❍ ALL. Specifies that an adjacent edge of an edge can be existing or missing.


Figure 2-4 shows the effect of the adjacent1 and adjacent2 arguments with the
adjacent_edge() function.

Figure 2-4 Example of adjacent1 and adjacent2 Arguments

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For the following examples, consider this polygon layer:

Input
90 135 2.5u

90 270
90
2.5u 135
270
135 315 225 270
90
in_layer
2u 135 45 1.5u 135 90 (edge or polygon layer)
2.5u 2.3u

In the following example, the output shows constraints for one of the endpoints:
out_layer = adjacent_edge(in_layer, length > 0.0, angle1 = 90.0 );

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-6
IC Validator Reference Manual Version N-2017.12-SP2

Output
90 135 2.5u

90 270
90
2.5u 135
270
135 315 225 270
90 in_layer
(edge or polygon layer)
2u 135 45 1.5u 135 90
out_layer
2.5u 2.3u (edge layer)

In the following example, the output shows constraints with both endpoints:
out_layer = adjacent_edge(in_layer, length = [2.0,2.5],
angle1 = 135.0, angle2 = 135.0, adjacent_length1 = [2.0,2.5]);

Output
90 135 2.5u

90 270
90
2.5u 135
270
135 315 225 270
90 in_layer
(edge or polygon layer)
2u 135 45 1.5u 135 90
out_layer
2.5u 2.3u (edge layer)

In the following example, the output shows constraints with both endpoints:
out_layer = adjacent_edge(in_layer, length = [2.0,2.5],
angle1 = 135.0, adjacent_length1 = [2.0,2.5]);

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output
90 135 2.5u

90 270
90
2.5u 135
270
135 315 225 270
90 in_layer
2u 135 45 135 90 (edge or polygon layer)
1.5u
out_layer
2.5u 2.3u (edge layer)

See Also
length_edge() and not_length_edge()
vertex()

Chapter 2: Runset Functions: A - I


adjacent_edge() and not_adjacent_edge() 2-8
IC Validator Reference Manual Version N-2017.12-SP2

and()
The and() function creates polygons that represent the intersection of two specified polygon
layers. Only those areas where the layers overlap are placed in the output.

Syntax
and(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
remove_hierarchical_overlap = true | false, //optional
name = "layer_label", //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

remove_hierarchical_overlap
Optional. Specifies the processing of hierarchical overlap resulting from the AND
operation. This processing is a hierarchical optimization. The default is true.
❍ true. Removes duplicate material, from the parent cell of hierarchically overlapping
polygons.
❍ false. Keeps hierarchical overlap as is. This overlap can cause performance
degradation for subsequent operations on the output layer.

Chapter 2: Runset Functions: A - I


and() 2-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 2-5 shows finding the intersection of layerA and layerB.
result = layerA and layerB;

Chapter 2: Runset Functions: A - I


and() 2-10
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-5 and() Function Example

layerB

layerA

Result

See Also
and_edge()
not()
not_edge()
or()
or_edge()
xor()
xor_edge()

Chapter 2: Runset Functions: A - I


and() 2-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

and_edge()
The and_edge() function selects the portion of all layer1 edges that are inside layer2
polygons.

Syntax
and_edge(
layer1 = data_layer,
layer2 = polygon_layer,
coincident = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

layer2
Required. Specifies the edge or polygon layer checked against layer1 edges.

coincident
Optional. Specifies if inside coincident is included in the result. The default is true.
❍ true. Includes inside coincident in the result.

❍ false. Does not include inside coincident in the result.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


and_edge() 2-12
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 2-6, both layers are polygon layers. The results are the same if layer1 is an edge
layer.
Figure 2-6 and_edge() Function Example

layer1

layer2
coincident = coincident =
true false result

See Also
coincident_inside_edge() and not_coincident_inside_edge()
inside() and not_inside()
inside_touching_edge() and not_inside_touching_edge()
not_edge()
outside_touching() and not_outside_touching()

Chapter 2: Runset Functions: A - I


and_edge() 2-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

and_overlap()
The and_overlap() function creates polygons that represent the hierarchical intersections
of the material from two specified layers. Intersection in a given cell is ignored.

Syntax
and_overlap(
layer1 = polygon_layer,
layer2 = polygon_layer,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


and_overlap() 2-14
IC Validator Reference Manual Version N-2017.12-SP2

Example
In Figure 2-7 there are two placements of cell Y and one placement of cell Z in cell X3. Two
polygon layers interact between overlapping cells contained within the parent cell X3. The
polygons that interact hierarchically produce output.
Result = and_overlap (layer1 = 1ayer1, layer2 = 1ayer2);

Polygons are created in the common ancestor cell relative to the input data polygons:
• The output polygon OP1 is created in cell X3 from the interaction of layer1 polygon P1
in cell X3 and layer2 polygon P2 in placement Y2.
• The output polygon OP2 is created in cell X3 from the interaction of layer1 polygon P3
in placement Y2 and layer2 polygon P4 in placement Y1.
• There is no output for the interaction of polygons in placement Z1 because the polygons
do not interact across the hierarchy.
Figure 2-7 and_overlap() Function Example
OP2 OP1 layer1 layer2 Result

X3 P1
P4

Z1
Y1 P2
Y2
P3
Flat Representation Input Hierarchy Tree
X3

X3
Y1 Z1
OP2
Y Y Z

Output Hierarchy Tree


Y2 OP1
X3
(No data in lower cells)

Chapter 2: Runset Functions: A - I


and_overlap() 2-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
and()

Chapter 2: Runset Functions: A - I


and_overlap() 2-16
IC Validator Reference Manual Version N-2017.12-SP2

angle_edge() and not_angle_edge()


The angle_edge() function selects edges based on the specified minimum angle with the
x-axis. The complement of this function is the not_angle_edge() function.

Syntax
angle_edge(
layer1 = data_layer,
angles = {doubleconstraint, ...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_angle_edge(
layer1 = data_layer,
angles = {doubleconstraint, ...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

angles
Required. Specifies the angles whose values are in the range [0.0, 90.0]. See
“Constraints” on page A-4 for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


angle_edge() and not_angle_edge() 2-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For the following examples, consider this polygon layer:

Input
90
45

90
x-axis

45 in_layer
90 (edge or polygon layer)

In the following example, the edges are selected from a range of values:
out_layer = angle_edge(in_layer, angles = {[0.0, 45.0]});

Output
90
45

90 x-axis

45 out_layer
90 (edge layer)

In the following example, the edges are selected from a list of values:
out_layer = angle_edge(in_layer, angles = {0.0, 90.0});

Chapter 2: Runset Functions: A - I


angle_edge() and not_angle_edge() 2-18
IC Validator Reference Manual Version N-2017.12-SP2

Output
90
45

90
x-axis

45 out_layer
90 (edge layer)

In the following example, the edges are selected from a range and a list of values:
out_layer = angle_edge(in_layer, angles = {[0.0,45.0], 90.0});

Output
90
45

90
x-axis

45 out_layer
90
(edge layer)

See Also
adjacent_edge() and not_adjacent_edge()

Chapter 2: Runset Functions: A - I


angle_edge() and not_angle_edge() 2-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

annotate_by_property()
The annotate_by_property() function makes a copy of a polygon layer annotated with
user-defined properties from nets in the connect database.
Note:
Properties on a polygon layer are recognized only by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.

Syntax
annotate_by_property(
connect_sequence = connect_database,
layer1 = polygon_layer,
property_names = {"string", ...},
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
connect_sequence
Required. Specifies the connect database.

layer1
Required. Specifies the polygon layer.

property_names
Required. Specifies the user-defined properties to annotate from nets to polygons.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


annotate_by_property() 2-20
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
property_to_net()

Chapter 2: Runset Functions: A - I


annotate_by_property() 2-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

area() and not_area()


The area() function selects polygons whose area fits the specified value. The complement
of this function is the not_area() function.

Syntax
area(
layer1 = polygon_layer,
value = doubleconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_area(
layer1 = polygon_layer,
value = doubleconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

value
Required. Specifies the area. See “Constraints” on page A-4 for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


area() and not_area() 2-22
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-8 shows using the area() function. For example,
Result = area(metal1, value = < 3);

Figure 2-8 area() Function Examples

value = 2 value = < 3 value = [2, 4]

metal1 Result

Figure 2-9 shows using the not_area() function. For example,


Result = not_area(metal1, value = [2, 4]);

Chapter 2: Runset Functions: A - I


area() and not_area() 2-23
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-9 not_area() Function Examples

value = 2 value = < 3 value = [2, 4]

metal1 Result

See Also
grouped_by()

Chapter 2: Runset Functions: A - I


area() and not_area() 2-24
IC Validator Reference Manual Version N-2017.12-SP2

aspect_ratio() and not_aspect_ratio()


The aspect_ratio() function selects layer1 polygons that are rectangles which fit the
specified aspect ratio. The complement of this function is the not_aspect_ratio()
function.

Syntax
aspect_ratio(
layer1 = polygon_layer,
ratio = doubleconstraint,
orientation = ORTHOGONAL | ALL, //optional
direction = X_BY_Y | SHORT_BY_LONG, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_aspect_ratio(
layer1 = polygon_layer,
ratio = doubleconstraint,
orientation = ORTHOGONAL | ALL, //optional
direction = X_BY_Y | SHORT_BY_LONG, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

ratio
Required. Specifies the aspect ratio that must be met for a rectangle to be selected.
Squares have an aspect ratio of 1. See Figure 2-10 for examples of the ratio argument.

orientation
Optional. Specifies the orientation of rectangles to be measured. See Figure 2-11 for
examples of the orientation argument. The default is ALL.
❍ ORTHOGONAL. Measures only orthogonal rectangles.

❍ ALL. Measures all rectangles regardless of orientation.

Chapter 2: Runset Functions: A - I


aspect_ratio() and not_aspect_ratio() 2-25
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

direction
Optional. Specifies how the aspect ratio is calculated. See Figure 2-12 for examples of
the direction argument. The default is SHORT_BY_LONG.
❍ X_BY_Y. Specifies that the aspect ratio is the dimension in the x-direction divided by
the dimension in the y-direction.
This argument is available only when the orientation argument is ORTHOGONAL.
When the direction argument is X_BY_Y and the processing_mode argument is
HIERARCHICAL, calculating the aspect ratio is a directional operation that requires
special consideration for polygons which are rotated 90 or 270 degrees. In runsets
that use multiple directional operations, careful application of the
prototype_options() function can improve performance.

❍ SHORT_BY_LONG. Specifies that the aspect ratio is the short dimension divided by the
long dimension.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


aspect_ratio() and not_aspect_ratio() 2-26
IC Validator Reference Manual Version N-2017.12-SP2

Examples
Figure 2-10 shows results of ratio argument settings.
aspect_ratio(metal1, ratio = 1);
not_aspect_ratio(metal1, ratio = 1);

aspect_ratio(metal1, ratio = 0.5);


not_aspect_ratio(metal1, ratio = 0.5);

aspect_ratio(metal1, ratio = [0.3,0.5]);


not_aspect_ratio(metal1, ratio = [0.3,0.5]);

Figure 2-10 ratio Argument Examples

ratio = 1 ratio = 0.5 ratio = [0.3,0.5]

metal1 aspect_ratio() not_aspect_ratio()

Figure 2-11 shows results of orientation argument settings.


aspect_ratio(metal1, ratio = [0.3,0.5], orientation = ALL);
not_aspect_ratio(metal1, ratio = [0.3,0.5],orientation = ALL);

aspect_ratio(metal1, ratio = [0.3,0.5], orientation = ORTHOGONAL);


not_aspect_ratio(metal1, ratio = [0.3,0.5], orientation = ORTHOGONAL);

Chapter 2: Runset Functions: A - I


aspect_ratio() and not_aspect_ratio() 2-27
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-11 orientation Argument Examples

ALL ORTHOGONAL

metal1 aspect_ratio() not_aspect_ratio()

Figure 2-12 shows results of direction argument settings.


aspect_ratio(metal1, ratio = [0.3,0.5],
orientation = ORTHOGONAL, direction = X_BY_Y);
not_aspect_ratio(metal1, ratio = [0.3,0.5],
orientation = ORTHOGONAL, direction = X_BY_Y);

aspect_ratio(metal1, ratio = [0.3,0.5],


orientation = ORTHOGONAL, direction = SHORT_BY_LONG);
not_aspect_ratio(metal1, ratio = [0.3,0.5],
orientation = ORTHOGONAL, direction = SHORT_BY_LONG);

Figure 2-12 direction Argument Examples

X_BY_Y SHORT_BY_LONG

metal1 aspect_ratio() not_aspect_ratio()

Chapter 2: Runset Functions: A - I


aspect_ratio() and not_aspect_ratio() 2-28
IC Validator Reference Manual Version N-2017.12-SP2

See Also
rectangles() and not_rectangles()

Chapter 2: Runset Functions: A - I


aspect_ratio() and not_aspect_ratio() 2-29
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

assign()
The assign() function assigns a polygon-layer variable to data found on specified layers in
the layout. This function reads only positive width paths and polygons, and ignores zero
width paths. Data assigned to the polygon-layer variable can be restricted to data of a
specified datatype.
See the assign_openaccess() function for an assign function that is specific to the
OpenAccess format. The assign_openaccess() function accepts layer and purpose
names as arguments, rather than numeric layer and datatype ranges. If you use the
assign() function for OpenAccess data, you must specify an OpenAccess layer mapping
file in the openaccess_options() function. The openaccess_options() function allows
you to read OpenAccess system objects such as blockages and boundaries.

Syntax
assign(
ldt_list = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, //optional
...},
milkyway = {views = {"string", ...},
objects = {object_type, ...},
cell_types = {cell_type, ...},
net_types = {net_type, ...},
route_guide_layers = {layer_type, ...},
route_types = {route_type, ...},
keep_properties = {OWNER_NET, ROUTE_TYPE},
user_attributes = {
{boolean_attributes = {
{name = "string", value = true | false},
...},
double_attributes = {
{name = "string",
values = {doubleconstraint, ...}},
...},
float_attributes = {
{name = "string",
values = {doubleconstraint, ...}},
...},
integer_attributes = {
{name = "string",
values = {integerconstraint, ...}},
...},
string_attributes = {
{name = "string",
values = {"string", ...}},
...}},
...},
colors = {color, ...},
read_fill_view_from = {TOP_CELL, LOWER_CELLS}

Chapter 2: Runset Functions: A - I


assign() 2-30
IC Validator Reference Manual Version N-2017.12-SP2

}, //optional
openaccess = {objects = {DONUT, DOT, ELLIPSE, PATH, PATH_SEGMENT,
PIN, POLYGON, RECTANGLE},
blockage_types = {openaccess_blockage_type, ...},
area_boundary_names = {"string", ...}, //optional
colors = {GRAY, MASK_ONE_UNLOCKED, MASK_ONE_LOCKED,
MASK_TWO_UNLOCKED, MASK_TWO_LOCKED,
MASK_THREE_UNLOCKED, MASK_THREE_LOCKED,
BLACK, MULTI, SAME}}, //optional
grid_check = {resolution = double,
check_45 = {POLYGON, PATH},
check_90 = {POLYGON, PATH}}, //optional
select_cells = {"string", ...}, //optional
polygons = {{coordinates = {{{x = double, y = double}, ...}, ...},
cell = "string"}, ...}, //optional
libraries = {library}, //optional
name = "layer_label", //optional
layer_intent = {LAYER_INTENT_METAL, LAYER_INTENT_FILL,
LAYER_INTENT_INTERCONNECT, LAYER_INTENT_BASE,
LAYER_INTENT_VIA, LAYER_INTENT_DEVICE}, //optional
gds = {
user_defined_properties = {{
double_properties = {{name = “string”,
number = integer}, ...},
string_properties = {{name = “string”,
number = integer}, ...}}, ...}
}, //optional
oasis = {
user_defined_properties = {{
double_properties = {{name = “string”,
number = integer}, ...},
string_properties = {{name = “string”,
number = integer}, ...}}, ...}
}, //optional
ndm = {views = {view_type, ...},
objects = {object_type, ...},
shape_uses = {shape_use_type, ...},
net_types = {net_type, ...},
design_types = {design_type, ...},
blockage_types = {ndm_blockage_type, ...},
blockage_layers = {integer, ...},
utilization_layers = {integer, ...},
masks = {ndm_mask, ...},
read_from = {assign_ndm_read_from, ...},
internal_designs = {ndm_internal_design_use, ...},
route_guide_layers = {integer, ...},
read_internal_designs_from = {TOP_CELL, LOWER_CELLS},
keep_properties = {OWNER_NET, SHAPE_USE}
}, //optional
select = {cells = {"string", ...},
marker_layers = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},

Chapter 2: Runset Functions: A - I


assign() 2-31
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

depth = CELL_LEVEL | DESCENDANTS | ALL,


complement = true | false,
polygon_property_sets = {
{
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER | SUPERSET |
SUBSET}, ...
},...
}, //optional
exclude_polygon_property_set = {
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER | SUPERSET |
SUBSET},...
}, //optional
placement_sets = {
{cells = {"string", ...},
property_sets = {
{
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER |
SUPERSET | SUBSET}, ...
}, ...
},
exclude_property_set = {
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER |
SUPERSET | SUBSET}, ...
}
}, ...
}, //optional
exclude_placement_set = {
cells = {"string", ...},
property_sets = {
{
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER |
SUPERSET | SUBSET}, ...
}, ...
},
exclude_property_set = {
{property_number = integer,
property_values = {"string", ...},
match = ALL | ALL_SAME_ORDER |
SUPERSET | SUBSET}, ...
}
}, //optional
geometry_match = {
baseline_cells = {"string", ...},

Chapter 2: Runset Functions: A - I


assign() 2-32
IC Validator Reference Manual Version N-2017.12-SP2

baseline_sources = {GOLDEN_LIBRARY,
INPUT_LIBRARY, ...},
},
} //optional
);

Returns
polygon layer

Arguments
ldt_list
Required. Lists the layer range and datatype range pairs. The data_type_range value
for each pair is optional, with a default of all datatypes. See Layout Layer and Datatype
Ranges for information about the limits of the values.
Note:
You can use the assign_layer_out_of_range argument of the run_options()
function to specify the behavior of the IC Validator tool when an assign function
contains layer or datatype numbers that are greater than the maximum allowed range
of the input library format.
For NDM libraries, lists the layer range and layer purpose range pairs. The
data_type_range value, which is the layer purpose, for each pair is optional, with a
default of all datatypes. See Layout Layer and Datatype Ranges for information about
the limits of the values.

milkyway
Optional. Controls the reading of data from a Milkyway library on a layer-by-layer basis.
This argument works with the drc_black_box_cells and lvs_black_box_cells
arguments of the milkyway_options() function. These arguments of the
milkyway_options() function control the views on a cell-by-cell basis.
Note:
The milkyway argument is ignored for non-Milkyway libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, when
reading the Milkyway library. By default, the IC Validator tool reads all views.
Note:
Any number of views can be referenced in the Milkyway library. The maximum
combined number of unique view names used in all assign functions in the runset
is 32.

Chapter 2: Runset Functions: A - I


assign() 2-33
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when


reading the Milkyway library. Table 2-1 lists the objects. By default, the IC Validator
tool reads all objects except HORIZONTAL_WIRE_TRACK and VERTICAL_WIRE_TRACK.
Table 2-1 Milkyway objects Options for the assign() Function

BOUNDARY CELL_ROW CONTACT CONTACTARRAY

CORE_REGION HORIZONTAL_WIRE_TRACK HORIZONTALWIRE PATH

PIN POLYGON RECTANGLE VERTICAL_WIRE_TRACK

VERTICALWIRE

❍ cell_types. Optional. Includes the specified cell types, on a layer-by-layer basis,


when reading the Milkyway library. This argument works with the cell_types and
exclude_cell_types arguments of the milkyway_options() function. These
arguments of the milkyway_options() function globally constrain the cell types that
are read. You can use the exclude_milkyway_cell_types() function to obtain a list
of all possible cell types except those specified by the exclude argument. By default,
the IC Validator tool reads data from all cell types. See Table 3-15 for a list of cell
types.
❍ net_types. Optional. Includes the specified net types, on a layer-by-layer basis,
when reading the Milkyway library. This argument works with the net_types
argument of the milkyway_options() function. This argument of the
milkyway_options() function globally constrains the net types that are read. You
can use the exclude_milkyway_net_types() function to obtain a list of all possible
net types except those specified. By default, the IC Validator tool reads data of all net
types. See Table 3-16 for the list of net types.
For example, you can specify power and ground as net types:
m1_power_ground = assign({{==1}},
milkyway={net_types={POWER,GROUND}}
);

❍ route_guide_layers. Optional. Includes the specified route guides, on a


layer-by-layer basis, when reading the Milkyway library. Route guides are rectangles
on a specific layer that have a BlockLayer property set which defines the blocked
layers. This argument filters based on the BlockLayer property, and works with the
route_guide_layers argument of the milkyway_options() function. The
route_guide_layers argument of the milkyway_options() function globally
constrains the route guides that are read. You can use the
exclude_milkyway_route_guide_layers() function to obtain a list of all possible
route guides except those specified by the exclude argument. By default, the
IC Validator tool reads all route guides. See Table 3-17 for a list of route guide layers.

Chapter 2: Runset Functions: A - I


assign() 2-34
IC Validator Reference Manual Version N-2017.12-SP2

For example, you can specify to read only one route guide:
m1_blockage = assign({{==190}},
milkyway={route_guide_layers={M1_ROUTE_GUIDE}}
);

❍ route_types. Optional. Includes the specified route types, on a layer-by-layer basis,


when reading the Milkyway library. This argument works with the route_types
argument of the milkyway_options() function. The route_types argument of the
milkyway_options() function globally constrains the route types that are read. You
can use the exclude_milkyway_route_types() function to obtain a list of all
possible route types except those specified. By default, the IC Validator tool reads all
route types. See Table 3-18 for a list of route types.
Note:
The route type is only used for the shapes RECTANGLE, PATH, HORIZONTALWIRE,
and VERTICALWIRE, as specified in the objects argument.
For example, you can specify multiple route types:
// Route type either PG_* or not set
m1_pg_noroute = assign({{==1}},
milkyway = {
route_types={NONE,PG_RING,PG_STRIPE,PG_PIN,PG_FOLLOW_PIN}
}
);

❍ keep_properties. Optional. Keeps the specified Milkyway properties for data on the
layer when reading the Milkyway library. These properties can be used by the
write_milkyway() function to set properties on output shapes based on input layer
shapes they interact with. By default, the IC Validator tool does not keep any
properties.
■ OWNER_NET. Keeps the net property that each shape is assigned to as defined in
the Milkyway library. Information about the net is kept, including the net name and
net type. This option keeps only net information for shapes in the top level CEL
view.
■ ROUTE_TYPE. Keeps the route type property on each shape as defined in the
Milkyway library. Only certain types of objects can have a route type associated:
rectangles, paths, wires, contacts, and contact arrays.
In the following example, both OWNER_NET and ROUTE_TYPE properties are
preserved on Milkyway layer 31.
m1 = assign({{31}},
milkyway = {
keep_properties={OWNER_NET,ROUTE_TYPE}
}
);

Chapter 2: Runset Functions: A - I


assign() 2-35
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ user_attributes. Optional. Lists the Milkyway attributes that are used to filter
shapes when reading the Milkyway library. Only shapes with specified attribute
values are read in.
When the user_attributes argument is used, shapes matching one or more of the
value sets listed are kept for the runset layer. All conditions of a value set must be met
for the shape to be considered a match. For example, if a value set lists constraints
for two different attributes, both must be satisfied.
■ If an attribute is specified in the runset as a different type from what is defined in
the Milkyway library, the IC Validator tool stops and issues an error message.
■ If an attribute is specified in the runset but is not defined in the Milkyway library,
the IC Validator tool writes a warning message and continues to run.
When the user_attributes argument is an empty list, the default, the IC Validator
tool does not filter data by attribute.
■ boolean_attributes. Optional. Specifies the Boolean attributes for the specified
layer.
- name. Specifies the attribute name.
- value. Specifies the Boolean value of the attribute, true or false.
■ double_attributes. Optional. Specifies the double attributes for the specified
layer.
- name. Specifies the attribute name.
- values. Lists the double attribute values.
■ float_attributes. Optional. Specifies the float attributes for the specified layer.
- name. Specifies the attribute name.
- values. Lists the float attribute values.
■ integer_attributes. Optional. Specifies the integer attributes for the specified
layer.
- name. Specifies the attribute name.
- values. Lists the integer attribute values.
■ string_attributes. Optional. Specifies string attributes for the specified layer.
- name. Specifies the attribute name.
- values. Lists the string attribute values.
For example,
// Select metal1 with at least one of the two following value sets:
// Value Set 1:

Chapter 2: Runset Functions: A - I


assign() 2-36
IC Validator Reference Manual Version N-2017.12-SP2

// (my_integer_prop1 <= 10 || my_integer_prop1 >= 100) &&


// (my_integer_prop2 == 50) &&
// (my_string_prop1 is "Value*", "!ValueD")
//
// Value Set 2:
// (my_double_prop1 == 5.0 && my_string_prop1=="ValueD")

m1_user_filtered = assign({{31}},
milkyway = {
user_attributes = {
// Value set 1
{integer_attributes = {
{"my_integer_prop1", {<=10, >=100} },
{"my_integer_prop2", {==50 } } } ,
string_attributes = {
{"my_string_prop1", {"Value*", "!ValueD"} } }
},
// Value Set 2
{double_attributes = {
{"my_double_prop1", {==5.0 } } },
string_attributes = { {"my_string_prop1", {"ValueD"} } }
}
}
}
);

❍ colors. Optional. Lists Milkyway library color attributes that are included, on a
layer-by-layer basis, when reading the Milkyway library. Only shapes with the color
attributes listed are read for this layer. Table 2-2 lists the attributes. By default, the
IC Validator tool reads data of all color attribute values.
Table 2-2 Milkyway Color Attributes

MASK_FIVE_HARD MASK_FIVE_SOFT MASK_FOUR_HARD MASK_FOUR_SOFT

MASK_ONE_HARD MASK_ONE_SOFT MASK_SIX_HARD MASK_SIX_SOFT

MASK_SEVEN_HARD MASK_SEVEN_SOFT MASK_THREE_HARD MASK_THREE_SOFT

MASK_TWO_HARD MASK_TWO_SOFT NO_COLOR SAME_COLOR

Note:
This feature is used in runsets that support double patterning technology (DPT).
See the two_color() function for more information. Use the color option of the
layers argument of the write_milkyway() function to write the color attributes.

Chapter 2: Runset Functions: A - I


assign() 2-37
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ read_fill_view_from. Optional. Lists the fill cells that are included on the specified
layer when the fill view is read. You can include the top fill cells only, all of the fill cells
except the top cells, or all of the fill cells. By default, the IC Validator tool reads all of
the fill cells when the fill view is read.
■ TOP_CELL. Includes the top fill cells.

■ LOWER_CELLS. Includes all of the fill cells except the top cells.

openaccess
Optional. Controls the reading of data from an OpenAccess database on a layer-by-layer
basis.
Note:
This argument is ignored for non-OpenAccess databases.
❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when
reading the OpenAccess database. By default, the IC Validator tool reads all objects.
❍ blockage_types. Optional. Filters objects by blockage type. The oaBlockage objects
have an associated blockage type; other types of objects do not. By default, the
IC Validator tool reads all objects.
Note:
See the openaccess_options() function for more information about reading
oaBlockage objects.
Table 2-3 lists the blockage type options..
Table 2-3 OpenAccess Blockage Types

Option Blockage type

FEEDTHRU_BLOCKAGE FEEDTHRU

FILL_BLOCKAGE FILL

NONE Read objects without a blockage type

PIN_BLOCKAGE PIN

PLACEMENT_BLOCKAGE PLACEMENT

ROUTING_BLOCKAGE ROUTING

SCREEN_BLOCKAGE SCREEN

SLOT_BLOCKAGE SLOT

Chapter 2: Runset Functions: A - I


assign() 2-38
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-3 OpenAccess Blockage Types (Continued)

Option Blockage type

VIA_BLOCKAGE VIA

WIRING_BLOCKAGE WIRING

❍ area_boundary_names. Optional. Filters objects by area boundary name. The


oaAreaBoundary objects can have an associated name; other types of objects do
not. See the openaccess_options() function for more information about reading
oaAreaBoundary objects. String matching using metacharacters is allowed. See
“String Matching” on page A-11 for more information. By default, the IC Validator tool
reads all objects.
❍ colors. Optional. Lists OpenAccess library color attributes that are included, on a
layer-by-layer basis, when reading the OpenAccess library. Only shapes with the
color attributes listed are read for this layer. Table 2-4 lists the attributes. By default,
the IC Validator tool reads data of all color attribute values.
Table 2-4 OpenAccess Color Attributes

GRAY MASK_ONE_UNLOCKED MASK_ONE_LOCKED MASK_TWO_UNLOCKED

MASK_TWO_LOCKED MASK_THREE_UNLOCKED MASK_THREE_LOCKED BLACK

MULTI SAME

Note:
This feature is used in runsets that support double patterning technology (DPT).
See the two_color() function for more information. See the
openaccess_options() function for more information.

grid_check
Optional. Overrides the values specified in the layout_grid_options() function in the
specific layer. Any values that are unspecified default to the corresponding value
specified in the layout_grid_options() function.
❍ resolution. Optional. Inspects the layer for off-grid data when set to a value greater
than the input library resolution. The default is the resolution specified in the
layout_grid_options() function.

❍ check_45. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 45 degrees. The default is the layout
data types specified in the layout_grid_options() function.

Chapter 2: Runset Functions: A - I


assign() 2-39
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 45 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 45 degrees.
❍ check_90. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 90 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 90 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 90 degrees.

select_cells
Optional. Includes the specified cells when importing the assign layer. When a cell is
selected, its references are included. You can add the ! character, which is the NOT
operator, as a prefix to a cell name to exclude its data and its descendant data from
selection. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool selects all cells.
Note:
Excluding the parent of a cell takes precedence over selecting a cell; that is, a cell is
excluded if its parent is excluded.
See the select argument for selecting cells based on the presence of a marker layer.
In the following example, all hierarchy in the MID_CELL cell is selected.
select_cells = {"MID_CELL"}

Figure 2-13 select_cells Argument Hierarchy Example


TOP_CELL selected
(LEVEL 0)

(LEVEL 1) MID_CELL

(LEVEL 2) BOT_CELL

In the following example, using the NOT operator (!) means that only data outside the
BOT_CELL cell is selected (TOP_CELL and MID_CELL cells).
select_cells = { "*", "!BOT_CELL" }

Chapter 2: Runset Functions: A - I


assign() 2-40
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-14 select_cells Argument Example Using the NOT Operator


TOP_CELL selected
(LEVEL 0)

(LEVEL 1) MID_CELL

(LEVEL 2) BOT_CELL

In the following example, using the NOT operator (!) means that only data outside the
MID_CELL cell is selected (top-level data in the TOP_CELL cell).
select_cells = { "TOP_CELL", "!MID_CELL" }

Figure 2-15 select_cells Argument Hierarchy Example Using the NOT Operator
TOP_CELL selected
(LEVEL 0)

(LEVEL 1) MID_CELL

(LEVEL 2) BOT_CELL

In the following example, the output data includes the MID_CELL cell and below, and the
BOT_CELL cell and below. Data from the MID2_CELL cell is selected when it is below
the MID_CELL cell, but not selected when it is located only below the TOP_CELL cell.
select_cells = { "MID_CELL", "BOT_CELL" }

Figure 2-16 select_cells Argument Example With Multiple Hierarchies


TOP_CELL selected
(LEVEL 0)

(LEVEL 1) (LEVEL 1)
MID_CELL MID2_CELL
(LEVEL 2) (LEVEL 2)
MID2_CELL BOT_CELL
(LEVEL 3)
BOT_CELL

Chapter 2: Runset Functions: A - I


assign() 2-41
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

polygons
Optional. Lists the polygons created in the specified cells. The polygons are added as
data is read into cells, and polygons are treated as if they are direct input from the layout.
Therefore, arguments, such as the magnification_factor argument of the library()
function, that transform input layout data are applied to the polygons that are created.
Data counts in the tree files include these polygons.
If a cell name does not exist in the input layout, the name is ignored. If a cell name is not
specified, the polygons in the associated list are created in the top cell. A list of two
coordinates is considered a rectangle.
Note:
If you are using the library_import() function, the magnification factor specified in
the libraries argument of the assign() function is applied.
If you are using the library_import() function and no cell name is specified,
polygons are created in the top cell of the library specified in the libraries argument
of the assign() function.
Here is an example of the polygons argument:
m1 = assign({{==1}},
polygons = {
// Two rectangles in the top cell
{{
{{1.0, 1.0}, {2.0, 2.0}},
{{3.0, 3.0}, {4.0, 4.0}}
}},
// Two rectangles in cell A
{cell = "A",
coordinates = {
{{1.0, 1.0}, {2.0, 2.0}, {2.0, 3.0}, {1.0, 3.0}},
{{3.0, 3.0}, {4.0, 4.0}}
}}
}
);

libraries
Optional. Specifies the library. An assign function uses only layers from this library. The
library is defined by the return value of the library() or library_import() function.
Note:
The list can only contain one library.
The libraries argument is required if you use the library_import() function and the
argument is prohibited if you do not use the library_import() function.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 2: Runset Functions: A - I


assign() 2-42
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

layer_intent
Optional. Specifies the layer types:
LAYER_INTENT_METAL
LAYER_INTENT_FILL
LAYER_INTENT_INTERCONNECT
LAYER_INTENT_BASE
LAYER_INTENT_VIA
LAYER_INTENT_DEVICE
You can list more than one type. For example, a layer can be of type
LAYER_INTENT_METAL and LAYER_INTENT_INTERCONNECT. The default is unspecified
intent.
Note:
The LAYER_INTENT_BASE layer type provides identical functionality to the
LAYER_INTENT_DEVICE layer type, and is maintained for legacy support.

gds
Optional. Controls the reading of data from a GDSII file on a layer-by-layer basis.
❍ user_defined_properties. Optional. Writes the specified GDSII property numbers
to the specified user-defined properties. By default, the IC Validator tool does not
write any properties.
■ double_properties. Specifies the properties that are written to the specified
property numbers.
- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.
See the user_defined_properties argument of the write_gds() function for more
information.

oasis
Optional. Controls the reading of data from an OASIS file on a layer-by-layer basis.
❍ user_defined_properties. Optional. Writes the specified OASIS property numbers
to the specified user-defined properties. By default, the IC Validator tool does not
write any properties.
■ double_properties. Specifies the properties that are written to the specified
property numbers.

Chapter 2: Runset Functions: A - I


assign() 2-43
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.
See the user_defined_properties argument of the write_oasis() function for
more information.

ndm
Optional. Controls the reading of data from an NDM library on a layer-by-layer basis. This
ndm argument filters data only for the given layer. The ndm_options() function controls
which data is read globally.
Note:
The ndm argument is ignored for non-NDM libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, when
reading the NDM library. This option works with the drc_black_box_cells,
lvs_black_box_cells, and layout_view_cells arguments of the ndm_options()
function. See Table 2-5 in the assign() function section for a list of views. By default,
the IC Validator tool reads all views.
Table 2-5 NDM views Options for assign Functions

DESIGN_VIEW FRAME_VIEW LAYOUT_VIEW

❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when


reading the NDM library. Table 2-6 lists the objects. By default, the IC Validator tool
reads all objects except HORIZONTAL_TRACK_OBJECT and VERTICAL_TRACK_OBJECT.
Table 2-6 NDM objects Options for assign Functions

BLOCKAGE_OBJECT BOUNDARY_OBJECT CORE_AREA_OBJECT

HORIZONTAL_TRACK_OBJECT PATH_OBJECT PIN_OBJECT

POLYGON_OBJECT RECTANGLE_OBJECT ROUTE_GUIDE_OBJECT

VIA_OBJECT VERTICAL_TRACK_OBJECT

❍ shape_uses. Optional. Includes objects with the specified shape when reading the
NDM library for this layer. You can use the exclude_ndm_shape_uses() function to

Chapter 2: Runset Functions: A - I


assign() 2-44
IC Validator Reference Manual Version N-2017.12-SP2

obtain a list of all possible shapes except those specified. By default, the IC Validator
tool reads data of all shapes types. Table 2-7 lists the shape uses.
Table 2-7 NDM shape_uses Options

AREA_FILL_USE CORE_WIRE_USE DETAIL_ROUTE_USE

FOLLOW_PIN_USE GLOBAL_ROUTE_USE LIB_CELL_PIN_CONNECT_USE

MACRO_PIN_CONNECT_USE NONE OPC_USE

RDL_USE RING_USE SHIELD_ROUTE_USE

STRIPE_USE USER_ROUTE_USE ZERO_SKEW_USE

❍ net_types. Optional. Includes the specified net types, on a layer-by-layer basis,


when reading the NDM library. You can use the exclude_ndm_net_types() function
to obtain a list of all possible net types except those specified. By default, the
IC Validator tool reads data of all net types. Table 2-8 lists the net types.
Table 2-8 NDM net_types Options

ANALOG_GROUND_NET ANALOG_POWER_NET ANALOG_SIGNAL_NET

CLOCK_NET DEEP_NWELL_NET DEEP_PWELL_NET

GROUND_NET LOGIC_0_NET LOGIC_1_NET

NONE NWELL_NET POWER_NET

PWELL_NET RESET_NET SCAN_NET

SIGNAL_NET UNCONNECTED UNSET_NET

❍ design_types. Optional. Includes only data from cells with the specified design
types on this layer when reading the NDM library. It does not apply to the top cell.
Table 2-9 lists the design types. By default, the tool reads all design types.
Table 2-9 NDM design_types Options

ABSTRACT_DESIGN ANALOG_DESIGN BLACK_BOX_DESIGN

CORNER_PAD_DESIGN COVER_DESIGN DIODE_DESIGN

END_CAP_DESIGN FILL_DESIGN FILLER_DESIGN

Chapter 2: Runset Functions: A - I


assign() 2-45
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-9 NDM design_types Options(Continued)

FLIP_CHIP_DRIVER_DESIGN FLIP_CHIP_PAD_DESIGN LIB_CELL_DESIGN

MACRO_DESIGN MODULE_DESIGN PAD_DESIGN

PAD_SPACER_DESIGN PHYSICAL_ONLY_DESIGN WELL_TAP_DESIGN

This argument works with the design_types and exclude_design_types


arguments of the ndm_options() function. These arguments of the ndm_options()
function globally constrain the design types that are read. You can use the
exclude_ndm_design_types() function to obtain a list of all possible design types
except those specified by the exclude argument. By default, the IC Validator tool
reads data from all design types.
❍ blockage_types. Optional. Filters blockages by blockage type. By default, the tool
reads all blockages. You can use the exclude_ndm_blockage_types() function to
obtain a list of all possible blockage types except those specified by the exclude
argument. Table 2-10 lists the blockage type options.
Table 2-10 NDM blockage_types Options

CATEGORY_BLOCKAGE NONE PLACEMENT_HARD_BLOCKAGE

PLACEMENT_HARD_MACRO_BLOCK PLACEMENT_PARTIAL_BLOCKAGE PLACEMENT_SOFT_BLOCKAGE


AGE

ROUTING_BLOCKAGE ROUTING_FOR_TOP_LEVEL_BLOCK RPGROUP_BLOCKAGE


AGE

SHAPING_BLOCKAGE

❍ blockage_layers. Optional. Includes blockages and route guides with any of the
given layer numbers in their blockage layer list. By default, there is no filtering of
blockages and route guides by blockage layer.
Here is an example of the blockage_layers argument:
aM2 = assign( { 2, 0} );
aM2_BLKG = assign( {NDM_SYSTEM_LAYER_ROUTING_BLOCKAGE}, \
ndm={blockage_layers={2},
views={DESIGN_VIEW, FRAME_VIEW} }
);

❍ utilization_layers. Optional. Includes route guides with any of the given layer
numbers in their utilization layer list. By default, there is no filtering of route guides by
utilization layer.

Chapter 2: Runset Functions: A - I


assign() 2-46
IC Validator Reference Manual Version N-2017.12-SP2

Here is an example of the utilization_layers argument:


aM3 = assign( { 3, 0} );
aM2_RT_GUIDE = assign( {{NDM_SYSTEM_LAYER_ROUTE_GUIDE}}, \
ndm={utilization_layers={3},
views={DESIGN_VIEW, FRAME_VIEW} }
);

❍ masks. Specifies the multi-patterning mask that determine the shapes that are read
from the NDM library. The default is no filtering by multi-patterning mask. Table 2-11
lists the mask options.
Table 2-11 NDM Masks

NONE MASK_ONE MASK_TWO MASK_THREE

MASK_FOUR MASK_FIVE MASK_SIX MASK_SEVEN

MASK_EIGHT MASK_NINE MASK_TEN MASK_ELEVEN

MASK_TWELVE MASK_THIRTEEN MASK_FOURTEEN MASK_FIFTEEN

SAME_MASK

❍ read_from. Optional. Specifies whether data is read from design cell views (both
design and frame), internal designs, or both. The default is no filtering ({ }). no
filtering.
■ VIEWS. Includes data from design cell views on this runset layer.

■ INTERNAL_DESIGNS. Includes data from internal designs on this runset layer.

❍ internal_designs. Optional. Specifies the internal designs from which to read data
for a given runset layer. Table 2-12 lists the internal_design options. See the
internal_designs argument of the ndm_options() function for more information.
Table 2-12 NDM Internal Design Uses

FILL_BLOCKAGE_USE FILL_USE NONE

❍ route_guide_layers. Optional. Reads route guides of only the specified layers. The
default is to read all route guides.
❍ read_internal_designs_from. Optional. Lists the internal design cells that are
included on the specified layer when an internal design is read. You can include the
top internal design cells only, all of the internal design cells except the top cells, or all

Chapter 2: Runset Functions: A - I


assign() 2-47
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

of the internal design cells. By default, the IC Validator tool reads all of the internal
design cells when the internal design is read.
■ TOP_CELL. Includes the top internal design cells.

■ LOWER_CELLS. Includes all of the internal design cells except the top cells.

❍ keep_properties. Optional. Keeps the specified NDM properties for data on the
layer when reading the NDM library. These properties can be used by the
write_ndm() function to set properties on output shapes based on input layer
shapes they interact with. By default, the IC Validator tool does not keep any
properties.
■ OWNER_NET. Keeps the net property that each shape is assigned to as defined in
the NDM library. Information about the net is kept, including the net name and net
type. This option keeps only net information for shapes in the top-level design
view.
■ SHAPE_USE. Keeps the shape_use property on each shape as defined in the NDM
library. These properties are kept for every cell and are applied hierarchically.
In the following example, both OWNER_NET and SHAPE_USE properties are preserved
on NDM layer 31.
m1 = assign({{31}},
ndm = {
keep_properties={SHAPE_USE,OWNER_NET}
}
);

select
Optional. Selects cells by cell name, marker layer, or both.
❍ cells. Includes the specified cells when importing the assign layer. When a cell is
selected, its references are included. You can prefix a cell name with the ! character
to exclude its data and its descendant data from selection. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, the tool selects all cells.
Note:
Excluding the parent of a cell takes precedence over selecting a cell; that is, a cell
is excluded if its parent is excluded.
❍ marker_layers. Lists layer range and datatype range pairs. When set to an empty
list (the default) then the marker_layers list is ignored. The data_type_range value
for each pair is optional, with a default of all datatypes. See Layout Layer and
Datatype Ranges for information about the limits of the values.
This option works in conjunction with the cells option; it restricts selection to only
those cells that contain at least one marker layer. The cells list is pruned by removing

Chapter 2: Runset Functions: A - I


assign() 2-48
IC Validator Reference Manual Version N-2017.12-SP2

any cells that do not directly (ignoring reference data) contain the marker layer.
Negated cells in the cells list are not pruned.
❍ depth. Specifies the depth of the cell hierarchy included by the cells and
marker_layers options. The default is ALL.

■ CELL_LEVEL. Includes only the geometric data in the cell; no descendants are
included unless they are also in the cells list.
■ DESCENDANTS. Includes only data in the descendants of a cell, recursively. No
cell-level data is included unless the cell is a descendant of a cell in the cells list.
■ ALL. Includes all data in the cell and below.

❍ complement. Specifies whether to include or exclude the selection performed by the


cells and marker_layers options. The default is false.

■ true. Selects all cells except for the cells specified by the cells and
marker_layers options.

■ false. Selects the cells specified by the cells and marker_layers options.

❍ polygon_property_sets. Specifies a list of sets of properties, from which a polygon


must have at least one set, to be selected.
■ property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

■ property_values. Specifies a list of string values that must be associated with


the given property number.
■ match. Specifies whether a given option matches a property from the GDSII or
OASIS formats. The default is ALL.
- ALL. Defines a match as every value in the property_values list must match
a value related to the property in the GDSII or OASIS properties. This
matching of values is bidirectional, so there must be an equal number of
values in both properties, and they all must match. Currently, only string values
are supported. String matching is performed using the standard IC Validator
regular expression matching.
- ALL_SAME_ORDER. Specifies that the order of the values in both the runset and
the GDSII or OASIS property must be identical.
- SUPERSET. Specifies that the value must be a superset of the GDSII or OASIS
property.
- SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.

Chapter 2: Runset Functions: A - I


assign() 2-49
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ exclude_polygon_property_set. Specifies a set of properties that, if contained by


a polygon, is not selected. This option supersedes the polygon_property_sets
option.
■ property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

■ property_values. Specifies a list of string values that must be associated with


the given property number.
■ match. Specifies whether a given option matches a property from the GDSII or
OASIS formats.The default is ALL.
- ALL. Defines a match as every value in the property_values list must match
a value related to the property in the GDSII or OASIS properties. This
matching of values is bidirectional, so there must be an equal number of
values in both properties, and they all must match. Currently, only string values
are supported. String matching is performed using the standard IC Validator
regular expression matching.
- ALL_SAME_ORDER. Specifies that the order of the values in both the runset and
the GDSII or OASIS property must be identical.
- SUPERSET. Specifies that the value must be a superset of the GDSII or OASIS
property.
- SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.
❍ placement_sets. Specifies a list of placement names and properties, from which a
placement must match at least one name or property to be selected.
■ cells. Specifies a list of cell names of placements that are selected.

■ property_sets. Specifies a list of sets of properties, from which a placement


must have at least one set to be selected.
- property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

- property_values. Specifies a list of string values that must be associated


with the given property number.
- match. Specifies whether a given option matches a property from the GDSII or
OASIS formats.The default is ALL.
¤ ALL. Defines a match as every value in the property_values list must
match a value related to the property in the GDSII or OASIS properties.

Chapter 2: Runset Functions: A - I


assign() 2-50
IC Validator Reference Manual Version N-2017.12-SP2

This matching of values is bidirectional, so there must be an equal number


of values in both properties, and they all must match. Currently, only string
values are supported. String matching is performed using the standard
IC Validator regular expression matching.
¤ ALL_SAME_ORDER. Specifies that the order of the values in both the runset
and the GDSII or OASIS property must be identical.
¤ SUPERSET. Specifies that the value must be a superset of the GDSII or
OASIS property.
¤ SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.
■ exclude_property_set. Specifies a set of properties that, if contained by a
placement, is not selected. This option supersedes the property_sets option of
the placement_sets argument.
- property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

- property_values. Specifies a list of string values that must be associated


with the given property number.
- match. The default is ALL.

¤ ALL. Defines a match as every value in the property_values list must


match a value related to the property in the GDSII or OASIS properties.
This matching of values is bidirectional, so there must be an equal number
of values in both properties, and they all must match. Currently, only string
values are supported. String matching is performed using the standard
IC Validator regular expression matching.
¤ ALL_SAME_ORDER. Specifies that the order of the values in both the runset
and the GDSII or OASIS property must be identical.
¤ SUPERSET. Specifies a superset of the GDSII or OASIS property.
¤ SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.
❍ exclude_placement_set. Specifies placement names or properties to exclude from
selection.
■ cells. Specifies a list of cell names of placements that are excluded from
selection.

Chapter 2: Runset Functions: A - I


assign() 2-51
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ property_sets. Specifies a list of sets of properties, from which a placement


must have at least one set, to be excluded from selection. This option supersedes
the placement_sets argument.
- property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

- property_values. Specifies a list of string values that must be associated


with the given property number.
- match. Specifies whether a given option matches a property from the GDSII or
OASIS formats. The default is ALL.
¤ ALL. Defines a match as every value in the property_values list must
match a value related to the property in the GDSII or OASIS properties.
This matching of values is bidirectional, so there must be an equal number
of values in both properties, and they all must match. Currently, only string
values are supported. String matching is performed using the standard
IC Validator regular expression matching.
¤ ALL_SAME_ORDER. Specifies that the order of the values in both the runset
and the GDSII or OASIS property must be identical.
¤ SUPERSET. Specifies a superset of the GDSII or OASIS property.
¤ SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.
■ exclude_property_set. Specifies a set of properties that, if contained by a
placement, is not excluded. This option supersedes the property_sets option of
the exclude_placement_set argument.
- property_number. Specifies a property number that is directly from GDSII or
OASIS properties, or is mapped from an OASIS property name using the
oasis_options() function.

- property_values. Specifies a list of string values that must be associated


with the given property number.
- match. Specifies whether a given option matches a property from the GDSII or
OASIS formats. The default is ALL.
¤ ALL. Defines a match as every value in the property_values list must
match a value related to the property in the GDSII or OASIS properties.
This matching of values is bidirectional, so there must be an equal number
of values in both properties, and they all must match. Currently, only string
values are supported. String matching is performed using the standard IC
Validator regular expression matching.

Chapter 2: Runset Functions: A - I


assign() 2-52
IC Validator Reference Manual Version N-2017.12-SP2

¤ ALL_SAME_ORDER. Specifies that the order of the values in both the runset
and the GDSII or OASIS property must be identical.
¤ SUPERSET. Specifies a superset of the GDSII or OASIS property.
¤ SUBSET. Specifies that the value must be a subset of the GDSII or OASIS
property.
❍ geometry_match. Specifies how geometric matching is performed between placed
cells from the original (tree0) hierarchy and unplaced cells or golden library cells. By
default, no geometric matching is performed.
The restrictions are
■ This option works with the main libraries in the GDSII and OASIS formats.
■ This option does not work when the main library format is Milkyway, NDM, or
OpenAccess.
■ This option does not work with In-Design flows.
■ baseline_cells. Optional. Specifies a list of cell names of either unplaced cells
or golden library cells to check for geometric matches with the original cell
hierarchy. When you use this option, you cannot use the cells option of the
select argument.
Important:
For a large design, if the IC Validator tool determines that the top cell might
match a golden library cell, the tool displays a warning that runtime and
memory will be high.
■ baseline_sources. Optional. Specifies whether the IC Validator tool uses cells
from one of the golden libraries, unplaced cells, or both to perform geometric
matches with placed cells from the original hierarchy. The default is
GOLDEN_LIBRARY.

- GOLDEN_LIBRARY. Selects placed cells from the original hierarchy that


geometrically match any cells with a specified cell name from one of the
golden libraries. For example,
L1 = assign({{31,0}},
select = {geometry_match={baseline_cells={“F1*”},
baseline_sources={GOLDEN_LIBRARY}}});

- INPUT_LIBRARY. Selects placed cells from the original hierarchy that


geometrically match any unplaced cells with a specified cell name.
The following example uses the select argument to perform a pure select by cell name
operation that selects all {1,0} data in cells "B", "D", "F" and "G" along with their reference
data:

Chapter 2: Runset Functions: A - I


assign() 2-53
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The assign statement is:


L1 = assign({{1,0}, select = {marker_layers = {{2,0}});

The input library hierarchy is:


a
B
e
c
F
D
G
F

Uppercase cells contain layers {1,0} and {2,0} while lowercase cells only contain layer
{1,0}.
In this example, the select cells have the default value of all cells ("*"}), which selects
cells {"a", "B", "c", "D", "e", "F", "G"}.
Because only the uppercase cells contain the marker layer, the select cells list is pruned
to {"B", "D", "F", "G"} and the assign command is run as
L= = assign({{1,0}, select = {cells = {"B", "D", "F", "G"}});

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following is a simple polygon layer example:
m1 = assign({{7}}); /* layer 7 and all datatypes*/
m2 = assign({{8, 0}}, select_cells={"A*","B*","!A1","!B5*"});
/* layer 8 and datatype 0 */
m3 = assign({{[9,11], [0,3]}}); /* layers 9 through 11 and
data types 0 through 3 */

Chapter 2: Runset Functions: A - I


assign() 2-54
IC Validator Reference Manual Version N-2017.12-SP2

The following is a complex polygon layer example:


m2 = assign (
{{8},{9,[100,102]}, {33}}, /* layer 8, layer 9 datatypes
100 to 102, and layer 33 */
milkyway = {views = {"CEL", "FRAM"}} /* Milkyway library read CEL
and FRAM views */
);

The following is a grid check example:


/* resolution=0.05 (overrides layout_grid_options)
** check_45={PATH} (overrides layout_grid_options)
** check_90 (uses the check_90 setting from the layout_grid_options call)
*/

m4 = assign({{15}},
grid_check={resolution=0.05, check_45={PATH}}
);

See Also
assign_edge()
assign_openaccess()
assign_openaccess_edge()
assign_openaccess_text()
assign_text()
layout_grid_options()
run_options()

Chapter 2: Runset Functions: A - I


assign() 2-55
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

assign_edge()
The assign_edge() function assigns an edge-layer variable to data found on specified
layers in the layout. This function reads only zero width paths and the boundaries of
Milkyway cell site rows, and ignores all other geometric data. Data assigned to the layer can
be restricted to data of a specified datatype.
See the assign_openaccess_edge() function for an assign function that is specific to the
OpenAccess format. The assign_openaccess_edge() accepts layer and purpose names
as arguments, rather than numeric layer and datatype ranges. If you use the
assign_edge() function for OpenAccess data, you must specify an OpenAccess layer
mapping file in the openaccess_options() function.

Syntax
assign_edge(
ldt_list = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint},
...},
milkyway = {views = {"string", ...},
objects = {object_type, ...},
cell_types = {cell_type, ...},
net_types = {net_type, ...},
route_types = {route_type, ...},
read_fill_view_from = {TOP_CELL, LOWER_CELLS}
}, //optional
openaccess = {objects = {ARC, LINE, PATH, PATH_SEGMENT}, //optional
colors = {GRAY, MASK_ONE_UNLOCKED, MASK_ONE_LOCKED,
MASK_TWO_UNLOCKED, MASK_TWO_LOCKED,
MASK_THREE_UNLOCKED, MASK_THREE_LOCKED,
BLACK, MULTI, SAME}}, //optional
grid_check = {resolution = double,
check_45 = {POLYGON, PATH},
check_90 = {POLYGON, PATH}}, //optional
libraries = {library}, //optional
name = "layer_label", //optional
edges = {{coordinates = {{{x = double, y = double}, ...}, ...},
cell = "string"}, ...}, //optional
ndm = {views = {view_type, ...},
objects = {object_edge_type, ...},
shape_uses = {shape_use_type, ...},
net_types = {net_type, ...},
design_types = {design_type, ...},
masks = {ndm_mask, ...},
read_from = {assign_ndm_read_from, ...},
internal_designs = {ndm_internal_design_use, ...},
read_internal_designs_from = {TOP_CELL, LOWER_CELLS}
} //optional
);

Chapter 2: Runset Functions: A - I


assign_edge() 2-56
IC Validator Reference Manual Version N-2017.12-SP2

Returns
edge layer

Arguments
ldt_list
Required. Lists the layer range and datatype range pairs. The data_type_range value
for each pair is optional, with a default of all datatypes. See Layout Layer and Datatype
Ranges for information about the limits of the values.
Note:
You can use the assign_layer_out_of_range argument of the run_options()
function to specify the behavior of the IC Validator tool when an assign function
contains layer or datatype numbers that are greater than the maximum allowed range
of the input library format.
For NDM libraries, lists the layer range and layer purpose range pairs. The
data_type_range value, which is the layer purpose, for each pair is optional, with a
default of all datatypes. See Layout Layer and Datatype Ranges for information about
the limits of the values.

milkyway
Optional. Controls the reading of data from a Milkyway library on a layer-by-layer basis.
This argument works with the drc_black_box_cells and lvs_black_box_cells
arguments of the milkyway_options() function. These arguments of the
milkyway_options() function control the views on a cell-by-cell basis.
Note:
The milkyway argument is ignored for non-Milkyway libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, from a
Milkyway library. By default, the IC Validator tool reads all views.
Note:
Any number of views can be referenced in the Milkyway library. The maximum
combined number of unique view names used in all assign functions in the runset
is 32.
❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when
reading the Milkyway library. Table 2-13 lists the objects. By default, the IC Validator
tool reads all objects except HORIZONTAL_WIRE_TRACK and VERTICAL_WIRE_TRACK.
Table 2-13 Milkyway objects Options for the assign_edge() Function

CELL_ROW HORIZONTAL_WIRE_TRACK HORIZONTALWIRE PATH

VERTICAL_WIRE_TRACK VERTICALWIRE

Chapter 2: Runset Functions: A - I


assign_edge() 2-57
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ cell_types. Optional. Includes the specified cell types, on a layer-by-layer basis,


when reading the Milkyway library. This argument works with the cell_types and
exclude_cell_types arguments of the milkyway_options() function. These
arguments of the milkyway_options() function globally constrain the cell types that
are read. You can use the exclude_milkyway_cell_types() function to obtain a list
of all possible cell types except those specified by the exclude argument. By default,
the IC Validator tool reads data from all cell types. See Table 3-15 for a list of cell
types.
❍ net_types. Optional. Includes the specified net types, on a layer-by-layer basis,
when reading the Milkyway library. This argument works with the net_types
argument of the milkyway_options() function. This argument of the
milkyway_options() function globally constrains the net types that are read. You
can use the exclude_milkyway_net_types() function to obtain a list of all possible
net types except those specified. By default, the IC Validator tool reads data of all net
types. See Table 3-16 for the list of net types.
❍ route_types. Optional. Includes the specified route types, on a layer-by-layer basis,
when reading the Milkyway library. This argument works with the route_types
argument of the milkyway_options() function. This argument of the
milkyway_options() function globally constrains the route types that are read. You
can use the exclude_milkyway_route_types() function to obtain a list of all
possible route types except those specified. By default, the IC Validator tool reads all
route types. See Table 3-18 for a list of route types.
Note:
The route type is only used for the shapes PATH, HORIZONTALWIRE, and
VERTICALWIRE, as specified in the objects argument.

❍ read_fill_view_from. Optional. Lists the fill cells that are included on the specified
layer when the fill view is read. You can include the top fill cells only, all of the fill cells
except the top cells, or all of the fill cells. By default, the IC Validator tool reads all of
the fill cells when the fill view is read.
■ TOP_CELL. Includes the top fill cells.

■ LOWER_CELLS. Includes all of the fill cells except the top cells.

openaccess
Optional. Controls the reading of data from an OpenAccess database on a layer-by-layer
basis.
Note:
This argument is ignored for non-OpenAccess databases.
❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when
reading the OpenAccess database. By default, the IC Validator tool reads all objects.

Chapter 2: Runset Functions: A - I


assign_edge() 2-58
IC Validator Reference Manual Version N-2017.12-SP2

❍ colors. Optional. Lists OpenAccess library color attributes that are included, on a
layer-by-layer basis, when reading the OpenAccess library. Only shapes with the
color attributes listed are read for this layer. Table 2-14 lists the attributes. By default,
the IC Validator tool reads data of all color attribute values.
Table 2-14 OpenAccess Color Attributes

GRAY MASK_ONE_UNLOCKED MASK_ONE_LOCKED MASK_TWO_UNLOCKED

MASK_TWO_LOCKED MASK_THREE_UNLOCKED MASK_THREE_LOCKED BLACK

MULTI SAME

Note:
This feature is used in runsets that support double patterning technology (DPT).
See the two_color() function for more information. See the
openaccess_options() function for more information.

grid_check
Optional. Overrides the values specified in the layout_grid_options() function in the
specific layer. Any values that are unspecified default to the corresponding value
specified in the layout_grid_options() function.
❍ resolution. Optional. Inspects the layer for off-grid data when set to a value greater
than the input library resolution. The default is the resolution specified in the
layout_grid_options() function.

❍ check_45. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 45 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 45 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 45 degrees.
❍ check_90. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 90 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 90 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 90 degrees.

Chapter 2: Runset Functions: A - I


assign_edge() 2-59
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

libraries
Optional. Specifies the libraries. An assign function uses only layers from this library. The
library is defined by the return value of the library() or library_import() function.
Note:
The list can only contain one library.
The libraries argument is required if you use the library_import() function and the
argument is prohibited if you do not use the library_import() function.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edges
Optional. Lists the edges created in the specified cells. Edges are added as data is read
into cells, and polygons are treated as if they are direct input from the layout. Therefore,
arguments, such as the magnification_factor argument of the library() function,
that transform the input layout data are applied to the edges that are created. Data
counts in the tree files include these edges.
If a cell name does not exist in the input layout, the name is ignored. If a cell name is not
specified, the edges in the associated list are created in the top cell.
Note:
If you are using the library_import() function, the magnification factor specified in
the library argument of the assign_edge() function is applied.
If you are using the library_import() function and no cell name is specified, edges
are created in the top cell of the library specified in the library argument of the
assign_edge() function.

ndm
Optional. Controls the reading of data from an NDM library on a layer-by-layer basis. This
ndm argument filters data only for the given layer. The ndm_options() function controls
which data is read globally.
Note:
The ndm argument is ignored for non-NDM libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, when
reading the NDM library. This option works with the drc_black_box_cells,
lvs_black_box_cells, and layout_view_cells arguments of the ndm_options()
function. See Table 2-5 in the assign() function section for a list of views. By default,
the IC Validator tool reads all views.

Chapter 2: Runset Functions: A - I


assign_edge() 2-60
IC Validator Reference Manual Version N-2017.12-SP2

❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when


reading the NDM library. Table 2-15 lists the objects. By default, the IC Validator tool
reads all objects except HORIZONTAL_TRACK and VERTICAL_TRACK.
Table 2-15 NDM objects Options for assign_edge() Function

HORIZONTAL_TRACK LINE PATH VERTICAL_TRACK

❍ shape_uses. Optional. Specifies the shape when reading the NDM library for this
layer. You can use the exclude_ndm_shape_uses() function to obtain a list of all
possible shapes except those specified. By default, the IC Validator tool reads data of
all shapes types. See Table 2-7 in the assign() function section for a list of shape
uses.
❍ net_types. Optional. Includes the specified net types, on a layer-by-layer basis,
when reading the NDM library. You can use the exclude_ndm_net_types() function
to obtain a list of all possible net types except those specified. By default, the
IC Validator tool reads data of all net types. Table 2-8 in the assign() function
section lists the net types.
❍ design_types. Optional. Includes only data from cells with the specified design
types on this layer when reading the NDM library. It does not apply to the top cell.
Table 2-9 in the assign() function lists the types. By default, the tool reads all design
types.
❍ masks. Specifies the multi-patterning mask that determine the shapes that are read
from the NDM library. The default is not to set a multi-patterning mask. Table 2-11 in
the assign() function section lists the mask options.
❍ read_from. Optional. Specifies whether data is read from design cell views (both
design and frame), internal designs, or both. The default is no filtering ({ }). no
filtering.
■ VIEWS. Includes data from design cell views on this runset layer.

■ INTERNAL_DESIGNS. Includes data from internal designs on this runset layer.

❍ internal_designs. Optional. Specifies the internal designs from which to read data
for a given runset layer. Table 2-12 in the assign() function section lists the
internal_design options. See the internal_designs argument of the
ndm_options() function for more information.

❍ read_internal_designs_from. Optional. Lists the internal design cells that are


included on the specified layer when an internal design is read. You can include the
top internal design cells only, all of the internal design cells except the top cells, or all
of the internal design cells. By default, the IC Validator tool reads all of the internal
design cells when the internal design is read.

Chapter 2: Runset Functions: A - I


assign_edge() 2-61
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ TOP_CELL. Includes the top internal design cells.

■ LOWER_CELLS. Includes all of the internal design cells except the top cells.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
See the Examples section of the assign() function for more information.

See Also
assign()
assign_openaccess()
assign_openaccess_edge()
assign_openaccess_text()
assign_text()
layout_grid_options()
run_options()

Chapter 2: Runset Functions: A - I


assign_edge() 2-62
IC Validator Reference Manual Version N-2017.12-SP2

assign_openaccess()
The assign_openaccess() function assigns a polygon-layer variable to data found on
specified layers in the layout. This function is an OpenAccess-specific version of the
assign() function that accepts layer and purpose names as arguments, rather than
numeric layer and datatype ranges.
This function reads only positive width paths and polygons, and ignores zero width paths.
Data assigned to the layer variable can be restricted to objects of a specified type.
See the openaccess_options() function for more information about reading OpenAccess
system objects, such as blockages and boundaries.

Syntax
assign_openaccess(
layer_purpose_list = {{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...},
objects = {DONUT, DOT, ELLIPSE, PATH, PATH_SEGMENT,
PIN, POLYGON, RECTANGLE}, //optional
grid_check = {resolution = double,
check_45 = {POLYGON, PATH},
check_90 = {POLYGON, PATH}}, //optional
select_cells = {"string", ...}, //optional
polygons = {{coordinates = {{{x = double, y = double}, ...}, ...},
cell = "string"}, ...}, //optional
name = "layer_label", //optional
blockage_types = {NONE, ROUTING_BLOCKAGE, VIA_BLOCKAGE,
PLACEMENT_BLOCKAGE, WIRING_BLOCKAGE,
FILL_BLOCKAGE, SLOT_BLOCKAGE, PIN_BLOCKAGE,
FEEDTHRU_BLOCKAGE, SCREEN_BLOCKAGE},
//optional
area_boundary_names = {"string", ...}, //optional
layer_intent = {LAYER_INTENT_METAL, LAYER_INTENT_FILL,
LAYER_INTENT_INTERCONNECT, LAYER_INTENT_BASE,
LAYER_INTENT_VIA, LAYER_INTENT_DEVICE},
//optional
select = {cells = {"string", ...},
marker_layer_purposes = {
{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...},
depth = CELL_LEVEL | DESCENDANTS | ALL,
complement = true | false},
colors = {GRAY, MASK_ONE_UNLOCKED, MASK_ONE_LOCKED,
MASK_TWO_UNLOCKED, MASK_TWO_LOCKED,
MASK_THREE_UNLOCKED, MASK_THREE_LOCKED,
BLACK, MULTI, SAME} //optional
);

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-63
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
polygon layer

Arguments
layer_purpose_list
Required. Lists the layer name and purpose name pairs. The purpose name for each pair
is optional; the default is all purposes read to the layer.

objects
Optional. Includes the specified objects, on a layer-by-layer basis, when reading the
OpenAccess library. By default, the IC Validator tool reads all objects.
Note:
In OpenAccess, a pin is also a shape. Therefore, an object can be both a pin (PIN)
and a shape, such as RECTANGLE or POLYGON.
In the following example, the metal1_rect layer is assigned rectangles and pins that are
rectangles:
metal1_rect = assign_openaccess({{{"metal1"}}},
objects={RECTANGLE});

In the following example, the metal1_pin_r layer is assigned rectangles and all pins,
including those objects that are nonrectangular:
metal1_pin_r = assign_openaccess({{{"metal1"}}},
objects={RECTANGLE,PIN});

grid_check
Optional. Overrides the values specified in the layout_grid_options() function in the
specific layer. Any values that are unspecified default to the corresponding value
specified in the layout_grid_options() function.
❍ resolution. Optional. Inspects the layer for off-grid data when set to a value greater
than the input library resolution. The default is the resolution specified in the
layout_grid_options() function.

❍ check_45. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 45 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 45 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 45 degrees.

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-64
IC Validator Reference Manual Version N-2017.12-SP2

❍ check_90. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 90 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 90 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 90 degrees.

select_cells
Optional. Includes the specified cells when importing the assign layer. When a cell is
selected, its references are included. You can add the ! character, which is the NOT
operator, as a prefix to a cell name to exclude its data and its descendant data from
selection. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool selects all cells.
See the Example section of the assign() function for more information.

polygons
Optional. Lists the polygons created in the specified cells. The polygons are added as
data is read into cells, and polygons are treated as if they are direct input from the layout.
Therefore, arguments, such as the magnification_factor argument of the library()
function, that transform input layout data are applied to the polygons that are created.
Data counts in the tree files include these polygons.
If a cell name does not exist in the input layout, the name is ignored. If a cell name is not
specified, the polygons in the associated list are created in the top cell. A list of two
coordinates is considered a rectangle.
Note:
If you are using the library_import() function, the magnification factor specified in
the library argument of the assign_openaccess() function is applied.
If you are using the library_import() function and no cell name is specified,
polygons are created in the top cell of the library specified in the library argument
of the assign_openaccess() function.
See the assign() function for an example.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-65
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

blockage_types
Optional. Filters objects by blockage type. The oaBlockage objects have an associated
blockage type; other types of objects do not. By default, the IC Validator tool reads all
objects.
Note:
See the openaccess_options() function for more information about reading
oaBlockage objects.
Table 2-16 lists the blockage type options.
Table 2-16 OpenAccess Blockage Types

Option Blockage type

NONE Read objects without a blockage type

ROUTING_BLOCKAGE ROUTING

VIA_BLOCKAGE VIA

PLACEMENT_BLOCKAGE PLACEMENT

WIRING_BLOCKAGE WIRING

FILL_BLOCKAGE FILL

SLOT_BLOCKAGE SLOT

PIN_BLOCKAGE PIN

FEEDTHRU_BLOCKAGE FEEDTHRU

SCREEN_BLOCKAGE SCREEN

area_boundary_names
Optional. Filters objects by area boundary name. The oaAreaBoundary objects can have
an associated name; other types of objects do not. See the openaccess_options()
function for more information about reading oaAreaBoundary objects. String matching
using metacharacters is allowed. See “String Matching” on page A-11 for more
information. By default, the IC Validator tool reads all objects.

layer_intent
Optional. Specifies the layer types:
LAYER_INTENT_METAL

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-66
IC Validator Reference Manual Version N-2017.12-SP2

LAYER_INTENT_FILL
LAYER_INTENT_INTERCONNECT
LAYER_INTENT_BASE
LAYER_INTENT_VIA
LAYER_INTENT_DEVICE
You can list more than one type. For example, a layer can be of type
LAYER_INTENT_METAL and LAYER_INTENT_INTERCONNECT. The default is unspecified
intent.
Note:
The LAYER_INTENT_BASE layer type provides identical functionality to the
LAYER_INTENT_DEVICE layer type, and is maintained for legacy support.

select
Optional. Selects cells by cell name, marker layer, or both.
❍ cells. Includes the specified cells when importing the assign layer. When a cell is
selected, its references are included. You can prefix a cell name with the ! character
to exclude its data and its descendant data from selection. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, the tool selects all cells.
Note:
Excluding the parent of a cell takes precedence over selecting a cell; that is, a cell
is excluded if its parent is excluded.
❍ marker_layers. Lists layer range and datatype range pairs. When set to an empty
list (the default) then the marker_layers list is ignored. The data_type_range value
for each pair is optional, with a default of all datatypes. See Layout Layer and
Datatype Ranges for information about the limits of the values.
This option works in conjunction with the cells option; it restricts selection to only
those cells that contain at least one marker layer. The cells list is pruned by removing
any cells that do not directly (ignoring reference data) contain the marker layer.
Negated cells in the cells list are not pruned.
❍ depth. Specifies the depth of the cell hierarchy included by the cells and
marker_layers options. The default is ALL.

■ CELL_LEVEL. Includes only the geometric data in the cell; no descendants are
included unless they are also in the cells list.
■ DESCENDANTS. Includes only data in the descendants of a cell, recursively. No
cell-level data is included unless the cell is a descendant of a cell in the cells list.
■ ALL. Includes all data in the cell and below.

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-67
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ complement. Specifies whether to include or exclude the selection performed by the


cells and marker_layers options. The default is false.

■ true. Selects all cells except for the cells specified by the cells and
marker_layers options.

■ false. Selects the cells specified by the cells and marker_layers options.
See the example in the definition of the select argument of the assign() function.

colors
Optional. Lists OpenAccess library color attributes that are included, on a layer-by-layer
basis, when reading the OpenAccess library. Only shapes with the color attributes listed
are read for this layer. Table 2-17 lists the attributes. By default, the IC Validator tool
reads data of all color attribute values.
Table 2-17 OpenAccess Color Attributes

GRAY MASK_ONE_UNLOCKED MASK_ONE_LOCKED MASK_TWO_UNLOCKED

MASK_TWO_LOCKED MASK_THREE_UNLOCKED MASK_THREE_LOCKED BLACK

MULTI SAME

Note:
This feature is used in runsets that support double patterning technology (DPT). See
the two_color() function for more information. See the openaccess_options()
function for more information.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-68
IC Validator Reference Manual Version N-2017.12-SP2

Example
See the openaccess_options() function for an example that uses the
assign_openaccess() function.

See Also
assign()
assign_edge()
assign_openaccess_edge()
assign_openaccess_text()
assign_text()
openaccess_options()
run_options()

Chapter 2: Runset Functions: A - I


assign_openaccess() 2-69
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

assign_openaccess_edge()
The assign_openaccess_edge() function assigns an edge-layer variable to data found on
specified layers in the layout. This function is an OpenAccess-specific version of the
assign_edge() function that accepts layer and purpose names as arguments, rather than
numeric layer and datatype ranges.
This function reads only zero width paths and ignores all other geometric data. Data
assigned to the layer can be restricted to objects of a specified type.

Syntax
assign_openaccess_edge(
layer_purpose_list = {{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...},
objects = {ARC, LINE, PATH, PATH_SEGMENT}, //optional
grid_check = {resolution = double,
check_45 = {POLYGON, PATH},
check_90 = {POLYGON, PATH}}, //optional
name = "layer_label", //optional
edges = {{coordinates = {{{x = double, y = double}, ...}, ...},
cell = "string"}, ...}, //optional
colors = {GRAY, MASK_ONE_UNLOCKED, MASK_ONE_LOCKED,
MASK_TWO_UNLOCKED, MASK_TWO_LOCKED,
MASK_THREE_UNLOCKED, MASK_THREE_LOCKED,
BLACK, MULTI, SAME} //optional
);

Returns
edge layer

Arguments
layer_purpose_list
Required. Lists the layer name and purpose name pairs. The purpose name for each pair
is optional; the default is all purposes read to the layer.

objects
Optional. Includes the specified objects, on a layer-by-layer basis, when reading the
OpenAccess library. By default, the IC Validator tool reads all objects.

grid_check
Optional. Overrides the values specified in the layout_grid_options() function in the
specific layer. Any values that are unspecified default to the corresponding value
specified in the layout_grid_options() function.

Chapter 2: Runset Functions: A - I


assign_openaccess_edge() 2-70
IC Validator Reference Manual Version N-2017.12-SP2

❍ resolution. Optional. Inspects the layer for off-grid data when set to a value greater
than the input library resolution. The default is the resolution specified in the
layout_grid_options() function.

❍ check_45. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 45 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 45 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 45 degrees.
❍ check_90. Optional. Checks the specified layout data types function in the specific
layer for angles which are not even multiples of 90 degrees. The default is the layout
data types specified in the layout_grid_options() function.
■ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis
of the cell where the edges are defined, is not a multiple of 90 degrees.
■ PATH. Reports path centerline segments as an error if the angle, with respect to
the x-axis of the cell where the edges are defined, is not a multiple of 90 degrees.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edges
Optional. Lists the edges created in the specified cells. Edges are added as data is read
into cells, and polygons are treated as if they are direct input from the layout. Therefore,
arguments such as the magnification_factor argument of the library() function,
that transform the input layout data are applied to the edges that are created. Data
counts in the tree files include these edges.
If a cell name does not exist in the input layout, the name is ignored. If a cell name is not
specified, the edges in the associated list are created in the top cell.
Note:
If you use the library_import() function, the magnification factor specified in the
library argument of the assign_openaccess_edge() function is applied.
If you use the library_import() function and no cell name is specified, edges are
created in the top cell of the library specified in the library argument of the
assign_openaccess_edge() function.

Chapter 2: Runset Functions: A - I


assign_openaccess_edge() 2-71
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

colors
Optional. Lists OpenAccess library color attributes that are included, on a layer-by-layer
basis, when reading the OpenAccess library. Only shapes with the color attributes listed
are read for this layer. Table 2-17 lists the attributes. By default, the IC Validator tool
reads data of all color attribute values.
Table 2-18 OpenAccess Color Attributes

GRAY MASK_ONE_UNLOCKED MASK_ONE_LOCKED MASK_TWO_UNLOCKED

MASK_TWO_LOCKED MASK_THREE_UNLOCKED MASK_THREE_LOCKED BLACK

MULTI SAME

Note:
This feature is used in runsets that support double patterning technology (DPT). See
the openaccess_options() and two_color() functions for more information.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
See the openaccess_options() function for an example that uses the
assign_openaccess_edge() function.

See Also
assign()
assign_edge()
assign_openaccess()
assign_openaccess_text()
assign_text()
openaccess_options()
run_options()

Chapter 2: Runset Functions: A - I


assign_openaccess_edge() 2-72
IC Validator Reference Manual Version N-2017.12-SP2

assign_openaccess_text()
The assign_openaccess_text() function assigns a text-layer variable to the text found on
specified layers in the layout. This function is an OpenAccess-specific version of the
assign_text() function that accepts layer and purpose names as arguments, rather than
numeric layer and datatype ranges.

Syntax
assign_openaccess_text(
layer_purpose_list = {{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...},
delete_text = {{cells = {"string", ...},
text = {"string", ...}},...}, //optional
use_exploded_text = {{cells = {"string", ...},
text = {"string", ...}}, ...}, //optional
objects = {PIN_TEXT, POLYGON_TEXT, TEXT,
TEXT_DISPLAY, TERMINAL_TEXT}, //optional
name = "layer_label" //optional
);

Returns
text layer

Arguments
layer_purpose_list
Required. Lists the layer name and purpose name pairs. The purpose name for each pair
is optional; the default is all purposes read to the layer.

delete_text
Optional. Lists the text deleted from specified cells. The list is additive; one list element
does not negate another list element. By default, text is not deleted.
❍ cells. Optional. Deletes text from the specified cells. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, text is deleted from all cells.
❍ text. Optional. Deletes the specified text strings. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, all text strings are deleted.
Note:
This delete_text argument does not delete text that is specified in the edtext
argument of the text_options() function.

Chapter 2: Runset Functions: A - I


assign_openaccess_text() 2-73
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

use_exploded_text
Optional. Lists the cells where text strings for the specified layer and datatype are
retained if the cells are exploded. The list is additive; one list element does not negate
another list element. By default, exploded cells do not retain their text.
Note:
The use_exploded_text arguments in the assign_text(),
assign_openaccess_text(), and text_options() functions are additive.
Use the exploded_text_options argument of the text_options() function to control
the prepending of the hierarchical path to text when the cell it is in is exploded.
❍ cells. Optional. Specifies the cells from which text is used if these cells are
exploded. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, text is deleted from all cells.
❍ text. Optional. Specifies the text strings that are used if a cell containing the text is
exploded. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool uses all text strings.

objects
Optional. Assigns the specified text types to a layer when reading an OpenAccess
library. By default, the IC Validator tool allows all types to be read.
❍ PIN_TEXT. Assigns IC Validator automatically generated text for pins. It can be a pin
name or a net name depending on the runset options set in the pin_text argument
of the openaccess_options() function.
❍ POLYGON_TEXT. Assigns IC Validator automatically generated text for polygons. The
text is always a net name.
❍ TEXT. Assigns OpenAccess text object from the input database.

❍ TEXT_DISPLAY. Assigns OpenAccess text display object from the input database.

❍ TERMINAL_TEXT. Assigns OpenAccess instance terminal objects from the input


database. See the terminal_text argument of the openaccess_options()
function for more information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


assign_openaccess_text() 2-74
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
See the openaccess_options() function for an example that uses the
assign_openaccess_text() function.

See Also
assign()
assign_edge()
assign_openaccess()
assign_openaccess_edge()
assign_text()
openaccess_options()
run_options()

Chapter 2: Runset Functions: A - I


assign_openaccess_text() 2-75
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

assign_text()
The assign_text() function assigns a text-layer variable to the text found on specified
layers in the layout. Text from multiple layers can be assigned to one text-layer variable.
See “Text Strings” in Appendix A for rules applied to text strings.
When the runset is optimized, unused text layers are pruned and, therefore, are not checked
for bad text.
See the assign_openaccess_text() function for an assign function that is specific to the
OpenAccess format. The assign_openaccess_text() function accepts layer and purpose
names as arguments, rather than numeric layer and datatype ranges. If you use the
assign_text() function for OpenAccess data, you must specify an OpenAccess layer
mapping file in the openaccess_options() function.
The arguments of the assign_text() function are executed in the following order:
1. delete_text
2. use_exploded_text

Syntax
assign_text(
ldt_list = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint},
...},
milkyway = {views = {"string", ...},
cell_types = {cell_type, ...},
objects = {PIN_TEXT, POLYGON_TEXT, TEXT},
read_fill_view_from = {TOP_CELL, LOWER_CELLS}
}, //optional
delete_text = {{cells = {"string", ...},
text = {"string", ...}}, ...}, //optional
use_exploded_text = {{cells = {"string", ...},
text = {"string", ...}}, ...}, //optional
openaccess = {objects = {PIN_TEXT, POLYGON_TEXT, TEXT,
TEXT_DISPLAY, TERMINAL_TEXT}},
//optional
gds = {objects = {PROPERTY_TEXT, TEXT},
properties = {integer, ...}}, //optional
oasis = {objects = {PROPERTY_TEXT, TEXT},
properties = {integer, ...}}, //optional
libraries = {library}, //optional
name = "layer_label", //optional
ndm = {views = {view_type, ...},
objects = {object_text_type, ...},
shape_uses = {shape_use_type, ...},
design_types = {design_type, ...},
masks = {ndm_mask, ...},

Chapter 2: Runset Functions: A - I


assign_text() 2-76
IC Validator Reference Manual Version N-2017.12-SP2

read_from = {assign_ndm_read_from, ...},


internal_designs = {ndm_internal_design_use, ...},
read_internal_designs_from = {TOP_CELL, LOWER_CELLS}
} //optional
);

Returns
text layer

Arguments
ldt_list
Required. Lists the layer range and datatype range pairs. The data_type_range value
for each pair is optional, with a default of all datatypes. See Layout Layer and Datatype
Ranges for information about the limits of the values.
Note:
You can use the assign_layer_out_of_range argument of the run_options()
function to specify the behavior of the IC Validator tool when an assign function
contains layer or datatype numbers that are greater than the maximum allowed range
of the input library format.
For NDM libraries, lists the layer range and layer purpose range pairs. The
data_type_range value, which is the layer purpose, for each pair is optional, with a
default of all datatypes. See Layout Layer and Datatype Ranges for information about
the limits of the values.

milkyway
Optional. Controls the reading of data from a Milkyway library on a layer-by-layer basis.
This argument works with the drc_black_box_cells and lvs_black_box_cells
arguments of the milkyway_options() function. These arguments of the
milkyway_options() function control the views on a cell-by-cell basis.
Note:
The milkyway argument is ignored for non-Milkyway libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, from a
Milkyway library. By default, the IC Validator tool reads all views.
Note:
Any number of views can be referenced in the Milkyway library. The maximum
combined number of unique view names used in all assign functions in the runset
is 32.
❍ cell_types. Optional. Includes the specified cell types, on a layer-by-layer basis,
when reading the Milkyway library. This argument works with the cell_types and
exclude_cell_types arguments of the milkyway_options() function. These
arguments of the milkyway_options() function globally constrain the cell types that

Chapter 2: Runset Functions: A - I


assign_text() 2-77
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

are read. You can use the exclude_milkyway_cell_types() function to obtain a list
of all possible cell types except those specified by the exclude argument. By default,
the IC Validator tool reads data from all cell types. See Table 3-15 for a list of cell
types.
❍ objects. Optional. Assigns the specified text types to a layer when reading a
Milkyway library. By default, the IC Validator tool allows all types to be read.
■ PIN_TEXT. Assigns IC Validator automatically generated text for pins. It can be a
pin name or a net name depending on the runset options set in the pin_text
argument of the milkyway_options() function.
■ POLYGON_TEXT. Assigns IC Validator automatically generated text for polygons.
The text is always a net name.
■ TEXT. Assigns Milkyway text object from the input database.

❍ read_fill_view_from. Optional. Lists the fill cells that are included on the specified
layer when the fill view is read. You can include the top fill cells only, all of the fill cells
except the top cells, or all of the fill cells. By default, the IC Validator tool reads all of
the fill cells when the fill view is read.
■ TOP_CELL. Includes the top fill cells.

■ LOWER_CELLS. Includes all of the fill cells except the top cells.

delete_text
Optional. Lists the text deleted from specified cells. The list is additive; one list element
does not negate another list element. By default, the IC Validator tool does not delete
text.
❍ cells. Optional. Deletes text from the specified cells. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, the IC Validator tool deletes text from all cells.
❍ text. Optional. Deletes the specified text strings. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
By default, the IC Validator tool deletes all text strings.
Note:
This delete_text argument does not delete text that is specified in the edtext
argument of the text_options() function.

use_exploded_text
Optional. Lists the cells where text strings for the specified layer and datatype are
retained if the cells are exploded. The list is additive; one list element does not negate
another list element. By default, the IC Validator tool does not retain the text of exploded
cells.

Chapter 2: Runset Functions: A - I


assign_text() 2-78
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The use_exploded_text arguments in the assign_text(),
assign_openaccess_text(), and text_options() functions are additive.
Use the exploded_text_options argument of the text_options() function to control
the prepending of the hierarchical path to text when the cell it is in is exploded.
❍ cells. Optional. Specifies the cells from which text is used if these cells are
exploded. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool deletes the text from
all cells.
❍ text. Optional. Specifies the text strings that are used if a cell containing the text is
exploded. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool uses all text strings.

openaccess
Optional. Controls the reading of data from an OpenAccess database on a layer-by-layer
basis.
❍ objects. Optional. Assigns the specified text types to a layer when reading an
OpenAccess library. By default, the IC Validator tool allows all types to be read.
■ PIN_TEXT. Assigns IC Validator automatically generated text for pins. It can be a
pin name or a net name depending on the runset options set in the pin_text
argument of the openaccess_options() function.
■ POLYGON_TEXT. Assigns IC Validator automatically generated text for polygons.
The text is always a net name.
■ TEXT. Assigns OpenAccess text object from the input database.

■ TEXT_DISPLAY. Assigns OpenAccess text display object from the input database.

■ TERMINAL_TEXT. Assigns OpenAccess instance terminal objects from the input


database. See the terminal_text argument of the openaccess_options()
function for more information.

gds
Optional. Controls the text read from a GDSII file for each assigned text layer. If the
generate_property_text argument of the gds_options() function is TOP or ALL, text
objects are generated for polygons with associated properties. The text is located on the
polygon and has the same layer and datatype.
Note:
This option overrides selections made in the text argument of the gds_options()
function.

Chapter 2: Runset Functions: A - I


assign_text() 2-79
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ objects. Optional. Assigns the specified text types to a layer when reading a GDSII
file. The default is TEXT.
■ PROPERTY_TEXT. Assigns automatically generated text for polygons.

■ TEXT. Assigns GDSII text points from the input database.

❍ properties. Optional. Specifies the property numbers to use when the objects
argument is PROPERTY_TEXT. The property numbers must be in the range of 0–255,
inclusive. If this list is empty, no property text is assigned.

oasis
Optional. Controls the text read from an OASIS input library for each assigned text layer.
If the generate_property_text argument of the oasis_options() function is TOP or
ALL, text points are generated for polygons with associated properties. The text is
located on the polygon and has the same layer and datatype.
Note:
This option overrides selections made in text argument of the oasis_options()
function.
❍ objects. Optional. Assigns the specified text types to a layer when reading an
OASIS library. The default is TEXT.
■ PROPERTY_TEXT. Assigns automatically generated text for polygons.

■ TEXT. Assigns OASIS text points from the input database.

❍ properties. Optional. Specifies the property numbers to use when the objects
argument is PROPERTY_TEXT. The property numbers must be in the range of 0–255,
inclusive. If this list is empty, no property text is assigned.

libraries
Optional. Specifies the libraries. An assign function uses only layers from this library. The
library is defined by the return value of the library() or library_import() function.
Note:
The list can only contain one library.
The libraries argument is required if you use the library_import() function and the
argument is prohibited if you do not use the library_import() function.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


assign_text() 2-80
IC Validator Reference Manual Version N-2017.12-SP2

ndm
Optional. Controls the reading of data from an NDM library on a layer-by-layer basis. This
ndm argument filters data only for the given layer. The ndm_options() function controls
which data is read globally.
Note:
The ndm argument is ignored for non-NDM libraries.
❍ views. Optional. Includes the specified views, on a layer-by-layer basis, when
reading the NDM library. This option works with the drc_black_box_cells,
lvs_black_box_cells, and layout_view_cells arguments of the ndm_options()
function. See Table 2-5 in the assign() function section for a list of views. By default,
the IC Validator tool reads all views.
❍ objects. Optional. Includes the specified objects, on a layer-by-layer basis, when
reading the NDM library. Table 2-19 lists the objects. By default, the IC Validator tool
reads all objects
Table 2-19 NDM objects Options for assign_text() Function

TEXT PIN_TEXT POLYGON_TEXT

❍ shape_uses. Optional. Specifies the shape when reading the NDM library for this
layer. You can use the exclude_ndm_shape_uses() function to obtain a list of all
possible shapes except those specified. By default, the IC Validator tool reads data of
all shapes types. See Table 2-7 in the assign() function section for a list of shape
uses.
❍ design_types. Optional. Includes only data from cells with the specified design
types on this layer when reading the NDM library. It does not apply to the top cell.
Table 2-9 in the assign() function lists the types. By default, the tool reads all design
types.
❍ masks. Specifies the multi-patterning mask that determine the shapes that are read
from the NDM library. The default is not to set a multi-patterning mask. Table 2-11 in
the assign() function section lists the mask options.
❍ read_from. Optional. Specifies whether data is read from design cell views (both
design and frame), internal designs, or both. The default is no filtering ({ }). no
filtering.
■ VIEWS. Includes data from design cell views on this runset layer.

■ INTERNAL_DESIGNS. Includes data from internal designs on this runset layer.

❍ internal_designs. Optional. Specifies the internal designs from which to read data
for a given runset layer. Table 2-12 in the assign() function section lists the

Chapter 2: Runset Functions: A - I


assign_text() 2-81
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal_design options. See the internal_designs argument of the


ndm_options() function for more information.

❍ read_internal_designs_from. Optional. Lists the internal design cells that are


included on the specified layer when an internal design is read. You can include the
top internal design cells only, all of the internal design cells except the top cells, or all
of the internal design cells. By default, the IC Validator tool reads all of the internal
design cells when the internal design is read.
■ TOP_CELL. Includes the top internal design cells.

■ LOWER_CELLS. Includes all of the internal design cells except the top cells.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Here is a simple example:
m1_text = assign_text({{7}}); /* layer 7 and all datatypes */
m2_text = assign_text({{[9, 11], [0,3]}} /* layers 9 through 11
and data types 0 through 3 */

Here is a complex example:


m3_text = assign_text(
{{8},{9,[100,102]}, {33}}, /* layer 8,
layer 9 datatypes 100-102,
layer 33 */
milkyway = {views = {"CEL", "FRAM"}} /* Milkyway library,
read CEL and FRAM views */
);

This example reads normal text from the layout and generated text from property 4:
m1_all_text = assign_text({{==1}}, gds = {objects={TEXT,PROPERTY_TEXT},
properties={4}});

Chapter 2: Runset Functions: A - I


assign_text() 2-82
IC Validator Reference Manual Version N-2017.12-SP2

This example reads only normal text from the layout layer 1:
m1_text = assign_text({{==1}});

This example reads only generated text from property 4:


m1_prop_text = assign_text({{==1}}, gds = {objects={PROPERTY_TEXT},
properties={4}});

See Also
assign()
assign_edge()
assign_openaccess()
assign_openaccess_edge()
assign_openaccess_text()
openaccess_options()
run_options()
text_options()
text_origin()

Chapter 2: Runset Functions: A - I


assign_text() 2-83
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

buildsub()
The buildsub() function creates isolated substrate regions from a layer containing
isolation regions, which are typically isolation rings.
Note:
The output of the buildsub() function must be used only as bulk polygon layer for the
device configuration functions and the connect() function.
The buildsub() function creates a substrate-like layer by
• Selecting polygons from the input layer that create isolation regions, including
❍ Rings
❍ Polygons that edge touch the top-level cell extents
• Removing the selected isolation region data from the substrate to produce a set of
isolated bulk regions.

The effect is similar to forming a polygon in each cell that is the size of the extents of the cell
and then performing a NOT operation of the selected isolation data from the cell extent data.
The output from the buildsub() function is not the same as output from the not() function,
for example, substrate not layer.

Syntax
buildsub(
layer = polygon_layer,
oversize = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer
Required. Specifies the layer that contains isolation definition data from which the
substrate region is created.

oversize
Optional. Oversizes the extents at the top cell. This oversizing prevents the generated
bulk layer from being cut in two. The default is 0.0.

Chapter 2: Runset Functions: A - I


buildsub() 2-84
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example

Using oversize Argument


result = buildsub(nwell,oversize=0.5);

Figure 2-17 oversize Argument Example

nwell

oversize = 0.0 oversize = 0.5 result


(default)

Using buildsub() Result in Device Function


psub = buildsub(layer = NWELL);
...
CONNECT_DB_1 = connect(...,
{{subtie, psub}, by_layer = subcon}
);
...
nmos(
device_name = "n",

Chapter 2: Runset Functions: A - I


buildsub() 2-85
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device_layers = {{ngate}, {nsd}, {nsd}, {psub}},


...
);

See Also
chip_extent()
get_substrate()

Chapter 2: Runset Functions: A - I


buildsub() 2-86
IC Validator Reference Manual Version N-2017.12-SP2

capacitor()
The capacitor() function collects extraction configuration information about intentional
capacitors that are defined by a device body layer and two terminal layers. The configuration
information, which contains device body and terminal layers, property extraction
information, schematic device mappings, and pin handling instructions, is stored in the
device matrix that is passed to the extract_devices() function.
A capacitor device is recognized when polygons in the device body layer interact with one
polygon from each terminal layer and from each optional pins device layer. If an optional pin
layer has the pin_type option set to BULK, the required relationship between the pin layer
polygon and the device body layer polygon is defined by the bulk_relationship
argument. If an optional pin layer has the pin_type option set to TERMINAL, the optional pin
layer polygon must interact with the device body layer polygon but is not required to enclose
the device body layer polygon.
Note:
See “Device Names” in Appendix A for the device_name argument restrictions.

Syntax
capacitor(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
terminal_a = polygon_layer,
terminal_b = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},

Chapter 2: Runset Functions: A - I


capacitor() 2-87
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

...}, //optional
property_function =
function, //optional
merge_parallel =
true | false, //optional
bulk_relationship =
ENCLOSE | INTERACT, //optional
swappable_pins =
{{"string", ...}, ...}, //optional
schematic_devices =
{{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
extract_shorted_device = true | false, //optional
area_capval = double, //optional
coinedge_capval = double, //optional
fringe_edge_capval = double, //optional
perim_capval = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use in the extract_devices()
function.

device_name
Required. Specifies the capacitor. A device name can be reused across multiple calls of
the capacitor() function if all calls have
❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.

Chapter 2: Runset Functions: A - I


capacitor() 2-88
IC Validator Reference Manual Version N-2017.12-SP2

❍ Equivalent settings for x_card argument.

device_body
Required. Specifies the body layer of the capacitor.

terminal_a
Required. Specifies the device layer that contains the first terminal of the capacitor. The
pin name generated by the IC Validator tool is “A”.

terminal_b
Required. Specifies the device layer that contains the second terminal of the capacitor.
The pin name generated by the IC Validator tool is “B”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin. The default is BULK.


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named BULK.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

Chapter 2: Runset Functions: A - I


capacitor() 2-89
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon. The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() function for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. The default is
properties = {{"c"}},

❍ name. Required. Specifies the property name. See “Predefined Name Matches” in
Chapter 7, “Compare Functions Basics” of the IC Validator LVS User Guide for the
names and associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Optional. Specifies the data type of the property. The default is DOUBLE.
Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.

Chapter 2: Runset Functions: A - I


capacitor() 2-90
IC Validator Reference Manual Version N-2017.12-SP2

❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation. If the lvs_user_unit argument of the run_options() function is set to
METER, the tool functions as if the scale argument is NONE.

❍ write_property_to. Optional. Specifies to which file the property is written. The


default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.

Chapter 2: Runset Functions: A - I


capacitor() 2-91
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.

Chapter 2: Runset Functions: A - I


capacitor() 2-92
IC Validator Reference Manual Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 2-20.
Table 2-20 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

Chapter 2: Runset Functions: A - I


capacitor() 2-93
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-20 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument (Continued)

write_property_to value Dual-hierarchy phase Treatment of processing layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 2-21.
Table 2-21 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

Chapter 2: Runset Functions: A - I


capacitor() 2-94
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-21 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted capacitor. The default calculation is for the capacitance. The default
calc_capacitor_properties() function is defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for information about the utility functions
you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon. The default is ENCLOSE.
❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

Chapter 2: Runset Functions: A - I


capacitor() 2-95
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
capacitor() function.

■ The schematic pin names do not match the standard “A”, “B”, and “BULK” pin
names, in addition to optional pin names provided in the optional_pins list of
structures argument of the capacitor() function.
❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default is
"B".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


pin_name option in the optional_pins argument.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the capacitor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
capacitor() function, that pin can be specified with the ignore_pins. Otherwise,
this optional pin produces an error during the compare operation.

Chapter 2: Runset Functions: A - I


capacitor() 2-96
IC Validator Reference Manual Version N-2017.12-SP2

x_card
Optional. Specifies if the instance name prefix is replaced when netlisting the device with
the netlist(), pex_generate_results(), write_annotation_file(),
write_spice(), and write_xref_spice() functions. The default is false.

❍ true. Replaces the default instance name prefix for the layout extracted device with
“X”. This option facilitates the use of SPICE SUBCKT models to represent devices in
simulation.
❍ false. Does not replace the default instance name prefix for the layout extracted
device. Netlists use an instance name prefix (SPICE card) value of “C” for netlisting
the extracted layout device.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” in Chapter 4 for more information.

extract_shorted_device
Optional. Specifies whether shorted capacitors, that is, capacitors with only one terminal,
are extracted. The default is true.
❍ true. Extracts shorted capacitors.

❍ false. Reports shorted capacitors as error devices.

area_capval
2 2
Optional. Specifies the capacitance per unit area, either F/m or F/m . The unit of
measure is specified by the lvs_user_unit argument of the run_options() function to
either microns or meters. This value is used to calculate the parallel plate capacitance of
the device as represented by the device body polygon. The default is 0.

coinedge_capval
Optional. Specifies the capacitance per unit length, either F/m or F/m, of edges where
the first terminal layer is coincident with the second terminal layer. The unit of measure
is specified by the lvs_user_unit argument of the run_options() function to either
microns or meters. The default is 0.

fringe_edge_capval
Optional. Specifies the capacitance per unit length, either F/m or F/m, of the second
terminal edge that is overlapped by the first terminal layer. The unit of measure is
specified by the lvs_user_unit argument of the run_options() function to either
microns or meters. The default is 0.

Chapter 2: Runset Functions: A - I


capacitor() 2-97
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

perim_capval
Optional. Specifies the capacitance per unit length, either F/m or F/m, of the capacitor
perimeter. The unit of measure is specified by the lvs_user_unit argument of the
run_options() function to either microns or meters. The perimeter constitutes edges of
the overlapping area that are not otherwise accounted for by the coincident edge or the
fringe edge.
❍ When the coinedge_capval option is 0, the coincident edges are considered part of
the perimeter.
❍ When the fringe_edge_capval option is 0, the fringe edges are considered part of
the perimeter.
The default is 0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section for more
information. You must ensure that the string is valid and unique because the IC Validator
tool does not check the value. The default is an empty string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes

Chapter 2: Runset Functions: A - I


capacitor() 2-98
IC Validator Reference Manual Version N-2017.12-SP2

are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies an ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
For example, the list of swappable pins is
swappable_pins = {{"XA","XB"}},

and the list of swappable properties is


swappable_properties = {{"XA",{"PA1","PA2"}},{"XB",{"PB1","PB2"}}}

When pins XA and XB are detected as being swapped, properties PA1 and PB1 are
swapped, as are PA2 and PB2. However, PA1 and PB2 are not swapped, nor are PA1
and PA2, due to inconsistent property_list indexes.

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” in Chapter 4 for more information.

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


capacitor() 2-99
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following example shows how to extract a capacitor with terminals met1, poly, and
2
substrate, and with a capacitance per unit area of 1e-15 F/m :
poly = assign({{5}});
met1 = assign({{22}});
...
m1_p_cap = met1 and poly;

capacitor(
matrix,
device_name = "MPCAP",
device_body = m1_p_cap,
terminal_a = met1,
terminal_b = poly,
optional_pins = {{substrate}},
area_capval = 1e-15
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

The following example uses the unique_identifier argument. This argument allows you
to look up device-specific properties that are stored in global variables.
// Define global hash containing property extraction parameters
cap_param_h : newtype hash of string to double;
cap_param : cap_prop_h = {};

// Define property_function remote function


cap_prop: function (void) returning void {
// Retrieves unique_identifier argument
// from capacitor() function call
curr_dev_id : string = dev_unique_identifier();
// Retrieves the specified parameter from
// the cap_param global hash
dev_prop : double = cap_param[curr_dev_id];
dev_save_double_properties({{"dev_prop", dev_prop}});
}

// Call capacitor(), assign values to the unique_identifier


// argument, and assign a corresponding key/value pair in the
// cap_param container.
cap_param["capA"] = 0.235;
cap_param["capB"] = 0.438;
capacitor(

Chapter 2: Runset Functions: A - I


capacitor() 2-100
IC Validator Reference Manual Version N-2017.12-SP2

matrix = dev_matrix,
device_name = "CAP",
device_body = capA_body,
terminal_a = capA_term_A,
terminal_b = capA_term_B,
properties = {{"dev_prop", DOUBLE}},
property_function = cap_prop,
unique_identifier = "capA"
) ;

capacitor(
matrix = dev_matrix,
device_name = "CAP",
device_body = capB_body,
terminal_a = capB_term_A,
terminal_b = capB_term_B,
properties = {{"dev_prop", DOUBLE}},
property_function = cap_prop,
unique_identifier = "capB"
) ;

See Also
inductor()
resistor()

Chapter 2: Runset Functions: A - I


capacitor() 2-101
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cell_extent()
The cell_extent() function creates a polygon layer that consists of a rectangle in each of
the specified cells that is equal to the extents of the cell. The extents of the cell are defined
by all layers read from the input library and include geometric data and placements.
Important:
This is a methodology check function. See restriction 1 (Preserving Cells) in
“Methodology Check Functions” on page 1-4.
Note:
When you use the size() function with a distance greater than 0 (zero) and
processing_mode = HIERARCHICAL on a returned layer from the cell_extent()
function, only polygons in the top cell and in the cells defined in the
device_extraction_preserved_cells argument are oversized.

Syntax
cell_extent(
cell_list = {"string", ...},
name = "layer_label", //optional
keep_cells = true | false //optional
);

Returns
polygon layer or error result

Arguments
cell_list
Required. Specifies the cell names. If the list is empty, an empty layer is created. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for more
information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

keep_cells
Optional. Specifies the exploding of cells in the select_cells list. The default is true.
❍ true. Does not explode cells during hierarchy optimization.

Chapter 2: Runset Functions: A - I


cell_extent() 2-102
IC Validator Reference Manual Version N-2017.12-SP2

❍ false. The selected cells are allowed to explode during hierarchy optimization. If a
selected cell does get exploded, the selected data (the cell’s extents in this case) are
placed in the parent cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example, a single rectangle is created in the mid1 cell, equal to the extents
of the cell. In the assign() function, layerA and layerB are specified. The result is shown in
Figure 2-18.
Result = cell_extent(cell_list = {"mid1"});

Chapter 2: Runset Functions: A - I


cell_extent() 2-103
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-18 cell_extent() Function Example


Input
top
mid1 Input Hierarchy
mid2 bot
top

mid1 mid2

Output
top bot

mid2

layerA layerB Result

See Also
cell_extent_layer()
chip_extent()
layer_extent()

Chapter 2: Runset Functions: A - I


cell_extent() 2-104
IC Validator Reference Manual Version N-2017.12-SP2

cell_extent_layer()
The cell_extent_layer() function creates a polygon layer that consists of a rectangle in
each of the specified cells that is equal to the extents of the cell. The extents of the cell are
defined by the input layer and include geometric data and placements.
Important:
This is a methodology check function. See disclaimers 1 (Preserving Cells) and 2
(Hierarchy) in “Methodology Check Functions” on page 1-4.

Syntax
cell_extent_layer(
layer1 = data_layer,
cell_list = {"string", ...},
name = "layer_label", //optional
keep_cells = true | false //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer from which cells are selected.

cell_list
Required. Specifies the cell names. If the list is empty, an empty layer is created. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for more
information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

keep_cells
Optional. Specifies the exploding of cells in the cells_list argument. The default is
true.

❍ true. Does not explode cells during hierarchy optimization.

Chapter 2: Runset Functions: A - I


cell_extent_layer() 2-105
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ false. The selected cells are allowed to explode during hierarchy optimization. If a
selected cell does get exploded, the selected data (the cell’s extents in this case) are
placed in the parent cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example, the extent of metal layer is derived only in the mid1 cell. The result
is shown in Figure 2-19.
metal_ext = cell_extent_layer(metal, cell_list = {"mid1"});

Chapter 2: Runset Functions: A - I


cell_extent_layer() 2-106
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-19 cell_extent_layer() Function Example


Input
top
mid1
Input Hierarchy
mid2 bot

top

mid1 mid2
Output

top bot

mid1
mid2 bot

metal Result

See Also
cell_extent()
chip_extent()
layer_extent()

Chapter 2: Runset Functions: A - I


cell_extent_layer() 2-107
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

center_to_center1()
The center_to_center1() function creates polygons that consist of rectangles formed by
distance violations between center points and center lines of the selected rectangles on
layer1 polygons. Nonrectangular data is ignored.

The output consists of rectangles that are the extents of the violations. When the violation is
horizontal or vertical, the output rectangle is generated by expanding the violation three
times the input library resolution on both sides.

Syntax
center_to_center1(
layer1 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

Chapter 2: Runset Functions: A - I


center_to_center1() 2-108
IC Validator Reference Manual Version N-2017.12-SP2

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares, as shown in


Figure 2-20.
Figure 2-20 square_to_square = POINT_TO_POINT Example

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and

Chapter 2: Runset Functions: A - I


center_to_center1() 2-109
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

non_square_to_non_square arguments for more information. The default is


POINT_TO_POINT.

❍ NONE. Does not check any spacing between square and non square polygons.

❍ POINT_TO_POINT. Checks spacing between the center of a square and the center of
a non square polygon, as shown in Figure 2-21.
Figure 2-21 square_to_non_square = POINT_TO_POINT Example

❍ POINT_TO_LINE. Checks spacing between the center of a square and the centerline
of a non square polygon, as shown in Figure 2-22.
Figure 2-22 square_to_non_square = POINT_TO_LINE Example

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons, as


shown in Figure 2-23.

Chapter 2: Runset Functions: A - I


center_to_center1() 2-110
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-23 non_square_to_non_square = POINT_TO_POINT Example

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons, as


shown in Figure 2-24. Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees,
as shown here:
Figure 2-24 non_square_to_non_square = LINE_TO_LINE Example

Chapter 2: Runset Functions: A - I


center_to_center1() 2-111
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees, as shown in Figure 2-25.
Figure 2-25 non_square_to_non_square Check Zones Example

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.

❍ TOUCH. Specifies that line ends touch the width edges of the rectangle, as shown in
Figure 2-26.
Figure 2-26 line_end_position = TOUCH Example

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge, as shown in Figure 2-27.

Chapter 2: Runset Functions: A - I


center_to_center1() 2-112
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-27 line_end_position = HALF_WIDTH Example

w
w
_
2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the example shown in Figure 2-28, a check is performed on rectangles whose sides fall
within the range specified by the sides argument. Any spacing found from the center of one
rectangle to the center of another rectangle that meets the specified distance value is a
violation.
Error = center_to_center1(layer1 = layerA, distance < 5,
sides = {length1 = 2, length2 = 2});

Chapter 2: Runset Functions: A - I


center_to_center1() 2-113
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-28 center_to_center1() Function Example


1
layerA Error
1

2 2

See Also
center_to_center1_edge()
center_to_center2()
center_to_center2_edge()

Chapter 2: Runset Functions: A - I


center_to_center1() 2-114
IC Validator Reference Manual Version N-2017.12-SP2

center_to_center1_edge()
The center_to_center1_edge() function creates edges that consist of distance violations
between center points and center lines of the selected layer1 rectangles. Nonrectangular
data is ignored. The orientation of the edges is nondeterministic.

Syntax
center_to_center1_edge(
layer1 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-115
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
See the example for the square_to_square argument of the center_to_center1()
function for more information.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares.

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and
non_square_to_non_square arguments for more information. The default is
POINT_TO_POINT.
See the examples for the square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between square and non square polygons.

❍ POINT_TO_POINT. Checks spacing between the center of a square polygon and the
center of a non square polygon.
❍ POINT_TO_LINE. Checks spacing between the center of a square and the centerline
of a non square polygon.

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-116
IC Validator Reference Manual Version N-2017.12-SP2

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
See the examples for the non_square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons.

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons.


Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees.
The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees.

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.
See the examples for the line_end_position argument of the center_to_center1()
function for more information.
❍ TOUCH. Specifies that line ends touch the width edges of the rectangle.

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-117
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the first example, Figure 2-29, a check is performed on all rectangles. Any spacing found
from the center of one rectangle to the center of another rectangle that is less than 0.20 m
is a violation.
Error = center_to_center1_edge(layer1 = contact, distance < 0.20);

Figure 2-29 Checking All Rectangles Example

contact

metal

error

In the second example, Figure 2-30, a similar check is performed. In this example, however,
only rectangles that are on the same net are considered. Because the contacts connected
to metal are more than 0.20 m apart, no errors are reported.
cdb = connect( connect_items = {{{M1}, CO}});
Error = center_to_center1_edge(layer1 = contact,
distance < 0.20,
connectivity = SAME_NET,
connect_sequence = cdb);

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-118
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-30 Checking Rectangles on the Same Net Example

contact

metal

error

In the third example, Figure 2-31, a check is performed on squares that have sides of
0.05 m.
Error = center_to_center1_edge(layer1 = contact,
distance < 0.20,
sides = { 0.05, 0.05});

Figure 2-31 Checking Squares Example

contact

metal

error

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-119
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
center_to_center1()
center_to_center1_error()
center_to_center2()
center_to_center2_edge()
center_to_center2_error()

Chapter 2: Runset Functions: A - I


center_to_center1_edge() 2-120
IC Validator Reference Manual Version N-2017.12-SP2

center_to_center1_error()
The center_to_center1_error() function creates error layers that consist of distance
violations between center points and center lines of the selected layer1 rectangles.
Nonrectangular data is ignored. The orientation of the error layers is nondeterministic.

Syntax
center_to_center1_error(
layer1 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
name = "layer_label" //optional
);

Returns
error layer

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.

Chapter 2: Runset Functions: A - I


center_to_center1_error() 2-121
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
See the example for the square_to_square argument of the center_to_center1()
function for more information.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares.

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and
non_square_to_non_square arguments for more information. The default is
POINT_TO_POINT.
See the examples for the square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between square and non square polygons.

❍ POINT_TO_POINT. Checks spacing between the center of a square polygon and the
center of a non square polygon.
❍ POINT_TO_LINE. Checks spacing between the center of a square and the centerline
of a non square polygon.

Chapter 2: Runset Functions: A - I


center_to_center1_error() 2-122
IC Validator Reference Manual Version N-2017.12-SP2

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
See the examples for the non_square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons.

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons.


Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees.
The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees.

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.
See the examples for the line_end_position argument of the center_to_center1()
function for more information.
❍ TOUCH. Specifies that line ends touch the width edges of the rectangle.

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


center_to_center1_error() 2-123
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
center_to_center1()
center_to_center1_edge()
center_to_center2()
center_to_center2_edge()
center_to_center2_error()

Chapter 2: Runset Functions: A - I


center_to_center1_error() 2-124
IC Validator Reference Manual Version N-2017.12-SP2

center_to_center2()
The center_to_center2() function creates polygons that consist of rectangles formed by
distance violations between center points and center lines of the selected rectangles from
layer1 to layer2. Nonrectangular data is ignored.

The output consists of rectangles that are the extents of the violations. When the violation is
horizontal or vertical, the output rectangle is generated by expanding the violation three
times the input library resolution on both sides.

Syntax
center_to_center2(
layer1 = polygon_layer,
layer2 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
touch = true | false, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

Chapter 2: Runset Functions: A - I


center_to_center2() 2-125
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
See the example for the square_to_square argument of the center_to_center1()
function for more information.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares.

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and
non_square_to_non_square arguments for more information. The default is
POINT_TO_POINT.
See the examples for the square_to_non_square argument of the
center_to_center1() function for more information.

Chapter 2: Runset Functions: A - I


center_to_center2() 2-126
IC Validator Reference Manual Version N-2017.12-SP2

❍ NONE. Does not check any spacing between square and non square polygons.

❍ POINT_TO_POINT. Checks spacing between the center of a square polygon and the
center of a non square polygon.
❍ POINT_TO_LINE. Checks spacing between the center of a square polygon and the
centerline of a non square polygon.

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
See the examples for the non_square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons.

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons.


Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees.
The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees.

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.
See the examples for the line_end_position argument of the center_to_center1()
function for more information.
❍ TOUCH. Specifies that line ends touch the width edges of the rectangle.

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge.

touch
Optional. When set to true, square_to_square, square_to_non_square, and
non_square_to_non_square touches are violations. The output shape for a touch

Chapter 2: Runset Functions: A - I


center_to_center2() 2-127
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

violation is a box with sides of 6 units for polygon output, as shown in Figure 2-32. The
default is false.
Figure 2-32 center_to_center2() Function Touch Violation Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the first example, Figure 2-33, a check is performed between two layers and the check
considers all rectangles. Any spacing found from the center of one rectangle from the first
layer to the center of a rectangle from a second layer that is less than 0.20 m is a violation.
Error = center_to_center2(layer1 = contact,
layer2 = via,
distance < 0.20
);

Chapter 2: Runset Functions: A - I


center_to_center2() 2-128
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-33 Check on Two Layers Considering All Rectangles Example

via

contact

metal

error

In the second example, Figure 2-34, a similar check is performed. For this example,
however, only rectangles that are on different nets are considered.
Error = center_to_center2(layer1 = contact,
layer2 = via,
distance < 0.20,
connectivity = DIFFERENT_NET,
connect_sequence = cdb
);

Figure 2-34 Check Considering Rectangles on Different Nets Example

via

contact

metal

error

In the third example, Figure 2-35, a similar check is performed on squares that have sides
of 0.05 m.
Error = center_to_center2(layer1 = contact,
layer2 = via,
distance < 0.20,

Chapter 2: Runset Functions: A - I


center_to_center2() 2-129
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

sides = { 0.05, 0.05}


);

Figure 2-35 Check on Squares Example

via

contact

metal

error

See Also
center_to_center1()
center_to_center1_edge()
center_to_center2_edge()

Chapter 2: Runset Functions: A - I


center_to_center2() 2-130
IC Validator Reference Manual Version N-2017.12-SP2

center_to_center2_edge()
The center_to_center2_edge() function creates edges that consist of distance violations
between center points and center lines of the selected rectangles from layer1 to layer2.
Nonrectangular data is ignored. The edges are oriented from layer1 to layer2.

Syntax
center_to_center2_edge(
layer1 = polygon_layer,
layer2 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
touch = true | false, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

Chapter 2: Runset Functions: A - I


center_to_center2_edge() 2-131
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
See the example for the square_to_square argument of the center_to_center1()
function for more information.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares.

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and
non_square_to_non_square arguments for more information. The default is
POINT_TO_POINT.
See the examples for the square_to_non_square argument of the
center_to_center1() function for more information.

Chapter 2: Runset Functions: A - I


center_to_center2_edge() 2-132
IC Validator Reference Manual Version N-2017.12-SP2

❍ NONE. Does not check any spacing between square polygons and non square
polygons.
❍ POINT_TO_POINT. Checks spacing between the center of a square polygon and the
center of a non square polygon.
❍ POINT_TO_LINE. Checks spacing between the center of a square polygon and the
centerline of a non square polygon.

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
See the examples for the non_square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons.

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons.


Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees.
The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees.

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.
See the examples for the line_end_position argument of the center_to_center1()
function for more information.
❍ TOUCH. Specifies that line ends touch the width edges of the rectangle.

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge.

Chapter 2: Runset Functions: A - I


center_to_center2_edge() 2-133
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

touch
Optional. Specifies that when set to true, square_to_square,
square_to_non_square, and non_square_to_non_square touches are violations. The
output shape for a touch violation has two edges that form a “+” shape for edge output,
as shown in Figure 2-36. Each edge has a length of 6 units. The orientation of the edges
is nondeterministic. The default is false.
Figure 2-36 center_to_center2_edge() Function Touch Violation Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
center_to_center1()
center_to_center1_edge()
center_to_center2()

Chapter 2: Runset Functions: A - I


center_to_center2_edge() 2-134
IC Validator Reference Manual Version N-2017.12-SP2

center_to_center2_error()
The center_to_center2_error() function creates edges that consist of distance
violations between center points and center lines of the selected rectangles from layer1 to
layer2. Nonrectangular data is ignored.

Syntax
center_to_center2_error(
layer1 = polygon_layer,
layer2 = polygon_layer,
distance = doubleconstraint,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
square_to_square = NONE | POINT_TO_POINT, //optional
square_to_non_square = NONE | POINT_TO_POINT | POINT_TO_LINE,
//optional
non_square_to_non_square = NONE | POINT_TO_POINT | LINE_TO_LINE,
//optional
line_end_position = TOUCH | HALF_WIDTH, //optional
touch = true | false, //optional
name = "layer_label" //optional
);

Returns
error layer

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.

Chapter 2: Runset Functions: A - I


center_to_center2_error() 2-135
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 option is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the rectangles that are on the same net.

❍ DIFFERENT_NET. Checks the rectangles that are on different nets.

❍ ALL. Checks all rectangles regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

square_to_square
Optional. Checks center-to-center spacing between square polygons. See the
square_to_non_square and non_square_to_non_square arguments for more
information. The default is POINT_TO_POINT.
See the example for the square_to_square argument of the center_to_center1()
function for more information.
❍ NONE. Does not check any spacing between squares.

❍ POINT_TO_POINT. Checks spacing between the centers of squares.

square_to_non_square
Optional. Checks center-to-centerline spacing between square and non square
polygons. Only orthogonal data is checked. See the square_to_square and
non_square_to_non_square arguments for more information. The default is
POINT_TO_POINT.
See the examples for the square_to_non_square argument of the
center_to_center1() function for more information.

Chapter 2: Runset Functions: A - I


center_to_center2_error() 2-136
IC Validator Reference Manual Version N-2017.12-SP2

❍ NONE. Does not check any spacing between square polygons and non square
polygons.
❍ POINT_TO_POINT. Checks spacing between the center of a square polygon and the
center of a non square polygon.
❍ POINT_TO_LINE. Checks spacing between the center of a square polygon and the
centerline of a non square polygon.

non_square_to_non_square
Optional. Checks centerline-to-centerline spacing between non square polygons. Only
orthogonal data is checked. See the square_to_square and square_to_non_square
arguments for more information. The default is POINT_TO_POINT.
See the examples for the non_square_to_non_square argument of the
center_to_center1() function for more information.

❍ NONE. Does not check any spacing between non square polygons.

❍ POINT_TO_POINT. Checks spacing between the centers of non square polygons.

❍ LINE_TO_LINE. Checks spacing between the centerlines of non square polygons.


Two types of checking are performed:
■ Edge-to-edge spacing check.
■ Endpoint-to-endpoint spacing check. This check is limited to outside 180-degrees.
The POINT_TO_POINT check zone is not limited, but the LINE_TO_LINE check zone is
limited to 180-degrees.

line_end_position
Optional. Specifies the line-end position relative to the rectangle width edge that is used
in the check region. The default is HALF_WIDTH.
Note:
The line_end_position argument is used only when the square_to_non_square
argument is POINT_TO_LINE or the non_square_to_non_square argument is
LINE_TO_LINE.
See the examples for the line_end_position argument of the center_to_center1()
function for more information.
❍ TOUCH. Specifies that line ends touch the width edges of the rectangle.

❍ HALF_WIDTH. Specifies that the line end is a distance of one-half of the rectangle
width from the width edge.

Chapter 2: Runset Functions: A - I


center_to_center2_error() 2-137
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

touch
Optional. Specifies that when set to true, square_to_square,
square_to_non_square, and non_square_to_non_square touches are violations. The
output shape for a touch violation has two edges that form a “+” shape for edge output.
Each edge has a length of 6 units. The orientation of the edges is nondeterministic. The
default is false.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
center_to_center1()
center_to_center1_edge()
center_to_center1_error()
center_to_center2()
center_to_center2_edge()

Chapter 2: Runset Functions: A - I


center_to_center2_error() 2-138
IC Validator Reference Manual Version N-2017.12-SP2

check_property()
The check_property() function compares the values of properties between matched
schematic and layout devices. Use the property_tolerances argument to compare
properties based on a tolerance value. Use the property_function argument to compare
properties based on more complex conditions.
When resolving symmetry, the IC Validator tool uses properties and property tolerances
when symmetry cannot be resolved by other means. When a user-defined
property_function is used in the check_property() function, however, the IC Validator
tool can no longer use property information for resolving symmetry. Therefore, if calculations
on properties are needed prior to their comparison, use the recalculate_property()
function to do these calculations rather than performing them in a check_property()
function.
This function should be in any typical LVS runset, and it must be called before the
compare() function. See Chapter 7, “Compare Functions Basics” in the IC Validator LVS
User Guide for more information about complementary functions and precedence rules.
Limitation:
Do not use the recognize_gate() function when a remote function is specified by the
property_function argument of the check_property() function.

Syntax
check_property(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
property_tolerances = {{property = "string",
tolerance = doubleconstraint,
tolerance_type = RELATIVE | ABSOLUTE},
...}, //optional
property_function = "string", //optional
schematic_optional_properties = {"string", ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Chapter 2: Runset Functions: A - I


check_property() 2-139
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information specified in
the check_property() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices. Each device must match a device specified in a
device_name argument of a device configuration function.

property_tolerances
Optional. Lists the properties to be compared. A maximum of 100 user-defined
properties can be listed. See “Predefined Name Matches” in Chapter 7, “Compare
Functions Basics” of the IC Validator LVS User Guide for the names and associated
matches that are predefined during LVS compare.
You must use either the property_tolerances or property_function argument in the
check_property() function.
Note:
You can use both the property_tolerances and property_function arguments in
the check_property() function. If you use both arguments, you must make sure that
a property is not checked by both arguments. You do not need to list in the
property_tolerances argument the properties that are referenced by the
lvs_get_double_property() function. The lvs_get_double_property() function
is in the remote function specified by the property_function argument.
❍ property. Required. Specifies the property name.

❍ tolerance. Optional. Specifies the tolerance. The property option is checked for
violations based on this tolerance. The tolerance must be specified as a range. The
tolerance_type option specifies either that the tolerance is a percentage (default)
or absolute value. The default is [-10,+10].
The minimum resolution allowed for tolerance checking is as follows.
■ When schematic_property !=0, the minimum resolution value is
absolute_value(schematic_property*1e-6)

■ When schematic_property ==0, the minimum resolution value is


absolute_value(layout_property*1e-6)

Chapter 2: Runset Functions: A - I


check_property() 2-140
IC Validator Reference Manual Version N-2017.12-SP2

If the specified tolerance range is less than this minimum value, for example, [-0,0],
the property option is checked for violations according to the minimum resolution.
❍ tolerance_type. Optional. Checks property tolerances based on a relative or
absolute property difference. The default is RELATIVE.
■ RELATIVE. Specifies that tolerances are checked based on a percentage
difference.
■ ABSOLUTE. Specifies that tolerances are checked based on an absolute value
difference. The units are based on the lvs_user_unit argument of the
run_options() function.

property_function
Optional. Specifies the remote function that compares the specified properties. See
“Compare Utility Functions” in Chapter 4 for more information about the utility functions
you can use to define a remote function.
You must use either the property_tolerances or property_function argument in the
check_property() function.
When you use the property_function argument, the IC Validator tool is unable to use
the properties to break symmetry.
Note:
See the property_tolerances argument for more information about using both the
property_tolerances and property_function arguments of the
check_property() function.

schematic_optional_properties
Optional. Specifies the properties, defined on schematic instances, that are not
compared.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which information specified
in the check_property() function applies. You must specify the equiv_cells pairs in
the equiv_options() function before calling the check_property() function. If only
one cell name in the pair is specified, the names are assumed to be the same.
Note:
The check_property() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the check_property() instruction
is discarded for the content of the exploded cell.

Chapter 2: Runset Functions: A - I


check_property() 2-141
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
The following example
1. Checks the W (width) property with a tolerance range of ±20% for PMOS device pm1.
2. Checks the L (length) property with a tolerance range of -30% to +40% for PMOS device
pm1.
3. Checks the SD property with a tolerance range of -10% to +30% for PMOS device pm1.
4. Checks the area property with a default tolerance range of ±10% for PMOS device pm1.
5. Executes the my_check_SD property function defined by the user_functions_file
argument of the compare() function for PMOS device pm1.
6. Checks the W property with a relative tolerance range of ±15% for all PMOS devices in
pm_list_1.
7. Checks the L and W properties within an absolute tolerance range from -10 to +20 for all
PMOS devices in pm_list_2. No error is reported if property W does not exist for a
particular device instance.
my_compare_state : compare_state = init_compare_matrix();

/* check the W, L, SD, area properties for PMOS pm1;


also execute "my_check_SD" */
check_property(my_compare_state, PMOS, {"pm1"},
property_tolerances = {{"W", [-20,+20]},
{"L", [-30,+40]},
{"SD", [-10,+30]}
{"area"}},
property_function = "my_check_SD"
);

/* check the W property for PMOS devices in list pm_list_1 */


pm_list_1: list of string={"pm2", "pm6", "pm7", "pm8", "pm10", "pm100"};
check_property(my_compare_state, PMOS, pm_list_1,
{{"W",[-15,15] }}
);

/* check the W and L properties for PMOS devices in list pm_list_2;

Chapter 2: Runset Functions: A - I


check_property() 2-142
IC Validator Reference Manual Version N-2017.12-SP2

do not report errors for devices that are missing property W */


pm_list_2: list of string = {"pm3", "pm4"};
check_property(my_compare_state, PMOS, pm_list_2,
{{"W", [-10,20], ABSOLUTE], {"L", [-10,20], ABSOLUTE}},
schematic_optional_properties = {"W"}
);

See Also
check_property_off()

Chapter 2: Runset Functions: A - I


check_property() 2-143
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

check_property_off()
The check_property_off() function disables checking of properties for specified devices.
For example, you can use the check_property() function to enable property checking for
all NMOS devices and use the check_property_off() function to disable the property
checking for nm1, a specific NMOS device.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
check_property_off(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...} //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information specified in
the check_property_off() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices. Each device must match a device specified in a
device_name argument of a device configuration function.

equiv_cells
Optional. Specifies a list of schematic and layout cell name pairs for which the
information specified in the check_property_off() function applies. You must specify
the equiv_cells pairs in the equiv_options() function before calling the
check_property_off() function. If only one cell name in the pair is specified, the
names are assumed to be the same.

Chapter 2: Runset Functions: A - I


check_property_off() 2-144
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The check_property_off() instruction is observed only when comparing each
listed equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the check_property_off()
instruction is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
check_property()

Chapter 2: Runset Functions: A - I


check_property_off() 2-145
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

check_symmetry()
The check_symmetry() function checks the symmetry of the target layer polygons against
the created, mirrored context layer polygons. The function
• Creates mirrored bodies of the original polygons (layer1) within each bounding box of
the context layer according to the given symmetry type.
• Compares the original polygons against the created mirrored polygons, reports the
existing part in target polygons not in mirrored polygons, and vice versa.
• Polygons in the context layer are deposited in the top cell.

Syntax
check_symmetry(
layer1 = polygon_layer,
context_layer = polygon_layer,
symmetry = HORIZONTAL_AXIS | VERTICAL_AXIS | ROTATE_180,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is the target layer.

context_layer
Required. Specifies the polygon layer that is the context layer. Polygons in layer1 that
interact with polygons on the context layer are selected.

symmetry
Optional. Specifies the symmetry type of the pattern. The options are
❍ HORIZONTAL_AXIS.

❍ VERTICAL_AXIS.

❍ ROTATE_180.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 2: Runset Functions: A - I


check_symmetry() 2-146
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
In Figure 2-37, layer1 (fill green) polygons interacting with the context layer (unfilled red)
polygons are selected for the symmetry checking operation. The mirrored polygons (filled
red) are created from the target polygons based on the mirror specifications. The target
polygons are then overlaid on the mirrored polygons and an XOR operation is performed
between the two sets of polygons. Shapes from the target polygons not in mirrored
polygons, and vice versa, are reported.
Figure 2-37 check_symmetry() Function Example
Y- X- context mirrored symmetry
layer1 layer layer overlap results
Axis Axis

check_symmetry(
layer1,
context_layer,
HORIZONTAL_AXIS)

check_symmetry(
layer1,
context_layer,
VERTICAL_AXIS)

check_symmetry(
layer1,
context_layer,
ROTATE_180)

Chapter 2: Runset Functions: A - I


check_symmetry() 2-147
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
shift_symmetry()

Chapter 2: Runset Functions: A - I


check_symmetry() 2-148
IC Validator Reference Manual Version N-2017.12-SP2

checkpoint()
The checkpoint() function saves the state of a run, including information such as the
specified layers and connect databases, into the specified checkpoint path. At least one
layer must be specified. You can have multiple checkpoint() functions in a single runset,
but you must specify different paths.
The IC Validator include files also are copied into the checkpoint path, and two files are
created:
• restart_include.rh. Contains the current state of the runset. You must include this file in
your restart runset.
• restart_type.rh. Contains all user-defined types. This file is included in your restart runset
by the restart_include.rh file. The restart runset must not have the same types redefined.

The checkpoint information is saved only if you use the -checkpoint command-line option.
You can restart a run from this checkpoint using the specified checkpoint path and the restart
functions. See the Command-Line Options section in the “IC Validator Basics” chapter of the
IC Validator User Guide and the restart() function for more information.

Syntax
checkpoint(
path = "string",
polygon_layers = {polygon_layer, ...}, //optional
edge_layers = {edge_layer, ...}, //optional
text_layers = {text_layer, ...} //optional
);

Returns
void

Arguments
path
Required. Specifies the path of the saved checkpoint files.

polygon_layers
Optional. Saves the listed polygon layers.

edge_layers
Optional. Saves the listed edge layers.

text_layers
Optional. Saves the listed text layers.

Chapter 2: Runset Functions: A - I


checkpoint() 2-149
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the restart() function for more information.

See Also
snapshot()
restart()
restart_layer()
restart_layer_edge()
restart_layer_text()

Chapter 2: Runset Functions: A - I


checkpoint() 2-150
IC Validator Reference Manual Version N-2017.12-SP2

chip_extent()
The chip_extent() function creates a polygon layer that consists of a single rectangle in
the top cell which is equal to the extents of the top cell. The top cell extents are defined by
all layers read from the input library. The extents of the top cell include geometric data and
placements.

Syntax
chip_extent(
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 2-38 shows an example of the chip_extent() function.
result = chip_extent();

Chapter 2: Runset Functions: A - I


chip_extent() 2-151
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-38 chip_extent() Function Example

layer1

layer2

result

See Also
layer_extent()

Chapter 2: Runset Functions: A - I


chip_extent() 2-152
IC Validator Reference Manual Version N-2017.12-SP2

coincident_edge() and not_coincident_edge()


The coincident_edge() function selects the portion of all layer1 edges that are
coincident with layer2 edges. It includes inside and outside coincident. The complement of
this function is the not_coincident_edge() function.

Syntax
coincident_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_coincident_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


coincident_edge() and not_coincident_edge() 2-153
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-39 shows an example of the coincident_edge() and not_coincident_edge()
functions. The results are the same if either layer is an edge layer. The syntax is
result = layer2 coincident_edge layer1;

result = layer2 not_coincident_edge layer1;

Figure 2-39 coincident_edge() and not_coincident_edge() Functions Example

layer1

layer2

result

coincident_edge() not_coincident_edge()

See Also
and_edge()
coincident_inside_edge() and not_coincident_inside_edge()
coincident_outside_edge() and not_coincident_outside_edge()
inside_touching_edge() and not_inside_touching_edge()
not_edge()
outside_touching_edge() and not_outside_touching_edge()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


coincident_edge() and not_coincident_edge() 2-154
IC Validator Reference Manual Version N-2017.12-SP2

coincident_inside_edge() and not_coincident_inside_edge()


The coincident_inside_edge() function selects the portion of all layer1 edges that are
inside coincident with layer2 edges. The complement of this function is the
not_coincident_inside_edge() function.

Syntax
coincident_inside_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_coincident_inside_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


coincident_inside_edge() and not_coincident_inside_edge() 2-155
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example, as shown in Figure 2-40, both layers are polygon layers: magenta
is layer1; red is layer2. The results are the same if either layer is an edge layer.
green = magenta coincident_inside_edge red;

Figure 2-40 coincident_inside_edge() Function Example


Input Output

See Also
and_edge()
coincident_edge() and not_coincident_edge()
coincident_outside_edge() and not_coincident_outside_edge()
inside_touching_edge() and not_inside_touching_edge()

Chapter 2: Runset Functions: A - I


coincident_inside_edge() and not_coincident_inside_edge() 2-156
IC Validator Reference Manual Version N-2017.12-SP2

coincident_outside_edge() and not_coincident_outside_edge()


The coincident_outside_edge() function selects the portion of all layer1 edges that are
outside coincident with layer2 edges. The complement of this function is the
not_coincident_outside_edge() function.

Syntax
coincident_outside_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_coincident_outside_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which the edges are selected.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


coincident_outside_edge() and not_coincident_outside_edge() 2-157
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example, as shown in Figure 2-41, both layers as polygon layers: magenta
is layer1; red is layer2. The results are the same if either layer is an edge layer.
green = magenta coincident_outside_edge red;

Figure 2-41 coincident_outside_edge() Function Example


Input Output

See Also
and_edge()
coincident_edge() and not_coincident_edge()
coincident_inside_edge() and not_coincident_inside_edge()
outside_touching_edge() and not_outside_touching_edge()

Chapter 2: Runset Functions: A - I


coincident_outside_edge() and not_coincident_outside_edge() 2-158
IC Validator Reference Manual Version N-2017.12-SP2

color_conflict_layers()
The color_conflict_layers() function assigns color-layer groups. In the runset, you
must call this function before the net_color_check() function.

Syntax
color_conflict_layers(
color_groups = {{polygon_layer, ...}, ...}}
);

Returns
color database

Arguments
color_groups
Required. Specifies multiple lists of layers. Each list of layers defines a group. Every
layer in the group represents a different color. For example {M1A, M1B} defines a group;
layer M1A has a different color from layer M1B.
One layer cannot be put in more than one group and one layer cannot be put twice in the
same group.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
When there are multiple groups of colors, each group is independent. For example, the
following statement defines two groups:
color_conflict_layers{{M1A, M1B}, {M2A, M2B}}

The order of the groups does not matter. The order of layers in each group does not matter.
The following three examples are equivalent:
color_db = color_conflict_layers({ {M1A, M1B}, {M2A, M2B} });
color_db = color_conflict_layers({ {M2A, M2B}, {M1A, M1B} });
color_db = color_conflict_layers({ {M1B, M1A}, {M2B, M2A} });

Chapter 2: Runset Functions: A - I


color_conflict_layers() 2-159
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

There is no assumption that one layer in first group represents the same color as another
layer in the second group. In the following example, the color of M1A has nothing to do with
the color of M2A:
color_conflict_layers{{M1A, M1B}, {M2A, M2B}}

The tool defines different colors on M1A and M1B, and different colors on M2A and M2B.
The two groups are independent.

See Also
color_conflict_layers_order()
net_color_check()

Chapter 2: Runset Functions: A - I


color_conflict_layers() 2-160
IC Validator Reference Manual Version N-2017.12-SP2

color_conflict_layers_order()
The color_conflict_layers_order() function assigns ordered color-layer groups. In the
runset, you must call either this function or the color_conflict_layers() f unction before
the net_color_check() function. The color_conflict_layers_order() function call is
needed only for color checking on schematic device pins.

Syntax
color_conflict_layers_order(
color_groups = {{color_layers = {polygon_layer, ...},
order = integer}, ...}
);

Returns
color database

Arguments
color_groups
Required. Specifies multiple color groups and defines the order of each group. The order
is used to validate the color rules in the input color file. Only order 1 color layers can be
checked against schematic device pins.
❍ color_layers. Required. Specifies multiple lists of layers. Each list of layers defines
a color group. Every layer in the group represents a different color. For example
{M1A, M1B} defines a group; layer M1A has a different color from layer M1B.
One layer cannot be put in more than one group and one layer cannot be put twice in
the same group.
❍ order. Required. Specifies the order for the color groups. The order of a color group
is a unique positive integer that labels all the color layers in the group.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 2: Runset Functions: A - I


color_conflict_layers_order() 2-161
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
When there are multiple groups of colors, each group is independent. For example, the
following statement defines two groups. The order of M1A and M1B is 1, and the order of
M2A and M2B is 2.
color_db = color_conflict_layers_order({ {{M1A, M1B}, 1}, {{M2A, M2B}, 2} });

See Also
color_conflict_layers()
net_color_check()

Chapter 2: Runset Functions: A - I


color_conflict_layers_order() 2-162
IC Validator Reference Manual Version N-2017.12-SP2

coloring_links()
The coloring_links() function generates link polygons that are used in multiple
patterning flows. Link polygons are connections between the node polygons that complete
the graph description of the coloring problem. Link polygons are generated by measuring
outside-to-outside spacing on the node edges defined by the color-spacing rules.
Note:
The link polygon links must have a coincident run length of at least the design_grid
value with the nodes layer.
The output links must be on the design_grid value.
Note:
Set #define MPT_API in the runset when using the coloring_links() function.
The coloring_links() function returns a polygon layer that can be used as input to the
two_color() and three_color() functions.

Syntax
coloring_links(
nodes = polygon_layer,
line_end = edge_layer, //optional
color_spacing_rules = {{rule_type = SIDE_TO_SIDE | LINE_END_TO_SIDE |
LINE_END_TO_LINE_END | CORNER_TO_CORNER |
NOTCH | CENTER_TO_CENTER,
distance = doubleconstraint,
extension_distance= double,
projection_length = doubleconstraint,
extension = EDGE | NONE | RADIAL |
RECTANGLE | SQUARE,
look_thru = NONE | NOT_ADJACENT | ALL,
look_thru_count = integerconstraint},
...}, //optional
line_end_length = double, //optional
adjacent_length = double, //optional
line_end_expand = double, //optional
side_expand = double, //optional
design_grid = double //optional
);

Returns
polygon layer

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

Chapter 2: Runset Functions: A - I


coloring_links() 2-163
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

line_end
Optional. Specifies additional node edges that are added when the rule_type option for
the color_spacing_rules argument is LINE_END_TO_SIDE or
LINE_END_TO_LINE_END. Line ends are defined with the line_end_length and
adjacent_length argument pair.

color_spacing_rules
Optional. Specifies the rule type and the spacing values for the output polygon layer.

❍ rule_type. Required. Specifies how the distance is measured. See the Examples
section for more information.
■ SIDE_TO_SIDE

■ LINE_END_TO_SIDE

■ LINE_END_TO_LINE_END

■ CORNER_TO_CORNER (The extension option must be RADIAL.)

■ NOTCH

Chapter 2: Runset Functions: A - I


coloring_links() 2-164
IC Validator Reference Manual Version N-2017.12-SP2

■ CENTER_TO_CENTER

■ USER_DEFINED

❍ distance. Required. Specifies the check distance. See “Constraints” on page A-4 for
more information.
❍ extension_distance. Optional. Specifies the check region extension distance when
the extension option is RECTANGLE. The value must be nonnegative. The default
is 0.0.
❍ projection_length. Optional. Specifies the projection length. See “Constraints” on
page A-4 for more information. The default is >0.0.
❍ extension. Optional. Specifies the extension of the check region beyond the
endpoints of the edge being checked. The default is NONE.
■ EDGE. Forms the check region by extending the edges using the
extension_distance argument value, and creating right-angle boundaries at the
extended endpoints based on the distance constraint. The right-angle
boundaries of the check region are exclusive. The far boundary of the check
region is inclusive or exclusive depending on the constraint of the distance
value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
■ NONE. Does not extend the check region. It is formed with right-angle boundaries
at the edge endpoints. The right-angle boundaries of the check region are
exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
■ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive
or exclusive depending on the constraint of the distance value.
■ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
■ SQUARE. Extends the check region past the endpoints of the edges using the
distance argument value with a square. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ look_thru. Optional. Specifies the edges that the spacing check looks through when
measuring. The default is NONE.
■ NONE. Does not look through any edges, including edge endpoints.

Chapter 2: Runset Functions: A - I


coloring_links() 2-165
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not
look through any edges that share endpoint X with edge A. This setting avoids
false violations that might be reported when the look_thru argument is ALL.
■ ALL. Looks through all edges.

❍ look_thru_count. Optional. Specifies the number of edges that must be looked


through for a measurement to occur. Edges coincident to the edge being measured
are not included in the count. The value must be nonnegative. See “Constraints” on
page A-4 for more information. The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the
look_thru argument is ALL.

line_end_length
Optional. Specifies the length for an edge to be selected. The default is 0.0.

adjacent_length
Optional. Specifies the length that must be satisfied by the edges adjacent to a
90-degree angle. The default is 0.001.

line_end_expand
Optional. Specifies the expansion of the line-end edges. The line-end edges are
expanded before the side edges. The default is 0.0.

side_expand
Optional. Specifies the expansion of the side edges. The side edges are expanded after
the line-end edges. The default is 0.0.

design_grid
Optional. Specifies the design grid. The link polygons on the returned polygon layer are
on this grid, not on the input library resolution. The default is 0.001.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Chapter 2: Runset Functions: A - I


coloring_links() 2-166
IC Validator Reference Manual Version N-2017.12-SP2

Examples
The following are examples of using the color_spacing_rules argument:
color_spacing_rules = ({SIDE_TO_SIDE, 1.0, 0, 0, NONE});
color_spacing_rules = ({LINE_END_TO_SIDE, 2.0, 0, 0, NONE});
color_spacing_rules = ({LINE_END_TO_LINE_END, 4.0, 0, 0, NONE});
color_spacing_rules = ({CORNER_TO_CORNER, 3.0, 0, 0, RADIAL});
color_spacing_rules = ({NOTCH, 2.0, 0, 0, NONE});

The following is an example of the coloring_links function. The empty_layer_edge()


function returns an empty edge layer.
link_polygons = coloring_links(inLayer, empty_layer_edge(),
color_spacing_rule_list, 0.5, 1);

SIDE_TO_SIDE Rule Type


The following example, shown in Figure 2-42, uses the SIDE_TO_SIDE rule with the
extension option set to NONE.
SIDE_SPACING : list of color_spacing_rule_s = {};
SIDE_SPACING.push_back({SIDE_TO_SIDE, 0.080, 0, 0, NONE});
SIDE_link = coloring_links(
nodes = nodesA,
color_spacing_rules = SIDE_SPACING,
line_end_length = 0.090
);

Figure 2-42 rule_type = SIDE_TO_SIDE With extension = NONE Example

nodesA

SIDE_link

Chapter 2: Runset Functions: A - I


coloring_links() 2-167
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The following example, shown in Figure 2-43, is a more complex example.


SIDE_link2 = coloring_links(
nodes = nodesC,
color_spacing_rules = SIDE_SPACING,
line_end_length = 0.032
);

Figure 2-43 More Complex Example of rule_type = SIDE_TO_SIDE With extension = NONE

nodesC

SIDE_link2

The following example, shown in Figure 2-44, uses the SIDE_TO_SIDE rule with the
extension option set to RADIAL.
SIDE_SPACING_RADIAL : list of color_spacing_rule_s = {};
SIDE_SPACING_RADIAL.push_back({SIDE_TO_SIDE, 0.080, 0, 0, RADIAL});

SIDE_link3 = coloring_links(
nodes = nodesC,
color_spacing_rules = SIDE_SPACING_RADIAL,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-168
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-44 rule_type = SIDE_TO_SIDE With extension = RADIAL Example

nodesC

SIDE_link3

LINE_END_TO_LINE_END Rule Type


The following example, shown in Figure 2-45, uses the LINE_END_TO_LINE_END rule with
the extension option set to NONE.
LINE_END_SPACING : list of color_spacing_rule_s = {};
LINE_END_SPACING.push_back({LINE_END_TO_LINE_END, 0.080, 0, 0, NONE});

LINE_END_link = coloring_links(
nodes = nodesA,
color_spacing_rules = LINE_END_SPACING,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-169
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-45 rule_type = LINE_END_TO_LINE_END With extension = NONE Example

nodesA

LINE_END_link

The following example, shown in Figure 2-46, is a more complex example.


LINE_END_link2 = coloring_links(
nodes = nodesC,
color_spacing_rules = LINE_END_SPACING,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-170
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-46 More Complex Example of rule_type = LINE_END_TO_LINE_END With extension


= NONE

nodesC

LINE_END_link2

The following example, shown in Figure 2-47, uses the LINE_END_TO_LINE_END rule with
the extension option set to RADIAL.
LINE_END_SPACING_RADIAL : list of color_spacing_rule_s = {};
LINE_END_SPACING_RADIAL.push_back({LINE_END_TO_LINE_END, 0.080,
0, 0, RADIAL});
LINE_END_link3 = coloring_links(
nodes = nodesC,
color_spacing_rules = LINE_END_SPACING_RADIAL,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-171
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-47 rule_type = LINE_END_TO_LINE_END With extension = RADIAL Example

nodesC

LINE_END_link3

LINE_END_TO_SIDE Rule Type


The following example, shown in Figure 2-48, uses the LINE_END_TO_SIDE rule with the
extension option set to NONE.
LINE_END_SIDE_SPACING : list of color_spacing_rule_s = {};
LINE_END_SIDE_SPACING.push_back({LINE_END_TO_SIDE, 0.080, 0, 0, NONE});

LINE_END_SIDE_link = coloring_links(
nodes = nodesA,
color_spacing_rules = LINE_END_SIDE_SPACING,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-172
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-48 rule_type = LINE_END_TO_SIDE With extension = NONE Example

nodesA

LINE_END_SIDE_link

CORNER_TO_CORNER Rule Type


The following example, shown in Figure 2-49, uses the CORNER_TO_CORNER rule. The
extension option must be RADIAL for this rule type.
CORNER_SPACING : list of color_spacing_rule_s = {};
CORNER_SPACING.push_back({CORNER_TO_CORNER, 0.080, 0, 0, RADIAL});
CORNER_link = coloring_links(
nodes = nodesA,
color_spacing_rules = CORNER_SPACING,
line_end_length = 0.032,
adjacent_length = 0.01
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-173
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-49 rule_type = CORNER_TO_CORNER Example

nodesA

CORNER_link

The following example, shown in Figure 2-50, is a more complex example.


CORNER_link2 = coloring_links(
nodes = nodesC,
color_spacing_rules = CORNER_SPACING,
line_end_length = 0.032,
adjacent_length = 0.01
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-174
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-50 More Complex Example of rule_type = CORNER_TO_CORNER

nodesC

CORNER_lik2

CENTER_TO_CENTER Rule Type


The following example, shown in Figure 2-51, uses the CENTER_TO_CENTER rule with the
extension option set to RADIAL.
CENTER_SPACING : list of color_spacing_rule_s = {};
CENTER_SPACING.push_back({CENTER_TO_CENTER, 0.120, 0, 0, RADIAL});

CENTER_link = coloring_links(
nodes = nodesB,
color_spacing_rules = CENTER_SPACING,
line_end_length = 0.032,
adjacent_length = 0.01
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-175
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-51 rule_type = CENTER_TO_CENTER With extension = RADIAL Example

nodesB

CENTER_link

NOTCH Rule Type


The following example, shown in Figure 2-52, uses the NOTCH rule with the extension
option set to NONE.
NOTCH_SPACING : list of color_spacing_rule_s = {};
NOTCH_SPACING.push_back({NOTCH, 0.080, 0, 0, NONE});
NOTCH_link2 = coloring_links(
nodes = nodesC,
color_spacing_rules = NOTCH_SPACING,
line_end_length = 0.032
);

Chapter 2: Runset Functions: A - I


coloring_links() 2-176
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-52 rule_type = NOTCH With extension = NONE Example

nodesC

NOTCH_link2

See Also
coloring_links_edge()
three_color()
two_color()

Chapter 2: Runset Functions: A - I


coloring_links() 2-177
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

coloring_links_edge()
The coloring_links_edge() function generates link edges that are used in multiple
patterning flows. Link edges are connections between the node polygons that complete the
graph description of the coloring problem. Link edges are generated by measuring
outside-to-outside spacing on the node edges defined by the color-spacing rules.
The coloring_links_edge() function returns an edge layer that can be used as input to
the two_color() and three_color() functions.
Note:
Set #define MPT_API in the runset when using the coloring_links_edge() function.

Syntax
coloring_links_edge(
nodes = polygon_layer,
line_end = edge_layer, //optional
color_spacing_rules = {{rule_type = SIDE_TO_SIDE | LINE_END_TO_SIDE |
LINE_END_TO_LINE_END | CORNER_TO_CORNER |
NOTCH | CENTER_TO_CENTER,
distance = doubleconstraint,
extension_distance= double,
projection_length = doubleconstraint,
extension = EDGE | NONE | RADIAL |
RECTANGLE | SQUARE,
look_thru = NONE | NOT_ADJACENT | ALL,
look_thru_count = integerconstraint},
...}, //optional
line_end_length = double, //optional
adjacent_length = double, //optional
line_end_expand = double, //optional
side_expand = double, //optional
design_grid = double //optional
);

Returns
edge layer

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

line_end
Optional. Specifies additional node edges that are added when the rule_type option for
the color_spacing_rules argument is LINE_END_TO_SIDE or

Chapter 2: Runset Functions: A - I


coloring_links_edge() 2-178
IC Validator Reference Manual Version N-2017.12-SP2

LINE_END_TO_LINE_END. Line ends are defined with the line_end_length and


adjacent_length argument pair.

color_spacing_rules
Optional. Specifies the rule type and the spacing values for the output polygon layer.
❍ rule_type. Required. Specifies how the distance is measured.

■ SIDE_TO_SIDE

■ LINE_END_TO_SIDE

■ LINE_END_TO_LINE_END

■ CORNER_TO_CORNER (The extension option must be RADIAL.)

■ NOTCH

■ CENTER_TO_CENTER

❍ distance. Required. Specifies the check distance. See “Constraints” on page A-4 for
more information.
❍ extension_distance. Optional. Specifies the check region extension distance when
the extension option is RECTANGLE. The value must be nonnegative. The default
is 0.0.
❍ projection_length. Optional. Specifies the projection length. See “Constraints” on
page A-4 for more information. The default is >0.0.
❍ extension. Optional. Specifies the extension of the check region beyond the
endpoints of the edge being checked. The default is NONE.
■ EDGE. Forms the check region by extending the edges using the
extension_distance argument value, and creating right-angle boundaries at the
extended endpoints based on the distance constraint. The right-angle
boundaries of the check region are exclusive. The far boundary of the check
region is inclusive or exclusive depending on the constraint of the distance
value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
■ NONE. Does not extend the check region. It is formed with right-angle boundaries
at the edge endpoints. The right-angle boundaries of the check region are
exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


coloring_links_edge() 2-179
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive
or exclusive depending on the constraint of the distance value.
■ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
■ SQUARE. Extends the check region past the endpoints of the edges using the
distance argument value with a square. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ look_thru. Optional. Specifies the edges that the spacing check looks through when
measuring. The default is NONE.
■ NONE. Does not look through any edges, including edge endpoints.

■ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not
look through any edges that share endpoint X with edge A. This setting avoids
false violations that might be reported when the look_thru argument is ALL.
■ ALL. Looks through all edges.

❍ look_thru_count. Optional. Specifies the number of edges that must be looked


through for a measurement to occur. Edges coincident to the edge being measured
are not included in the count. The value must be nonnegative. See “Constraints” on
page A-4 for more information. The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the
look_thru argument is ALL.

line_end_length
Optional. Specifies the length for an edge to be selected. The default is 0.0.

adjacent_length
Optional. Specifies the length that must be satisfied by the edges adjacent to a
90-degree angle. The default is 0.001.

line_end_expand
Optional. Specifies the expansion of the line-end edges. The line-end edges are
expanded before the side edges. The default is 0.0.

side_expand
Optional. Specifies the expansion of the side edges. The side edges are expanded after
the line-end edges. The default is 0.0.

Chapter 2: Runset Functions: A - I


coloring_links_edge() 2-180
IC Validator Reference Manual Version N-2017.12-SP2

design_grid
Optional. Specifies the design grid. The link edge on the returned edge layer are on this
grid, not on the input library resolution. The default is 0.001.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

See Also
three_color()
two_color()

Chapter 2: Runset Functions: A - I


coloring_links_edge() 2-181
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

compare()
The compare() function starts the netlist comparison. The function returns a handle to be
used by the icvread() and write_xref_spice() functions.
Call the check_property() function, which makes the basic declarations as to which
properties are compared, before calling the compare() function in the runset.
Limitation:
The compare() function cannot be called more than one time in a runset.

Syntax
compare(
state =
compare_state,
schematic =
schematic_netlist_file_handle,
layout =
layout_netlist_file_handle,
user_functions_file =
"string", //optional
case_sensitive =
{DEVICE_NAME, NET_PORT, PROPERTY},
//optional
push_down_pins = true | false, //optional
push_down_devices = true | false, //optional
memory_array_compare = true | false, //optional
remove_dangling_net = LAYOUT_UNTEXTED | ALL | NONE, //optional
delete_schematic_cells = {"string", ...}, //optional
delete_layout_cells = {"string", ...}, //optional
print_messages = {message = true | false,
...}, //optional
print_devices_per_net_max = integer, //optional
print_detail = {property = NONE | ONLY_COORDINATES |
COORDINATES_AND_DEVICE_TYPES | ALL,
xref_pin = NONE | UNMATCHED_PINS | ALL,
device_pin = NONE | ALL}, //optional
write_equiv_netlists = FAILED | ALL | NONE, //optional
ignore_equiv_file = "string", //optional
black_box_file = "string", //optional
schematic_top_cell = "string", //optional
layout_top_cell = "string", //optional
action_on_error = EXPLODE | NO_EXPLODE, //optional
resolve_duplicate_equivs = true | false, //optional
check_property_for_failed_equiv = true | false, //optional
multiply_width = true | false, //optional
ignore_equivs_with_devices_leveled_out = true | false, //optional
explode_imbalanced_equivs = true | false, //optional
top_cell_ports_static = NAMED_MATCHED | ALL, //optional
error_limit_per_check = integer, //optional
texted_zero_connection_ports = IGNORE |
KEEP_SCHEMATIC_AND_NAME_MATCHED |
KEEP_ALL, //optional
black_box_static_ports = NONE | TEXTED, //optional
define_empty_cell_as_device = NONE | BOTH //optional
);

Chapter 2: Runset Functions: A - I


compare() 2-182
IC Validator Reference Manual Version N-2017.12-SP2

Returns
xref_database_handle or error result

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

schematic
Required. Specifies the schematic netlist database handle. The netlist must be defined
by the schematic() function.

layout
Required. Specifies the layout netlist database handle. The netlist must be defined by the
netlist() function.

user_functions_file
Optional. Specifies the file that contains the remote functions. See “Compare Utility
Functions” in Chapter 4 for more information about the utility functions you can use to
define a remote function.
The structure of the user function file is:
#include <icv_compare.rh>

function_name1 : entrypoint function (void) returning void {


/* PXL utility functions */
/* to build functionality */
}

function_name2 : entrypoint function (void) returning void {


. . .
}
. . .

Note:
The entry point qualifier designates the remote functions. All functions in the user
functions file that are directly referenced in the main runset file must be designated as
remote functions.

case_sensitive
Optional. Lists the case-sensitive settings. The default is {DEVICE_NAME, NET_PORT,
PROPERTY}.

❍ DEVICE_NAME. Specifies that device names comparisons are case-sensitive.

Chapter 2: Runset Functions: A - I


compare() 2-183
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NET_PORT. Specifies that comparisons of all net names and port names are
case-sensitive, except for port names on primitive devices.
Note:
Port matching considers geometry first. The case-sensitive setting affects only
those cases where ports are symmetrical.
❍ PROPERTY. Specifies that string property comparisons are case-sensitive.

push_down_pins
Optional. Specifies if hierarchically connected pins are pushed down. The default is
true.

❍ true. Specifies that hierarchically connected pins are pushed down.

❍ false. Specifies that hierarchically connected pins are not pushed down.
Power and ground nets are not pushed down when they are shorted. Use the
layout_ground and layout_power arguments of the text_options() function to
specify the power and ground nets.
For a schematic/layout equivalence cell pair, hierarchically connected pins are not
pushed down for the pair when
❍ The pair participates in a multiple equivalence point (that is, multiple schematic cells
paired with one layout cell or vice versa), and
❍ The schematic/layout pair has the same port count and same port names.

push_down_devices
Optional. Specifies if devices are pushed down into the hierarchy. The default is false.
❍ true. Specifies that devices are pushed down into the hierarchy.

❍ false. Specifies that devices are not pushed down into the hierarchy.

memory_array_compare
Optional. Specifies if arrayed memories are compared faster and with less memory. The
default is true.
❍ true. Specifies that arrayed memories are compared faster and with less memory.

❍ false. Specifies that comparison of arrayed memories is not optimized.


Note:
The StarRC tool cannot be run using an LVS database that was generated using this
argument set to true.

Chapter 2: Runset Functions: A - I


compare() 2-184
IC Validator Reference Manual Version N-2017.12-SP2

remove_dangling_net
Optional. Specifies if the input netlists are preprocessed to find all cases where a port net
in a cell never connects to any extracted device throughout the hierarchy. The net
dangles outside the cell from which it originates and does not need to be a port net in the
cell. The IC Validator tool removes all such dangling nets throughout the hierarchy and
changes the net in the originating cell from a port net to an internal net. The default is
LAYOUT_UNTEXTED.

❍ LAYOUT_UNTEXTED. Removes only untexted dangling nets in the layout.

❍ ALL. Removes all dangling nets within the schematic and layout.

❍ NONE. Does not remove dangling nets.

delete_schematic_cells
Optional. Specifies the schematic cells to delete from the netlist. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.

delete_layout_cells
Optional. Specifies the layout cells to delete from the netlist. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.

print_messages
Optional. Specifies the messages to output. Table 2-22 lists the messages and the
default settings. Except as noted, the comparison messages are written to the
run_details/compare/sum.cell.cell file.
Note:
A maximum of 1000 error messages are written for each diagnostic type.
Table 2-22 Netlist Comparison Messages

Message Definition Default

equated_nets_list Lists in alphabetical order the net names used as initial true
match reference points as specified by the equate_nets
argument of the equiv_options() function.

equivalent_cell_list Lists all matched cells at this level or in the entire run. true

invalid_user_equivs Lists all invalid equivalence points and gives the reason why true
each one was considered invalid. The messages are written
to cell.LVS_ERRORS and run_details/cell_lvs.log files.

Chapter 2: Runset Functions: A - I


compare() 2-185
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-22 Netlist Comparison Messages (Continued)

Message Definition Default

matched_devices_unmatc Lists matched devices connected to unmatched schematic true


hed_nets or layout nets. This side-by-side device listing facilitates the
debugging of unmatched cells.

merged_nets_referenced Many messages refer to nets that do not exist in the original true
netlist description of a cell. These nets are created as a
result of merging operations. Any of these nets that are
referenced earlier in the equivalence summary file are listed
in terms of their component members. These listings can be
used to determine which physical nets have been used to
formulate a merged or composite net.

netlist_stats Lists the individual and total counts for devices and nets in true
a netlist. The number of devices and nets created or
removed by merging and filtering is also shown.

nets_promoted_to_pwr_g The push_down_pins argument can push power and true


nd ground information down the hierarchy. If a net in a
lower-level cell hooks up to power or ground across all
instances of that cell, the net is treated as power or ground
in the cell. This treatment of the net helps with merging and
filtering in the cell.

non_equivalent_cell_li Lists all unmatched cells at this level or in the entire run. true
st

port_xref_table Lists all ports in a matched cell. Any ports generated in true
either the schematic or layout are marked as such.

post_compare_stats Summarizes the number of matched and unmatched true


devices and nets for the schematic and layout cells.

referenced_merged_devi Many messages refer to device instances that do not exist true
ces in the original netlist description of a cell. These devices are
created as a result of merging operations. Any of these
devices that are referenced earlier in the equivalence
summary file are listed in terms of their component
members. These listings are used to determine which
physical devices have been used to formulate a merged or
composite device.

Chapter 2: Runset Functions: A - I


compare() 2-186
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-22 Netlist Comparison Messages (Continued)

Message Definition Default

swapped_pin_analysis Reports names of pins that are swapped between the true
schematic and layout netlists for each instance. This
information is used to resolve unmatched nets that occur
due to swapped pins on instances connected to those nets.

symmetrical_nodes_foun For circuits with symmetric circuitry, lists the percentage of true
d devices and nets remaining after all unique matches are
found. Subsequent matches require one or more assumed
matches to allow further matching progress.

uncompared_cell_list Lists all cells that were not compared because of prior true
errors at this level or elsewhere in the run.

all_merged_device_list Writes out the members of the merged devices to the false
equivalence netlist files, sch.MODULE and lay.MODULE,
as the comment of the netlists. In a SPICE flow (that is,
when the lvs_netlist_flow argument of the
run_options() function is SPICE), the information is in
separate file rather than of inside the equivalence netlist.

instance_xref_table Lists a complete cross-reference of the matched devices. false


This message is written to the run_details/compare/
xref.cell.cell file.

filtered_device_list Lists all filtered devices in both the schematic and layout false
netlists.

net_xref_table Lists a complete cross-reference of the matched nets, false


except for ports. This message is written to the run_details/
compare/xref.cell.cell file.

parallel_device_list Lists all parallel merged devices in both the schematic and false
layout netlists.

series_device_list Lists all series merged devices in both the schematic and false
layout netlists.

pre_merge_stats Writes out the premerge netlist statistics table to the false
summary file.

black_box_signoff Writes a warning message to the cell.LVS_ERRORS file if true


the run is unsuitable for signoff due to errors in the
black-box cells.

Chapter 2: Runset Functions: A - I


compare() 2-187
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

print_devices_per_net_max
Optional. Limits the information output for unmatched nets. The default is 10.

print_detail
Optional. Specifies the level of detail written to the LVS_ERRORS file.
❍ property. The default is COORDINATES_AND_DEVICE_TYPES.

■ NONE

■ ONLY_COORDINATES

■ COORDINATES_AND_DEVICE_TYPES

■ ALL

❍ xref_pin. The default is NONE.

■ NONE

■ UNMATCHED_PINS

■ ALL

❍ device_pin. The default is ALL.

■ NONE

■ ALL

write_equiv_netlists
Optional. Specifies when equivalence netlists are output. The default is FAILED.
❍ FAILED. Writes out only equivalence netlists that have failed due to a device or a net
not matching. Equivalence netlists are not output for other error types, such as
property errors or text mismatch errors.
❍ ALL. Writes out netlists for all equivalences.

❍ NONE. Does not output netlists.

ignore_equiv_file
Optional. Specifies the file where equiv_options() function call entries, in which the
ignore option is true for unmatched equiv_cells pairs, is generated. This
equiv_options() function call can be used by subsequent compare runs to ignore
equiv_cells pairs that do not match. Not rechecking these equiv_cells pairs reduces
runtime. This functionality is useful in cases where the top cell has compared
successfully, and unmatched intermediate equiv_cells pairs can be ignored. If the file

Chapter 2: Runset Functions: A - I


compare() 2-188
IC Validator Reference Manual Version N-2017.12-SP2

already exists, the content of the file is overwritten. By default, the IC Validator tool does
not create a file.

black_box_file
Optional. Specifies the equivalence file where the generated
lvs_black_box_options() function calls are saved. These black-box entries are
created for all matched cells and can be used by subsequent compare runs to avoid
recomparing those cells. By default, the IC Validator tool does not create a file.

schematic_top_cell
Optional. Specifies the top level of the schematic for comparison purposes. The default
schematic top-level cell is derived from the pairing of a schematic cell name to the layout
top-level cell in the equiv_cells argument of the equiv_options() function. If no
equiv_cells pair containing the layout top-level cell name is explicitly provided in the
runset, the default schematic top-level cell name is equivalent to the layout top-level cell
name.
Note:
The -stc command-line option overrides this name. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.

layout_top_cell
Optional. Specifies the top level of the layout for comparison purposes. The default
top-level cell is specified by the cell argument of the library() function.
Note:
The -c command-line option overrides this name. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.

action_on_error
Optional. Specifies the action taken on failed equivalence cell pairs. The default is
NO_EXPLODE.
Note:
The default behavior changes for cases when the action_on_error argument is
NO_EXPLODE. In certain instances, user-intended equivalence cell pairings are still
exploded when: both schematic and layout cells are missing, both are empty, or one
is empty and one is missing.
❍ EXPLODE. Explodes the equivalence cell pairings that have errors upward into their
parent equivalence cells, and then the netlist comparison continues. However, if the
no_explode_condition argument of the match() function is
PROPERTY_ERRORS_ONLY, PORT_TOPOLOGY_MATCHED, or PORT_TEXT_MATCHED, then
equivalence cell pairs consistent with the no_explode_condition setting of the

Chapter 2: Runset Functions: A - I


compare() 2-189
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

match()function are not exploded. Instead, instances of these failed equivalence


cells are compared in the parent equivalence cell according to the
no_explode_condition setting of the match() function.

❍ NO_EXPLODE. Preserves rather than explodes user-intended equivalence cell pairings


that have errors, and it compares instances of failed user-intended child equivalence
cells inside the parent equivalence cell. The setting of the no_explode_condition
argument of the match() function is ignored.
Unlike the EXPLODE option, the NO_EXPLODE option does not explode failed child
equivalence cells into the parent based on the assumption that such errors can be
resolved higher in the hierarchy. If the equivalence pair produces a failed result, you
must investigate the equivalence errors for that specific equivalence pair.
Failed equivalence points are handled as follows when the action_on_error
argument is NO_EXPLODE:
■ If a user-intended equivalence point fails the compare operation, that equivalence
point is not exploded into the parent. Instead, the error is reported for the failed
equivalence point using the IC Validator standard equivalence point outputs.
When the parent equivalence cell pairing is compared later, it generates its own
pass or fail status that is independent of the child cell status.
- Child cell non-port errors. If the child cell suffers an error that does not affect
the matching of cell ports, the IC Validator tool compares instances of the
failed child equivalence pair inside the parent equivalence pair based on port
matching information derived during the comparison of the child equivalence
cell pair. Examples of non-port errors include device property errors and
topology error related to internal nets. These errors do not affect the matching
of ports for the paired child cells.
- Child cell port topology errors. If the child cell suffers a topology error that
affects the cell ports, the IC Validator tool compares instances of the failed
child equivalence pair inside the parent equivalence pair based on port
matching information derived during the comparison of the child equivalence
cell. For ports that do not have any matching information, the IC Validator tool
matches like-named ports between the schematic and layout netlists. Ports for
which neither matching information nor like-named port pairings exist are
disregarded during the compare operation.
■ System-generated equivalences that fail the compare operation are treated by the
IC Validator tool as if the equivalence cell pairing had never been made.
Therefore, you do not see the failure of any equivalence point that you did not
explicitly intend to exist. As a result,
- Failed system-generated equivalence cell pairs are not reported in the
cell.LVS_ERRORS file nor in the VUE LVS Errors tab.

Chapter 2: Runset Functions: A - I


compare() 2-190
IC Validator Reference Manual Version N-2017.12-SP2

- The equivalence point is exploded into the parent.


- No subdirectory for the equivalence point exists in the compare directory.
See the lvs_options() function for a discussion of user-intended and
system-generated equivalence cell pairings.

resolve_duplicate_equivs
Optional. Specifies if the IC Validator tool attempts to detect duplicate equivalence
points. The default is false.
❍ true. Attempts to detect duplicate equivalence points and resolve them
automatically.
❍ false. Does not attempt to detect duplicate equivalence points and resolve them
automatically.

check_property_for_failed_equiv
Optional. Specifies if the properties of failed equivalences are checked. The default is
false.

❍ true. Checks the properties of failed equivalences.

❍ false. Does not check the properties of failed equivalences.

multiply_width
Optional. Specifies if the width is multiplied. The default is true.
❍ true. Multiplies the width property by the multiplication factor property M for all
standard, non-generic device types.
❍ false. Does not multiply the width.
Standard properties that are derived from the width property are also affected, including
❍ RESISTOR: r
❍ CAPACITOR: c
❍ NP/PN: area, pj
❍ NPN/PNP: area

ignore_equivs_with_devices_leveled_out
Optional. Controls whether user-intended equivalence cells with leveled devices are
ignored for compare. If the cells are ignored, then no compare is performed on these
cells, and they are exploded into the parent equivalences. The default is false.

Chapter 2: Runset Functions: A - I


compare() 2-191
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ When the ignore_equivs_with_devices_leveled_out argument is true and the


action_on_error argument is either EXPLODE or NO_EXPLODE:

■ ICV compare ignores the equivalence cells with leveled devices.


■ No compare is performed on this equivalence cells with leveled devices, therefore
no equivalence subdirectory in the compare directory nor compare summary file
exists.
■ A message for this ignored equivalence is written in the LVS_ERROR file, and the
equivalence is classified as an invalid equivalence with the reason: Devices
leveled out of layout cell during device extraction.
❍ When the ignore_equivs_with_devices_leveled_out argument is false:
■ Compare preserves the equivalence cells with leveled devices when the
action_on_error argument is either EXPLODE or NO_EXPLODE.

■ If the compare result is FAIL on a device-leveled equivalence cell,


- The cell is exploded and compared upward when the action_on_error
argument is EXPLODE.
- The cell is not exploded when the action_on_error argument is
NO_EXPLODE.

■ An invalid equivalence message for the device-leveled equivalence cell is not


written in the LVS-related output files when the action_on_error argument is
either EXPLODE or NO_EXPLODE.

explode_imbalanced_equivs
Optional. Specifies if all imbalanced equivalences are automatically exploded. An
imbalanced equivalence is one that has an unequal number of placements between the
schematic and layout. The default is true.
❍ true. LVS checking explodes all imbalanced equivalences.

❍ false. LVS checking does not explode the imbalanced equivalences, but compares
the missing cell instances as devices.

top_cell_ports_static
Optional. Specifies that top-cell port nets are static; that is, the layout and schematic port
nets cannot be merged. The default is NAME_MATCHED.
❍ NAME_MATCHED. Specifies that only top-cell port nets with matching names are static.

❍ ALL. Specifies that all top-cell port nets are static.

Chapter 2: Runset Functions: A - I


compare() 2-192
IC Validator Reference Manual Version N-2017.12-SP2

error_limit_per_check
Optional. Specifies the maximum number of times that a condition is reported in the Error
Information and Warning Information sections of the sum.cell.cell files or in the
cell.LVS_ERRORS file. The default is 1000.
Note:
Select the conditions to report using the match_condition argument of the match()
function.

texted_zero_connection_ports
Optional. Determines how the compare() function treats texted zero connection ports.
The default is IGNORE.
A texted zero connection port is a port on a net in a cell that has text but no connections
to any devices after netlist preprocessing. Examples of netlist preprocessing functions
include filter(), short_equivalent_nodes(), merge_series(), and so forth. Ports
in the schematic netlist are always treated as texted ports.
❍ IGNORE. Specifies that texted zero connection ports are ignored, which means the pin
connections to these ports are not checked.
❍ KEEP_SCHEMATIC_AND_NAME_MATCHED. Specifies that all schematic texted zero
connection ports and layout texted zero connection ports that have the same name
port in the schematic netlist are kept for comparison. Layout zero connection ports
that do not have the same name port in the schematic netlist are ignored.
❍ KEEP_ALL. Specifies that all texted zero connection ports are kept so that the pin
connections to these ports can be checked. Unmatched texted zero connection ports
cause the LVS comparison result to fail. Only texted zero connection ports are
matched; untexted zero connection ports are ignored.

black_box_static_ports
Optional. Specifies that black-box cell port nets are static, that is, the layout and
schematic port nets cannot be merged. The default is NONE.
❍ NONE. Specifies that no black-box cell port net is static.

❍ TEXTED. Specifies that only black-box cell texted port nets are static.

define_empty_cell_as_device
Optional. Specifies whether empty cells (X-card instances) are ignored or recognized as
GENDEV primitive devices. For an empty cell to be treated successfully as a device, the
IC Validator tool must be able to equate it automatically between the schematic and
layout netlists. The default is NONE.
❍ NONE. Ignores empty cells.

Chapter 2: Runset Functions: A - I


compare() 2-193
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ BOTH. Recognizes empty cells as GENDEV primitive devices in both the schematic
and layout netlists provided that all of the following required conditions are met:
■ The empty cell name must not be in a black-box, equivalent, or delete-cell
statement
■ The empty cell name must not be declared in a device function, such as nmos(),
or a map_*() function
■ The empty cell must be able to be equated automatically between the schematic
and layout netlists
If pins exist, they must have the same name; no multiple equates to other device
types are allowed.
When all of these conditions are met, empty cells are automatically mapped to each
other if they exist in both the schematic and layout netlists. Empty cells that do not
exist in both netlists are reported as unmatched devices.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-CompareEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_LVS.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
check_property()
equiv_options()
filter()
init_compare_matrix()
lvs_options()
match()
merge_parallel()
merge_series()
recalculate_property()
search_include_path()

Chapter 2: Runset Functions: A - I


compare() 2-194
IC Validator Reference Manual Version N-2017.12-SP2

connect()
The connect() function creates a connect database that defines electrical connectivity for
the specified layers. For each entry within the connect_items argument, connectivity is
independently established from each layer in the layers list to the layer specified with the
by_layer option. The resulting connect database is untexted.

Syntax
connect(
connect_items = {{layers = {polygon_layer, ...},
by_layer = polygon_layer,
include_touch = NONE | EDGE,
by_layer_connection = ALL | SHIELDED_OVERLAP},
...}
);

Returns
connect database

Arguments
connect_items
Required. Lists the connection specifications.
❍ layers. Required. Specifies a list of the polygon layers to connect.

❍ by_layer. Optional. Specifies the polygon layer by which the layers specified in the
layers argument are connected. By default, these layers connect directly with each
other; they are not connected through a by layer.
In the following example, the layers are all connected to each other without a by layer.
Figure 2-53 illustrates this example.
connect(connect_items = {{{layer1, layer2, layer3, layer4}}} );

Chapter 2: Runset Functions: A - I


connect() 2-195
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-53 Layers Connected Without a By Layer

❍ include_touch. Optional. Specifies whether polygons with only an outside touch


interaction form an electrical connection. The default is EDGE.
■ NONE. Specifies that outside touch does not form an electrical connection.

■ EDGE. Specifies that outside touch forms an electrical connection.

❍ by_layer_connection. Optional. Specifies whether polygons must share an overlap


touch interaction in a common area with the by layer to form an electrical connection.
The default is ALL.
■ ALL. Specifies that a common overlap touch between all three layers is not
required to form an electrical connection and that shielding is not taken into
account. All the layers specified in the layers argument connect to the by layer.
■ SHIELDED_OVERLAP. Specifies that a common overlap touch between all three
layers is required to form an electrical connection and that shielding is taken into
account. Both the first layer specified in the layers argument and the by layer
must be present to form the three-layer connection.
In the following example, a by layer connects layer1 to layer2, and layer1 is not
connected to layer3 or layer4 because they are shielded by layer2. Figure 2-54
illustrates this example.
connect(connect_items = {{{layer1, layer2, layer3, layer4},
by_layer = by_layer, include_touch = NONE,
by_layer_connection = SHIELDED_OVERLAP }} );

Alternatively, if by_layer_connection = ALL, then layer1, layer2, layer3, and


layer4 are connected to the by layer.

Chapter 2: Runset Functions: A - I


connect() 2-196
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-54 Layers Shielded by Overlaps

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
create_ports()
incremental_connect()
stamp()
text_net()

Chapter 2: Runset Functions: A - I


connect() 2-197
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

contains() and not_contains()


The contains() function selects polygons that are large enough to fully enclose (contain)
the specified rectangle. The complement of this function is the not_contains() function.

Syntax
contains(
layer1 = polygon_layer,
dimensions = {double, double},
rotate = NONE | FORTY_FIVE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_contains(
layer1 = polygon_layer,
dimensions = {double, double},
rotate = NONE | FORTY_FIVE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

dimensions
Required. Specifies the dimensions of the rectangle that must be contained.

rotate
Optional. Specifies whether the rectangle is checked for containment at different
orientations. The default is NONE.
❍ NONE. Does not rotate the rectangle.

❍ FORTY_FIVE. Checks the rectangle not rotated and rotated 45 degrees.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.

Chapter 2: Runset Functions: A - I


contains() and not_contains() 2-198
IC Validator Reference Manual Version N-2017.12-SP2

❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 2-55, the dimensions argument determines the size of the layerA polygons that
are selected.
out1 = contains(layerA, dimensions = {0.01, 0.045}, rotate = NONE);
out2 = contains(layerA, dimensions = {0.03, 0.045}, rotate = NONE);

Figure 2-55 Selecting Polygons of Specified Size Example

layerA

dimensions = dimensions = result


{0.01, 0.045} {0.03, 0.045}

Figure 2-56 shows the use of the rotate argument to change which polygons can be
selected.
out1 = contains(layerA, {0.01, 0.055}, rotate = NONE);
out2 = contains(layerA, {0.01, 0.055}, rotate = FORTY_FIVE);

Chapter 2: Runset Functions: A - I


contains() and not_contains() 2-199
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-56 Checking Rotated and Not Rotated Polygons Example

layerA

rotate = rotate = result


NONE FORTY_FIVE

See Also
rectangles() and not_rectangles()

Chapter 2: Runset Functions: A - I


contains() and not_contains() 2-200
IC Validator Reference Manual Version N-2017.12-SP2

copy()
The copy() function creates a copy of a polygon layer. The new layer has no ancestry and
no connectivity.
Use the copy() function to
• Remove ancestry and connectivity.
• Direct a layer to the error database.

Syntax
copy(
layer1 = polygon_layer,
name = "layer_label", //optional
ancestry = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is copied.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

ancestry
Optional. Specifies if ancestry information is propagated to the output. The default is
false.

❍ true. Propagates the ancestry information to the output. Therefore, the output has
polygon membership information.
❍ false. Does not propagate the ancestry information to the output. Therefore, the
output does not have polygon membership information.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


copy() 2-201
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-57 shows using the copy() function to create a copy of all polygons on the input
layer. All ancestry and connectivity is lost for the new polygon.
copy_of_metal = copy(metal);

Figure 2-57 copy() Function Example

metal1

copy_of_metal1

There are subtle, yet important differences, between the use of the copy() function and the
use of the = operator for layer variables. While the copy() function creates a new layer that
contains the geometric data of the original layer, the = operator simply copies the content of
one variable into another. For example, the following results in two distinct layers, metal and
copy_of_metal:
copy_of_metal = copy(metal);

However, the following results in two distinct variables, but there is still only one layer.
a = metal;

Furthermore, both of the following examples result in the layer “b” having the same
connectivity as layer “a”.
This example:
cb1=connect({{{a}, a}});
b = a;

And, this example:


b = a;
cb1=connect({{{a}, a}});

However, both of the following examples result in layer “b” being unconnected.

Chapter 2: Runset Functions: A - I


copy() 2-202
IC Validator Reference Manual Version N-2017.12-SP2

This example:
cb1=connect({{{a}, a}});
b = copy(a);

And, this example:


b = copy(a);
cb1=connect({{{a}, a}});

See Also
copy_edge()
copy_error()

Chapter 2: Runset Functions: A - I


copy() 2-203
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

copy_by_cells()
The copy_by_cells() function creates a layer by copying the specified layer from the
specified list of cells.
Important:
This is a methodology check function. See disclaimers 1 (Preserving Cells) and 2
(Hierarchy) in “Methodology Check Functions” on page 1-4.

Syntax
copy_by_cells(
layer1 = polygon_layer,
cells = {"string", ...},
depth = CELL_LEVEL | DESCENDANTS | ALL, //optional
name = "layer_label", //optional
keep_cells = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the layer to be copied from cells.

cells
Required. Specifies the cells from which the layer is copied. If the list is empty, an empty
layer is created. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information.
Note:
The "!" metacharacter takes precedence when depth is DESCENDANTS or ALL. For a
cell to be copied, its parent must not be excluded.

depth
Optional. Specifies the depth of the cell hierarchy included in the copy. The default is ALL.
❍ CELL_LEVEL. Includes only the geometric data in the cell; no descendants are
included unless they are also in the cells list.
❍ DESCENDANTS. Includes only data in the descendants of a cell, recursively. No
cell-level data is included unless the cell is a descendant of a cell in the cells list.
❍ ALL. Includes all data in the cell and below.

Chapter 2: Runset Functions: A - I


copy_by_cells() 2-204
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

keep_cells
Optional. Specifies the exploding of cells in the select_cells list. The default is true.
❍ true. Does not explode cells during hierarchy optimization.

❍ false. The selected cells are allowed to explode during hierarchy optimization. If a
selected cell does get exploded, the selected data (the cell’s extents in this case) are
placed in the parent cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
/* copy the gate layer from the PROG cell */
check_gate = copy_by_cells (gate, {"PROG"});

/* copy the via layer from all but the RAM cell */
t1 = copy_by_cells (via, {"*", "!RAM"})

See Also
assign() (select_cells argument)
copy()
copy_by_layout_equiv_cells()

Chapter 2: Runset Functions: A - I


copy_by_cells() 2-205
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

copy_by_layout_equiv_cells()
The copy_by_layout_equiv_cells() function creates a layer by copying the specified
layer from the layout equivalence cells that are either identified using the equiv_options()
function, or automatically generated by the generate_user_equivs argument of the
lvs_options() function.

The copy_by_layout_equiv_cells() function is identical to the combined steps of


creating a list of equivalence cells and using this list with copy_by_cells() function.

Syntax
copy_by_layout_equiv_cells(
layer1 = polygon_layer,
depth = CELL_LEVEL | DESCENDANTS | ALL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the layer to be copied from cells.

depth
Optional. Specifies the depth of the cell hierarchy included in the copy. The default is ALL.
❍ CELL_LEVEL. Includes only the geometric data in the cell; no descendants are
included unless they are also in the cells list.
❍ DESCENDANTS. Includes only data in the descendants of a cell, recursively. No
cell-level data is included unless the cell is a descendant of a cell in the cells list.
❍ ALL. Includes all data in the cell and below.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


copy_by_layout_equiv_cells() 2-206
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In this example, m1_eq layer contains shapes of the m1 layer from cells ADD4 and DGATE.
lvs_options(
generate_user_equivs = NONE
);
equiv_options(
equiv_cells = {
{schematic_cell = "add4", layout_cell = "ADD4"},
{"dgate", "DGATE"}
}
);
m1_eq = copy_by_layout_equiv_cells(m1, CELL_LEVEL);

The preceding block (including equivalence options) is equivalent to these blocks:


my_eq_list : list of string = { "ADD4", "DGATE" };
m1_eq = copy_by_cells(m1, my_eq_list, CELL_LEVEL);

as well as this block:


m1_eq = copy_by_cells(m1, {"ADD4", "DGATE"}, CELL_LEVEL);

See Also
assign() (select_cells argument)
copy()
copy_by_cells()
lvs_options()

Chapter 2: Runset Functions: A - I


copy_by_layout_equiv_cells() 2-207
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

copy_edge()
The copy_edge() function creates a copy of an edge layer. Use the copy_edge()
function to
• Remove ancestry.
• Direct a layer to the error database.

Syntax
copy_edge(
layer1 = edge_layer,
name = "layer_label", //optional
ancestry = true | false //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer that is copied.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

ancestry
Optional. Specifies if ancestry information is propagated to the output. The default is
false.

❍ true. Propagates the ancestry information to the output. Therefore, the output has
polygon membership information.
❍ false. Does not propagate the ancestry information to the output. Therefore, the
output does not have polygon membership information.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


copy_edge() 2-208
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 2-57 shows using the copy_edge() function to create a new edge layer containing a
copy of all edges on the input layer.
copy_of_elayer = copy_edge(elayer);

Figure 2-58 copy_edge() Function Example

elayer

copy_of_elayer

See the copy() function for more information about the difference between using a copy
function and the = operator.

See Also
copy()
copy_error()

Chapter 2: Runset Functions: A - I


copy_edge() 2-209
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

copy_error()
The copy_error() function creates a copy of the geometric data in an error layer. The new
layer has no ancestry and no connectivity, and therefore, no polygon membership
information.
Use the copy_error() function to
• Remove ancestry.
• Direct a layer to the error database.

Syntax
copy_error(
layer1 = error_layer,
name = "layer_label" //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the error layer that is copied.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


copy_error() 2-210
IC Validator Reference Manual Version N-2017.12-SP2

Example
copy_of_elayer = copy_error(elayer);

See the copy() function for more information about the difference between using a copy
function and the = operator.

See Also
copy()
copy_edge()

Chapter 2: Runset Functions: A - I


copy_error() 2-211
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

covered_by()
The covered_by() function checks multiple enclosure specifications for rectangles using a
spacing check. The function selects rectangles from the layer1 polygon layer that fit
enclosure specifications within the layer2 polygon layer. This function is the complement of
the not_covered_by() function. See the Description section of the not_covered_by()
function for more information.
By performing spacing checks of edges that oppose each other, the covered_by() function
checks whether a layer1 polygon is enclosed by the layer2 polygon. Regardless of the
endpoint extension mode selected by the extension argument, spacing is not checked
between the following edge pairs:
• Between collinear edges; that is, edges along the same line. See Figure 2-59 for an
example.
Figure 2-59 Collinear Edges

layer1

layer2

• Between perpendicular edges, or any edges forming an angle greater than 90 degrees.
See Figure 2-60 for an example.
Figure 2-60 Perpendicular Edges

layer1

layer2

Chapter 2: Runset Functions: A - I


covered_by() 2-212
IC Validator Reference Manual Version N-2017.12-SP2

• Between a layer1 edge and any outside edge of the layer2 polygon. See Figure 2-61
for an example.
Figure 2-61 Outside Edge

layer1

layer2

For any extension setting other than NONE, a point touch satisfies only a distance of 0. See
Figure 2-62 for an example.
Figure 2-62 Point Touch

layer1

layer2

More information about selection rules and check region examples are shown in the
Examples section for the not_covered_by() function.

Syntax
covered_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |

Chapter 2: Runset Functions: A - I


covered_by() 2-213
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

RECTANGLE,
extension_distance = double},
distance3 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

layer2
Required. Specifies the enclosing polygon layer.

distances
Required. Lists the distances and extensions for check regions. The distances can be
applied in either clockwise or counterclockwise order. That is, a rectangle fits the
specification if the four minimum distances can be satisfied in at least one of the eight
possible permutations: four possible rotations, in forward or reverse order.
❍ distance1, distance2, distance3, distance4. Specify the minimum enclosure
values, one for each side of the layer1 rectangle. The distances specify the
minimum distance from the outside of the layer1 polygon to the inside of the layer2
polygon. The distances must be positive values. A distance of 0 indicates that the
layers can be touching.
Note:
For the covered_by() function, the distances must be greater than or equal to
(>=) the values.
❍ extension. Optional. Specifies the endpoint extension for the check region. See the
extension definition in the distances argument of the not_covered_by() function
for more information. The default is NONE.

Chapter 2: Runset Functions: A - I


covered_by() 2-214
IC Validator Reference Manual Version N-2017.12-SP2

■ NONE. Does not extend the check region; measures only layer1 and layer2
edges with a positive perpendicular projection between them.
■ RADIAL. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a radial curve.
■ SQUARE. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a square box.
■ INTERSECTION. Extends the check region with the adjacent distance value past
the endpoints of the layer1 edge being checked.
■ RECTANGLE. Extends the check region past the endpoints of the layer1 edges
using the extension_distance value with a rectangle. The boundary of the
check region is inclusive or exclusive depending on the constraint of the distance
value. See the diagram for the extension argument of the enclose() function
for more information.
Figure 3-46 illustrates using the various extension argument settings.
❍ extension_distance. Optional. Specifies the check region extension distance when
the extension argument is RECTANGLE. The value must be nonnegative. The default
is 0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


covered_by() 2-215
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
See the Examples section of the not_covered_by() function for more information.

See Also
enclose()
not_contained_by() and contained_by()
not_covered_by()

Chapter 2: Runset Functions: A - I


covered_by() 2-216
IC Validator Reference Manual Version N-2017.12-SP2

create_ports()
The create_ports() function creates ports for the specified connect database. The
resulting connect database contains newly created ports. This function retains text. See the
Description section for more information.

Syntax
create_ports(
connect_sequence = connect_database,
port_items = {{connected_layer = polygon_layer,
marker_layer = polygon_layer},
...},
report = {CREATED_PORTS, UNUSED_MARKERS}, //optional
port_text_items = {{connected_layer = polygon_layer,
marker_layer = text_layer}, ...}, //optional
cell_list = {"string", ...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
connect database

Arguments
connect_sequence
Required. Specifies the connect database that contains the connected layers.

port_items
Optional. Lists the port specifications for polygon layers.
Note:
If both the port_items and port_text_items arguments are empty lists, then no
ports are created.
❍ connected_layer. Specifies a layer that is in the connect database.

❍ marker_layer. Specifies the polygon layer where the ports are created. Ports are not
created for cells that are not listed by the cell_list argument.

report
Optional. Specifies what is reported in the error database. The default is
UNUSED_MARKERS.

❍ CREATED_PORTS. Reports newly created ports.

❍ UNUSED_MARKERS. Reports polygons on the marker layer that do not create a new
port.

Chapter 2: Runset Functions: A - I


create_ports() 2-217
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

port_text_items
Optional. Lists the port specifications for text layers.
Note:
If both the port_items and port_text_items arguments are empty lists, then no
ports are created.
❍ connected_layer. Specifies a layer that is in the connect database.

❍ marker_layer. Specifies the text layer where the ports are created. Ports are not
created for cells that are not listed by the cell_list argument.
When the same marker layer is used for more than one connected layer, text is
applied in a priority order relative to the order of the port_text_items list. Text that
overlaps polygons from more than one connected layer is applied to the first
connected layer in the list. Each text object is used only one time, and text is reported
as unused only when it is not used by any connected layer in the port_text_items
list.

cell_list
Optional. Specifies the cells on which ports are created. The default ({ }) means to create
ports for only the top cell.
To create ports for all cells, use
cell_list = {"*"}

This example creates ports only for cell "A", "B" and "C":
cell_list = {"A", "B", "C"}

processing_mode
Optional. Specifies how the hierarchy is processed. The default is CELL_LEVEL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Description
The create_ports() function creates a new port only if a marker_layer polygon is located
inside the same cell as the corresponding connected_layer polygon.
• If more than one marker interacts on a single net, an arbitrary choice is made for creating
the port and indicating the coordinates in the report. Extra markers are unused.
• If a single marker interacts with more than one net, only one port is created. The result is
arbitrary.

Chapter 2: Runset Functions: A - I


create_ports() 2-218
IC Validator Reference Manual Version N-2017.12-SP2

• If a marker_layer polygon is located in a different cell from its corresponding


connected_layer polygon, no port is created.
Note:
Ports are persistent through the incremental_connect(), stamp(), and text_net()
functions. That is, ports are retained after they are added to a connect database.
You must make sure that the polygon hierarchy does not change. That is, the marker_layer
polygon and the corresponding connected_layer polygon must be located in the same
cell. if a polygon in an input layer is in cell A, then the derived output polygon must also be
in the same cell A.
The following example shows correct runset code because the processing_mode argument
of the and() function is CELL_LEVEL, and therefore the hierarchy does not change.
M3TEXT_mark = text_origin(M3TEXT,
cells = {"*"},text = {"*"},
shape_size = 0.005
);
M3_pin = and(M3TEXT_mark, M3,
processing_mode = CELL_LEVEL // Do not set to HIERARCHY
);
cdb = create_ports(connect_sequence = cdb,
port_items = {{M3_pin,M3TEXT_mark}, ...},
...
);

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
c1 = create_ports(c1, {{metal, bondpad}});

See Also
connect()
incremental_connect()
stamp()
text_net()

Chapter 2: Runset Functions: A - I


create_ports() 2-219
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cutting() and not_cutting()


The cutting() function selects data from layer1 polygons that cuts (intersects) data from
layer2 polygons. A count specifies the number of layer2 polygons that must be cut in
order for a layer1 polygon to be selected. The complement of this function is the
not_cutting() function.

Syntax
cutting(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_enclosing = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

not_cutting(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_enclosing = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

count
Optional. Specifies the number of layer2 polygons that must be cut by a layer1
polygon for the layer1 polygon to be selected. See “Constraints” on page A-4 for more
information. The default is >0.

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-220
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-63 shows the effect of the count argument settings with the cutting()
function.
Figure 2-63 count Argument Example With cutting() Function

layer1

layer2

Result
count > 0 count > 2

Figure 2-64 shows the effect of the count argument settings with the not_cutting()
function.
Figure 2-64 count Argument Example With not_cutting() Function

layer1

layer2

Result
count > 2

include_enclosing
Optional. Specifies whether layer1 polygons that enclose layer2 polygons are included
in the output. The default is true.

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-221
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-65 shows the effect of the include_enclosing argument settings with the
cutting() function.

Figure 2-65 include_enclosing Argument Example With cutting() Function

layer1

layer2

Result
include_enclosing= include_enclosing=
true false
(Default)
Figure 2-66 shows the effect of the include_enclosing argument settings with the
not_cutting() function.

Figure 2-66 include_enclosing Argument Example With not_cutting() Function

layer1

layer2

Result
include_enclosing= include_enclosing=
true false
(Default)

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-222
IC Validator Reference Manual Version N-2017.12-SP2

count_parity
Optional. Specifies the parity of the number of layer2 polygons that must touch layer1
polygons. The default is ALL.
❍ EVEN. Specifies that the layer1 polygons must have an even number of interactions
with layer2 data.
❍ ODD. Specifies that the layer1 polygons must have an odd number of interactions
with layer2 data.
❍ ALL. Does not check the parity based on the number of interactions.
The count argument can be used with the count_parity argument. For example, when
count = [4, 9] and the count_parity argument is EVEN, the layer1 polygons that
interact with four, six, or eight layer2 polygons are selected.
Figure 2-67 shows an example of two interacting layers.
Figure 2-67 count_parity Argument Example

L1

L2

For the following command, the result is shown in Figure 2-68.


cutting(L1, L2, count_parity = ODD)

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-223
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-68 Result of count_parity Argument Example

L1

L2

result

count_by
Optional. Provides selection by net feature. The default is SHAPE.
❍ NET. Selects a layer1 polygon if it cuts with distinct nets on the layer2 layer the
number of times specified by the count argument.
❍ SHAPE. Selects a layer1 polygon if it cuts the layer2 layer the number of times
specified by the count argument.
Refer to Figure 2-69 for the following examples.
Figure 2-69 count_by Argument Example

L1

L2

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-224
IC Validator Reference Manual Version N-2017.12-SP2

The following commands select polygon A of layer L1.


❍ Only net 1 is cut by layer L1, but net 2 is also considered because the default of the
include_enclosing argument is true. Each net is counted one time because the
count_by argument is NET. Therefore, polygon A meets the count=2 restriction.
cutting (L1, L2, count==2, count_by=NET, connect_sequence=cdb)

❍ Only net 1 is cut by layer L1, but net 2 is also considered because the default of the
include_enclosing argument is true. Each net is counted two times. Therefore,
polygon A meets the count=4 restriction.
cutting(L1, L2, count==4)

❍ Only net 1 is cut by layer L1. Net 2 is not considered because include_enclosing
argument is false. Nets 1 is counted one time because the count_by argument is
NET. Therefore, polygon A meets the count=1 restriction.
cutting(L1, L2, count==1, include_enclosing=false, count_by=NET,
connect_sequence=cdb)

❍ Only net 1 is cut by layer L1. Net 2 is not considered because include_enclosing
argument is false. Nets 1 is counted two times. Therefore, polygon A meets the
count=2 restriction.
cutting(L1, L2, count==2, include_enclosing=false)

connect_sequence
Optional. Specifies the connect database that has the layer2 connection. The database
is used when the count_by argument is NET.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-225
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
interacting() and not_interacting()

Chapter 2: Runset Functions: A - I


cutting() and not_cutting() 2-226
IC Validator Reference Manual Version N-2017.12-SP2

data_filter()
The data_filter() function outputs a specific number of polygons from the input layer that
are connected to each net. The selection of polygons that are output is random for each net,
and the polygons can come from anywhere in the input net’s hierarchy. Because output is
random for each net, the result can differ from run to run.

Syntax
data_filter(
connect_sequence = connect_database,
layer1 = polygon_layer,
polygons_per_net = integer, //optional
threshold = integer, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies the connect database.

layer1
Required. Specifies the layer that is analyzed for the specified number of polygons on
each net. This layer must be in the connect database.

polygons_per_net
Optional. Specifies the number of polygons from each net that are output. The default
is 1.

threshold
Optional. Specifies the threshold value. Polygons from each net are output only if the
total number of polygons in the net is greater than or equal to the threshold. The default
is 0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.

Chapter 2: Runset Functions: A - I


data_filter() 2-227
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
If the input has contacts or vias without hierarchical overlap, set the processing mode
to CELL_LEVEL for better performance. Otherwise, set the HIERARCHICAL to
resolve hierarchical issues.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
As shown in Figure 2-70, the following data_filter() function writes three polygons from
each net to the output layer.
condb = connect({{{A}, by_layer = B}});
result = data_filter(condb, A, polygons_per_net = 3);

Chapter 2: Runset Functions: A - I


data_filter() 2-228
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-70 data_filter() Function Example


A B result

As shown in Figure 2-71, the following data_filter() function writes three polygons to the
output layer from each net that has greater than or equal to four polygons.
condb = connect({{{A}, by_layer = B}});
result = data_filter(condb, A, polygons_per_net = 3, threshold = 4);

Figure 2-71 data_filter() Function Example Using a Threshold


A B result

See Also
data_limit()

Chapter 2: Runset Functions: A - I


data_filter() 2-229
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

data_limit()
The data_limit() function partially copies layer1 polygons based on a specified limit.
Data is copied in a bottom-up hierarchical cell order.

Syntax
data_limit(
layer1 = polygon_layer,
limit = integer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

limit
Required. Specifies the number of polygons to output. The hierarchical count of polygons
in the output layer equals this value. The flat count of the number of polygons in the
output layer, however, depends on the number of instances there are for each cell that
contains data.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


data_limit() 2-230
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-72 shows the result of using the data_limit() function. For example,
Result = data_limit(layer1, limit=2);

Figure 2-72 data_limit() Function Example

limit = 1 limit = 2 limit = 3

layer1 parent cell child cell Result

See Also
data_limit_edge()

Chapter 2: Runset Functions: A - I


data_limit() 2-231
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

data_limit_edge()
The data_limit_edge() function partially copies layer1 edges based on a specified limit.
Data is copied in a bottom-up hierarchical cell order.

Syntax
data_limit_edge(
layer1 = edge_layer,
limit = integer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

limit
Required. Specifies the number of polygons to output. The hierarchical count of polygons
in the output layer equals this value. The flat count of the number of polygons in the
output layer, however, depends on the number of instances there are for each cell that
contains data.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


data_limit_edge() 2-232
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-73 shows the result of using the data_limit_edge() function. For example,
Result = data_limit_edge(layer1, limit=5) ;

Figure 2-73 data_limit_edge() Function Example

limit = 1 limit = 3 limit = 5

layer1 parent cell child cell Result

See Also
data_limit()

Chapter 2: Runset Functions: A - I


data_limit_edge() 2-233
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

delta_edge() and not_delta_edge()


The delta_edge() function selects edges that meet the specified delta-x and delta-y
constraints. See Figure 2-74 for an example. The complement of this function is the
not_delta_edge() function.

Typically, the input layer for this function is the output from an external edge function. Use
the delta_edge() function to determine design violations based on the delta distance of all
angle edge data.
Figure 2-74 Delta Edge

edge output from an external function

delta_y

delta_x

Note:
Using the delta_edge() function with both delta_x and delta_y values equal to the
default of >=0 performs a copy_edge() function.
Using the not_delta_edge() function with delta_x and delta_y values equal to the
default of >=0 returns an empty layer.

Syntax
delta_edge(
layer1 = data_layer,
delta_x = doubleconstraint, //optional
delta_y = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_delta_edge(
layer1 = data_layer,
delta_x = doubleconstraint, //optional
delta_y = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Chapter 2: Runset Functions: A - I


delta_edge() and not_delta_edge() 2-234
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

delta_x
Optional. Specifies the delta-x distance. The default is >=0.

delta_y
Optional. Specifies the delta-y distance. The default is >=0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Here is a simple delta_edge() example.
red = delta_edge(input, delta_x <=2 , delta_y >=2);

Chapter 2: Runset Functions: A - I


delta_edge() and not_delta_edge() 2-235
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Here is a simple not_delta_edge() example.


red = not_delta_edge(input, delta_x <=2 , delta_y >=2);

In the following example, the delta_edge() function selects specified corner violations of
an external edge function.
blue = external_corner1_edge(rect, <5, type = {CONVEX_TO_CONVEX},
output_type = POINT_TO_POINT);
red = delta_edge(blue, delta_x >= 2 , delta_y >= 3);

Chapter 2: Runset Functions: A - I


delta_edge() and not_delta_edge() 2-236
IC Validator Reference Manual Version N-2017.12-SP2

See Also
angle_edge() and not_angle_edge()
length_edge() and not_length_edge()

Chapter 2: Runset Functions: A - I


delta_edge() and not_delta_edge() 2-237
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

delta_error() and not_delta_error()


The delta_error() function selects errors that meet the specified delta-x and delta-y
constraints for error distance. The complement of this function is the not_delta_error()
function.

Syntax
delta_error(
layer1 = error_layer,
delta_x = doubleconstraint, //optional
delta_y = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_delta_error(
layer1 = error_layer,
delta_x = doubleconstraint, //optional
delta_y = doubleconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the error layer from which errors are selected.

delta_x
Optional. Specifies the delta-x distance. The default is >=0.

delta_y
Optional. Specifies the delta-y distance. The default is >=0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


delta_error() and not_delta_error() 2-238
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Here is a simple delta_error() example.
err = center_to_center1_error(green, < 4); // consist of red and blue
center_to_center errors
red = delta_error(err, delta_x <=2 , delta_y >=2);

Here is a simple not_delta_error() example.


blue = not_delta_error(input, delta_x <=2 , delta_y >=2);

Chapter 2: Runset Functions: A - I


delta_error() and not_delta_error() 2-239
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
delta_edge() and not_delta_edge()
df_error_distance()
df_error_x_distance()
df_error_y_distance()

Chapter 2: Runset Functions: A - I


delta_error() and not_delta_error() 2-240
IC Validator Reference Manual Version N-2017.12-SP2

density()
The density() function checks the layout density based on user-programmable density
equations.
The density() function calls a remote function for each check-region boundary or each
delta_window subwindow. The remote function can call various utility functions that
operate on the current boundary or subwindow to produce error output and density
statistics.
The density() function can move the delta_window subwindow in
• Fixed increments that are specified by the delta_x and delta_y arguments.
• Smartsteps that are multiples of the delta_x and delta_y values, for faster processing.
To move the subwindow in smartsteps, add the density utility function
den_generate_next_step() at the end of the remote function.

Syntax
density(
window_layer = polygon_layer,
layer_hash = {"string" => polygon_layer, ...},
window_function = function,
delta_window = {width = double, height = double},
//optional
delta_x = double, //optional
delta_y = double, //optional
resize_delta_xy = true | false, //optional
x_edge_process_amount = double, //optional
y_edge_process_amount = double, //optional
area_clip_delta_percent = double, //optional
statistics_files = {density_statistics_file_handle, ...},
//optional
statistics_file_modes = {OVERWRITE | APPEND, ...}, //optional
centered_square_size = double, //optional
boundary = CLIP | ALIGN | IGNORE |
REPLICATE_WINDOW | BACKUP //optional
output_type = DELTA_WINDOW | CLIPPED_DELTA_WINDOW |
CENTER | CLIPPED_CENTER, //optional
output_center_dimensions = {width = double, height = double},
//optional
delta_window_sizes = {{north = double, south = double,
east = double, west = double},
...}, //optional
process_delta_windows = OVERLAPPING | ALL, //optional
name = "layer_label", //optional
merge_errors = true | false, //optional
pydb_output = true | false //optional
);

Chapter 2: Runset Functions: A - I


density() 2-241
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
polygon layer or error result

Arguments
window_layer
Required. Specifies the polygon layer containing one or more polygons that define the
boundaries where layers are processed for density calculations.
The chip_extent() and layer_extent() functions can be used to create a window
layer. Call these functions before the density() function.
❍ The chip_extent() function returns a layer containing a single rectangle equal to
the extents of the chip. Use this function to create a single full-chip check window.
See the chip_extent() function for more information.
❍ The layer_extent() function returns a layer containing a single rectangle equal to
the extents of the input layer. Use this function to create a single-layer check window.
See the layer_extent() function for more information.

layer_hash
Required. Specifies a hash of string to polygon layer that is processed for density
calculations. Data in the hash is accessible via the hash key within the remote window
function. When referencing data in hash from within the window function, only the portion
of the layer within the current delta_window subwindow or the current window layer
polygon is seen.

window_function
Required. Specifies the remote function that calculates the density. See the “Layout
Density Utility Functions” in Chapter 4 for more information about the utility functions you
can use to define a remote function.

delta_window
Optional. Specifies the subwindow stepped across each window layer polygon. The
density equations are evaluated within each subwindow. The default is the extents of
each window layer polygon.

delta_x
Optional. Specifies the delta_window subwindow step distance in the x-direction. The
default is the width option of the delta_window argument.

delta_y
Optional. Specifies the delta_window subwindow step distance in the y-direction. The
default is the height option of the delta_window argument.

Chapter 2: Runset Functions: A - I


density() 2-242
IC Validator Reference Manual Version N-2017.12-SP2

resize_delta_xy
Optional. Specifies whether the delta_x and delta_y argument values are recalculated
if the delta_window subwindow stepping does not end flush with the right and top
borders of the current boundary. The default is false.
❍ true. Recalculates the delta_x and delta_y values based on the current window
layer polygon extents and the input delta_x and delta_y values so that the
delta_window subwindow ends flush with the right and top borders of the current
boundary. The subwindow is stepped across each window layer polygon using the
new values.
Note:
There could be a small fractional overlap of the boundary layer. If you require no
overlap, use this argument with the x_edge_process_amount and
y_edge_process_amount arguments set to 0.

❍ false. Does not recalculate the delta_x and delta_y values.

x_edge_process_amount
Optional. If the delta_window subwindow overhangs the right edge of the boundary by
the specified value or more, specifies to shift the current subwindow left to make it flush
with the right edge of the current boundary.

y_edge_process_amount
Optional. If the delta_window subwindow overhangs the top edge of the boundary by
the specified value or more, specifies to shift the current subwindow down to make it
flush with the top edge of the current boundary.

area_clip_delta_percent
Optional. Ignores the current delta_window subwindow if the density ratio of the window
layer material inside the current subwindow is less than the specified value. By default,
the IC Validator tool ignores any subwindow with a window layer density of 0.

statistics_files
Optional. Specifies the handles of the files written to by den_window_statistics()
utility functions included in the specified remote window function. Do not specify the
same file more than one time. These files are defined using the
density_statistics_file() function.

statistics_file_modes
Optional. Specifies the action taken when the file already exists for each statistics file of
the density() function. If only one mode is specified, it is used for all files. The default
is OVERWRITE.

Chapter 2: Runset Functions: A - I


density() 2-243
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ OVERWRITE. Overwrites the previous statistics file. That is, the statistics file contains
only statistics from this function.
❍ APPEND. Appends the new data to the previous statistics file. That is, the statistics file
contains the statistics from previous density functions along with the new statistics
from this function.

centered_square_size
Optional. Specifies that squares centered on polygons inside the window layer are used
as the windows for density calculations. The default is 0.0.
❍ The value must be greater than or equal to 0.
❍ If the value is 0, the density() function does not output centered squares.
If the value is greater than 0, then the IC Validator tool performs the following steps:
1. For each polygon of the window layer, find the rectangular extent.
2. Find the center point of the rectangular extent, whose coordinates are (x,y).
3. Set
X1 = x - centered_square_size/2
Y1 = y - centered_square_size/2
X2 = x + centered_square_size/2
Y2 = y + centered_square_size/2
Note:
If the values are not on grid, they are rounded up to the next grid value.
4. Perform all normal density operations with X1, Y1, X2, Y2 defining the window layer.
For example,
density(
window_layer = metal1_extent,
layer_hash = { "layer1" => metal1 },
window_function = my_density_function,
centered_square_size = 15
);

The window is defined by


X1 = x - 15/2
Y1 = y - 15/2
X2 = x + 15/2
Y2 = y + 15/2
Performing the normal density operations, the generated window layer is defined as
shown in Figure 2-75.

Chapter 2: Runset Functions: A - I


density() 2-244
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-75 Generation of Centered Square

boundary
Optional. Specifies how to process a delta_window subwindow that overlaps the
boundary of the extents of a window layer polygon. The default is CLIP.
❍ CLIP. Truncates the subwindow at the limits of the window layer.
if the x_edge_process_amount or y_edge_process_amount argument is not equal
to -1 when the boundary argument is CLIP, then
■ If the overhang is less than the x_edge_process_amount or
y_edge_process_amount value, a clip is performed.

■ If the overhang is equal to or greater than the x_edge_process_amount or


y_edge_process_amount value, an align is performed.

■ If the overhang in the horizontal direction is less than the


x_edge_process_amount value, then clip the subwindow along the window layer.

■ If the overhang in the horizontal direction is equal to or greater than the


x_edge_process_amount value, then align the subwindow with the window layer

■ If the overhang in the vertical direction is less than y_edge_process_amount


value, then clip the subwindow along the window layer.
■ If the overhang in the vertical direction is equal or more than
y_edge_process_amount value, then align the subwindow with the window layer.

Chapter 2: Runset Functions: A - I


density() 2-245
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-76 shows how a subwindow is clipped.


Figure 2-76 boundary = CLIP Example

❍ ALIGN. If a subwindow overlaps the right side or top edge of the window layer, shifts
the window left or down until it no longer overlaps the window layer. The density
calculation is performed after the window is shifted.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is ALIGN.
Figure 2-77 shows how a subwindow is aligned.
Figure 2-77 boundary = ALIGN Example

❍ IGNORE. If a subwindow overlaps the right or top edges of the window layer boundary,
ignores the subwindow and does not output data for that subwindow location.

Chapter 2: Runset Functions: A - I


density() 2-246
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Both x_edge_process_amount and y_edge_process_amount arguments must
be -1 when the boundary argument is IGNORE.
Figure 2-78 shows when the subwindow is ignored.
Figure 2-78 boundary = IGNORE Example

❍ REPLICATE_WINDOW. To simulate density measurements on a die, replicates the input


layers to properly measure density at the boundary of the chip. If a window overlaps
the right or top edges of the window layer polygons, the window layer extent and its
data are duplicated and added to the right or top side of the original bounding box.
The density measurement on the boundary subwindow is calculated considering the
original data and the duplicated data.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is REPLICATE_WINDOW.

Chapter 2: Runset Functions: A - I


density() 2-247
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-79 shows a replicated subwindow.


Figure 2-79 boundary = REPLICATED Example

❍ BACKUP. Shifts the overlapping subwindow the same way the ALIGN option shifts it.
See ALIGN for more details.

output_type
Optional. Specifies the type of output generated. The default is DELTA_WINDOW.
❍ DELTA_WINDOW. Outputs the delta window subwindow saved by the
den_save_window() utility function.

❍ CLIPPED_DELTA_WINDOW. Outputs the intersection between the subwindow and the


window layer polygon. This intersection is performed after window function
calculations. This option ensures all output subwindows are inside the boundaries of
nonrectangular window layer polygons.
❍ CENTER. Outputs the rectangle placed at the center of the subwindow saved by the
den_save_window() utility function. The dimensions of the rectangle are specified by
the output_center_dimensions argument. An error is given when the
output_type argument is CENTER and output_center_dimensions argument is
{0, 0}.

Chapter 2: Runset Functions: A - I


density() 2-248
IC Validator Reference Manual Version N-2017.12-SP2

❍ CLIPPED_CENTER. Outputs the intersection between the rectangle placed at the


center of the subwindow and the window layer polygon. This intersection is
performed after window function calculations are completed. This option ensures that
all center subwindows are inside the boundaries of the window layer polygons.

output_center_dimensions
Optional. Specifies the dimensions of the rectangle output when the output_type
argument is CENTER.
Note:
An error is reported if only one of the two output_center_dimensions values is a
nonzero value.
An error is reported if output_center_dimensions values are specified and the
output_type argument is not CENTER.

delta_window_sizes
Optional. Specifies a list of sized delta_window subwindow values. Each group of
north, south, east, and west values represents one sized subwindow. The values can
be a mix of negative and positive values.
The north value is in the up direction relative to the top cell. The south value is in the
down direction relative to the top cell, and so forth for the east and west values. The
resulting oversized subwindow is rectangular.
❍ north. Sizes in the up direction relative to the top cell.

❍ south. Sizes in the down direction relative to the top cell.

❍ east. Sizes in the right direction relative to the top cell.

❍ west. Sizes in the left direction relative to the top cell.

process_delta_windows
Optional. Controls the handling of delta_window subwindow processing within the
extents of a window layer polygon. The default is OVERLAPPING.
❍ OVERLAPPING. Specifies to process only subwindows that overlap the window layer
polygon.
❍ ALL. Specifies to process all subwindows that fall within the extent of the window layer
polygon.
When using the ALL option,
■ Do not set the output_type argument to CLIPPED_DELTA_WINDOW or
CLIPPED_CENTER.

■ Do not use the area_clip_delta_percent argument.

Chapter 2: Runset Functions: A - I


density() 2-249
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example, the remote function named den_func outputs subwindows for
densities less than 0.6. In the remote function, m1 is not clipped by windowLayer.
Figure 2-80 shows the results of the density() function for each of the
process_delta_windows argument settings.
result = density(windowLayer, {"layer1" => m1}, den_func,
delta_window = {15, 15},
process_delta_windows = ... );

Figure 2-80 process_delta_windows Argument Example

OVERLAPPING ALL

subwindows

windowLayer

m1

result

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

merge_errors
Optional. Specifies to report errors as a single error or individual errors. The default is
false.
Note:
This argument applies only when the output of density() function goes to the
LAYOUT_ERRORS file.

Chapter 2: Runset Functions: A - I


density() 2-250
IC Validator Reference Manual Version N-2017.12-SP2

❍ true. Merges overlapping and abutting errors, and reports each group of merged
errors as a single error. For each merged error group, minimum value, maximum
value, and average value for each error statistic are reported.
❍ false. Reports individual errors unmerged.

pydb_output
Optional. Enables a layer-producing density function to output error violations to the error
database (PYDB) to be viewed in VUE. The default is false.
❍ true. Layer-producing density function outputs both a polygon result and violations
to the error database (PYDB).
❍ false. Layer-producing density function outputs only a polygon result.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Basic Density Check


This example performs a basic, full-chip, single-layer density check with no the
delta_window subwindow specified. The window layer consists of a single rectangle
representing the extents of the input layer metal1, and the hash consists of the input layer
metal1. The densityEQ_single_layer() function calculates the density ratio by dividing the
input layer area with the window area.
densityEQ_single_layer : function(void) returning void
{
areaL : double = den_polygon_area("layer1");
areaW : double = den_window_area();
ratio : double = areaL / areaW;

if (ratio > 0.0)


den_save_window (error_names = {"ratio", "area"},
values = {ratio, areaL});

Chapter 2: Runset Functions: A - I


density() 2-251
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

metal1_extent = layer_extent(metal1);
E101 @= { @"ERR101";
density(window_layer = metal1_extent,
layer_hash = {"layer1" => metal1},
window_function = densityEQ_single_layer);
}

Two-Layer Density Check


This example performs a two-layer density() function with layer1 inside window_layer
check with the delta_window subwindow defined. No external AND operation is needed
because all input layers in the layer_hash argument are ANDed with the window_layer
layer internally. The densityEQ_L1_div_WL() function calculates the density ratio by dividing
the layer1 area with the window_layer area within the subwindow. The window_layer area
is always positive because any subwindow with no window_layer material is not
processed. The window_layer area is always computed from the current window_layer
polygon. Other window_layer polygons are not involved in the current subwindow
calculations even if their extents intersect with the current window_layer polygon. The
subwindow traverses through each window_layer polygon and the
densityEQ_L1_div_WL() function is applied to each subwindow.
layerW : string = "window_layer";
layer1 : string = "layer1";

densityEQ_L1_div_WL : function(void) returning void


{
areaWL : double = den_polygon_area(layerW);
areaL1 : double = den_polygon_area(layer1);
ratio : double = areaL1 / areaWL;

if (ratio > 0.0)


den_save_window(error_names = {"ratio", "area"},
values = {ratio , areaL1});
}

E108 @= { @"ERR108";
density(window_layer = metal1,
layer_hash = {"layer1" => cont, "layerW" => metal1},
window_function = densityEQ_L1_div_WL,
delta_window = {1, 1}
);
}

Example of Window Statistics File


This example illustrates output to a window statistics files.
layer1 = "layer1";
my_window_func_1 : function(void) returning void

Chapter 2: Runset Functions: A - I


density() 2-252
IC Validator Reference Manual Version N-2017.12-SP2

{
area1: double = den_polygon_area(layer1);
areaW: double = den_window_area();
ratio = area1/areaW;
if (ratio <= 0.4) {
den_save_window();
den_window_statistics(
error_names = {"area1","areaW","ratio"},
values = {area1, areaW, ratio}
);
}
}

my_window_func_2 : function(void) returning void


{
area1: double = den_polygon_area(layer1);
areaW: double = den_window_area();
ratio = area1/areaW;
if (ratio <= 0.4) {
den_save_window();
den_window_statistics(
error_names = {"area1","areaW","ratio"},
values = {area1, areaW, ratio}
);
}
if (area1 > 100.0) {
den_window_statistics(
1,
error_names = {"area1","areaW","ratio"},
values = {area1, areaW, ratio}
);
}
}

sf = density_statistics_file("stats.txt");
sf_large = density_statistics_file("large_stats.txt");

density(window_layer = l1_extent,
window_function = my_window_func_1,
layer_hash = { "layer1" => l1 },
statistics_files = sf);

density(window_layer = l2_extent,
window_function = my_window_func_2,
layer_hash = { "layer1" => l2 },
statistics_files = {sf, sf_large},
statistics_file_modes = {APPEND,OVERWRITE});

See Also
gradient_density()

Chapter 2: Runset Functions: A - I


density() 2-253
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

density_statistics_file()
The density_statistics_file() function defines a statistics file. This file is specified in
the statistics_files argument of the density functions, density() and
gradient_density().
Limitation:
The density_statistics_file() function cannot be called more than one time with
the same file argument. The result, however, can be used in more than one density
function.

Syntax
density_statistics_file(
file = "string"
);

Returns
density_statistics_file_handle

Arguments
file
Required. Specifies the density statistics file name. See the density() and
gradient_density() functions for more information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
density()
gradient_density()

Chapter 2: Runset Functions: A - I


density_statistics_file() 2-254
IC Validator Reference Manual Version N-2017.12-SP2

dev_dlink_library_close()
The dev_dlink_library_close() function closes the dynamic-link library. See the
Dynamic-Link Library Support chapter in the IC Validator User Guide for more information.

Syntax
dev_dlink_library_close(
dev_dlink_library_handle = dev_dlink_library_handle
);

Returns
void

Arguments
dev_dlink_library_handle
Required. Specifies the handle of the dynamic-link library.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
dev_dlink_library_open()

Chapter 2: Runset Functions: A - I


dev_dlink_library_close() 2-255
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_dlink_library_open()
The dev_dlink_library_open() function opens the dynamic-link library. It must be
opened before being used by the dev_dlink() function. See the Dynamic-Link Library
Support chapter in the IC Validator User Guide for more information.

Syntax
dev_dlink_library_open(
library_name = "string"
);

Returns
dev_dlink_library_handle

Arguments
library_name
Required. Specifies the dynamic-link library.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
dev_dlink_library_close()

Chapter 2: Runset Functions: A - I


dev_dlink_library_open() 2-256
IC Validator Reference Manual Version N-2017.12-SP2

device_connected_to() and device_not_connected_to()


The device_connected_to() function selects polygons from devices that are connected to
nets with the specified text. The complement of this function is the
device_not_connected_to() function.

Syntax
device_connected_to(
device_db = device_database,
text = {"string", ...},
devices = {{device_name = "string",
device_layers = {polygon_layer, ...},
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | ALL},
...}, //optional
texted_at = TOP_CELL | TOP_OF_NET | ANY_LEVEL |
HIGHEST_TEXT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

device_not_connected_to(
device_db = device_database,
text = {"string", ...},
devices = {{device_name = "string",
device_layers = {polygon_layer, ...},
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | ALL},
...}, //optional
texted_at = TOP_CELL | TOP_OF_NET | ANY_LEVEL |
HIGHEST_TEXT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
polygon layer or error result

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

Chapter 2: Runset Functions: A - I


device_connected_to() and device_not_connected_to() 2-257
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

text
Required. Specifies the text used for selection of device body polygons from devices that
are connected to nets with the specified text. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information.

devices
Optional. Lists the devices and terminal layers that determine if a net is connected to a
device. The default is all devices.
❍ device_name. Required. Specifies the device name, which must be defined in the
device database specified in the device_db argument.
❍ device_layers. Optional. Specifies the layers that must be defined for a particular
device. When the layer list is empty, all terminal layers are used.
❍ device_type. Optional. Specifies the device type. The default is ALL.

texted_at
Optional. Specifies where to look for the text specified with the text argument. The
default is ANY_LEVEL.
❍ TOP_CELL. Looks only in the top cell of each net for the specified text.
Note:
With this setting, the device_not_connected_to() function is not the
complement of the device_connected_to() function; both functions select only
polygons from top cell nets.
❍ TOP_OF_NET. Looks at all cells on the highest hierarchical level on the net for the
specified text. The tool selects the net whose text on the highest level matches the
specified text; the net does not have higher hierarchical levels. This option is not
available when the processing_mode argument is CELL_LEVEL.
❍ ANY_LEVEL. Looks at all cells on the net for the specified text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
See Figure 3-27 in the net_select() function for an example of the HIGHEST_TEXT
option.

Chapter 2: Runset Functions: A - I


device_connected_to() and device_not_connected_to() 2-258
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
device_connected_to(
device_db = device_db, /* from previous device database */
text = {"VDD", "VSS"},
devices = {{"p"}, {"n", {nsd}}},
texted_at = TOP_OF_NET,
processing_mode = HIERARCHICAL
);

device_not_connected_to(
device_db = device_db, /* from previous device database */
text = {"*"},
devices = {{"pfet", {psd}}, {"nfet",{nsd}}},
texted_at = ANY_LEVEL,
processing_mode = HIERARCHICAL
);

See Also
connect()
device_net_count()
net_texted_with() and net_not_texted_with()
text_net()
texted_with() and not_texted_with()

Chapter 2: Runset Functions: A - I


device_connected_to() and device_not_connected_to() 2-259
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device_net_count()
The device_net_count() function selects polygons from devices that have the specified
net count. The selected polygons are merged.

Syntax
device_net_count(
device_db = device_database,
count = integer, //optional
devices = {{device_name = "string",
device_layers = {polygon_layer, ...},
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | ALL},
...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
polygon layer or error result

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

count
Optional. Specifies the number of unique nets to which a device must be connected for
the device to be selected. This value must be positive. See “Constraints” on page A-4 for
more information. The default is 1.
❍ If count = 0, a device is selected if there are no nets connected to the device. (It is
a floating device.)
❍ If count = 1, a device is selected if there is only one net connected to the device. (It
is a one-connection device.)

devices
Optional. Lists the devices and terminal layers that determine if a net is connected to a
device. The default is all devices.
❍ device_name. Required. Specifies the device name, which must be defined in the
device database specified in the device_db argument.

Chapter 2: Runset Functions: A - I


device_net_count() 2-260
IC Validator Reference Manual Version N-2017.12-SP2

❍ device_layers. Optional. Specifies the layers that must be defined for a particular
device. When the layer list is empty, all terminal layers are used.
❍ device_type. Optional. Specifies the device type. The default is ALL.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
device_net_count(
device_db = device_d, /* from previous extract device function */
devices = {{"pfet", {pgate}}, {"nfet", {ngate}}},
count = >0
);

See Also
net_device_count()

Chapter 2: Runset Functions: A - I


device_net_count() 2-261
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_features()
The dfm_features() function provides access to aggregate geometric data on multiple
layers of all types in the context of a specified window. One or more remote functions are
used to specify arithmetic conditions in terms of geometric characteristics and properties to
choose windows for output.

Syntax
dfm_features(
layer_ids = {"string" => geometry_layer, ...},
dfm_function = function,
aggregate_functions = {"string" => {
aggregate_function = function,
layer_id = "string",
op = MIN | MAX | SUM | PRODUCT //optional
}}, //optional
context = TOP | BY_CELL, //optional
boundary = {
type = {CHIP_EXTENT | BOX | INPUT_LAYERS_EXTENT |
POLYGON_EXTENTS}, //optional
box = {{left = double, bottom = double,
right = double, top = double}, ...}, //optional
layer = polygon_layer //optional
}, //optional
windows = {
delta_window = {width = double, height = double}, //optional
delta_x = double, //optional
delta_y = double, //optional
boundary = CLIP | BACKUP, //optional
output_type = DELTA_WINDOW | CENTER, //optional
output_center_dimensions = {width = double,
height = double}, //optional
}, //optional
cells = {
child_data = LEVEL_CHILD_DATA | FLATTEN_CHILD_DATA |
IGNORE_CHILD_DATA, //optional
merge = true | false, //optional
}, //optional
files = {ascii_file_handle, ...} //optional
);

Returns
polygon layer or error result

Chapter 2: Runset Functions: A - I


dfm_features() 2-262
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
layer_ids
Required. Specifies the hash of string to geometry layers. The strings are used by the
remote function to access composite characteristics of the given layer. The layers can be
of type error, polygon, or edge.

dfm_function
Required. Specifies the remote function that calculates the final value for the specified
window and reports the results. This function is executed once per window, after the
completion of any aggregate functions. For information about the utility functions you can
use to define a remote function, see “DFM Features Utility Functions” in Chapter 4.
Note:
The DFM features utility functions are exclusive to dfm_function.

aggregate_functions
Optional. An optional hash of string to structure that specifies the functions and
arguments to be used for calculating aggregate values for the window. These functions
are executed once per window, before the function specified by the dfm_function
argument. The results of these functions are passed to the dfm_function argument by
the dfm_aggregate() utility function, using the appropriate hash key. Use this hash
when the aggregate value of an expression is required.
Important:
This list of aggregate functions can cause performance degradation and should be
used only when necessary.
❍ aggregate_function. Required. Specifies a function with no arguments that returns
a double. This function defines the value that is calculated for each data item in the
window. In addition to the standard PXL library, the following utility functions are
defined in the context of this aggregate function:
■ dfm_area()

■ dfm_perimeter()

■ dfm_length()

■ dfm_projection_length()

■ dfm_distance()

■ dfm_get_double_property()
These utility functions are exclusive to this context.

Chapter 2: Runset Functions: A - I


dfm_features() 2-263
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ layer_id. Required. Specifies the string that identifies the layer from the layer_ids
list. are used by the aggregate function to access composite characteristics of the
layers. This string must appear in the layer_ids hash.
❍ op. Optional. Specifies the operation to be performed on the result of the aggregate
function to determine the result. Because aggregate functions do not provide access
to individual data, they are evaluated only in the context of the specified operation.
The default operation is SUM.
■ SUM

■ MIN

■ MAX

■ PRODUCT

context
Optional. Specifies an optional enumerator that identifies where the operation takes
place. The default is TOP.
❍ TOP. Operates in the context of the top cell. All hierarchical overlap is resolved. The
boundary can be defined in the boundary argument, and delta windows can be
defined in the windows argument.
❍ BY_CELL. Specifies that the extents of each cell is a boundary and cells are processed
individually. The processing is defined by the cells argument. Delta windows and
boundary control are not available.
Important:
Although efforts are made to maintain the most efficient hierarchy, the hierarchical
location of geometric data in derived layers is not guaranteed. Layer operations
can move data up or down the hierarchy to facilitate their implementation.

boundary
Optional. Defines the geometric extents of the operation when context = TOP.
❍ type. Optional. Specifies an enumerator that defines the type of boundary. The
default is CHIP_EXTENT.
■ CHIP_EXTENT. The extents of all layers in the assign section

■ BOX. The boundary is defined by boundary.box

■ INPUT_LAYERS_EXTENT. The extents of all layers in layer_ids

■ POLYGON_EXTENTS. One or more boundaries are defined by the polygonal extents


of the polygons in boundary.layer

Chapter 2: Runset Functions: A - I


dfm_features() 2-264
IC Validator Reference Manual Version N-2017.12-SP2

❍ box. Optional. Specifies a structure of four doubles used when boundary.type =


BOX. The four doubles define the opposing corners of a box. The coordinates are in
the coordinate system of the top block. A box with no area results in no output.
❍ layer. Optional. Specifies a polygon layer used when boundary.type =
POLYGON_EXTENTS. An empty layer results in no output.
When type = BOX or type = POLYGON_EXTENTS, the input data might require clipping
based on the layer type:
❍ Polygons are clipped at the boundary like an and() operation.
❍ Edges are clipped at the boundary like an and_edge() operation, which includes
inside coincidence.
❍ Errors are not clipped. All errors that interact with the boundary, except touches, are
included.

windows
Optional. Defines the delta windows when context = TOP.
❍ delta_window. Optional. Defines the width and height of the delta window. Both
values must be positive. The default is {0,0}, which means delta windows are not
used.
❍ delta_x. Optional. Specifies the delta_window subwindow step distance in the
x-direction. The default is delta_window width value. Nonpositive values are
ignored.
❍ delta_y. Optional. Specifies the delta_window subwindow step distance in the
y-direction. The default is delta_window height value. Nonpositive values are
ignored.
❍ boundary. Optional. Specifies an enumerator the defines the behavior when a delta
window exceeds the boundary. The default is CLIP.
■ CLIP. Truncates the delta window at the boundary.

■ BACKUP. Shifts the delta window to coincide with the boundary.

❍ output_type. Optional. Specifies the type of output generated. The default is


DELTA_WINDOW.

■ DELTA_WINDOW. Specifies the delta window.

■ CENTER. Outputs the rectangle placed at the center of the subwindow. The
dimensions of the rectangle are specified by the output_center_dimensions
argument. The CENTER argument enables the storage of user-defined properties
on the derived output layer.

Chapter 2: Runset Functions: A - I


dfm_features() 2-265
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ output_center_dimensions. Optional. Specifies the dimensions of the rectangle


output when the output_type argument is CENTER.
The windows are in the top block. The starting point is the lower-left corner of the
boundary. Measurements of data are based on the layer type:
❍ For polygons, the measurement includes the portion of the active area that falls in the
window.
❍ For edges, the measurement includes the portion of the length that falls in the window
or is inside coincident with the window.
❍ For errors, given the polygon formed by connecting the edges of the error: for each
window that shares active area with that polygon, the measurement of each window
includes the error distance and the complete projection length.

cells
Optional. Defines the processing when context = BY_CELL.
❍ child_data. Optional. Specifies what happens with the data in the placement of the
current cell. The default is LEVEL_CHILD_DATA.
■ LEVEL_CHILD_DATA. Includes hierarchically interacting data in the measurements
of the current cell.
■ FLATTEN_CHILD_DATA. Includes all child data in the measurements of the current
cell.
■ IGNORE_CHILD_DATA. ignores placements in the current cell.

❍ merge. Optional. Controls how the IC Validator tool treats hierarchically-formed


geometries (polygons, edges, or errors). The default is true. This option is used only
when child_data != IGNORE_CHILD_DATA.
■ true. Promotes hierarchically-formed geometries to a common point in the
hierarchy, and merges them into a single geometry.
Note:
Although the tool attempts to maintain the most efficient hierarchy, the
resulting location of promoted geometries is not guaranteed.
■ false. Leaves hierarchically-formed geometries as is. Measurements can include
redundant data.

files
Optional. Specifies the ASCII files that the dfm_fnote() utility function can write to. The
order of the files determines the index for accessing the files in the remote functions; the
first file listed has an index of 0 (zero).

Chapter 2: Runset Functions: A - I


dfm_features() 2-266
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
You can use the dfm_features() function to find the sum of a value or the sum of an
expression.
Example 1
In the following example, the sum of a value is required:
u_score: function (void) returning void{
score = (dfm_count("lay2") > 0)
? (dfm_count("err1") > 0)
? exp(-(dfm_get_sum_double_property("err1", "prop1") /
dfm_sum_area("lay1")) * 0.47/1)
: 1
: 2 - ((dfm_count("lay2")==0) ? 0 : 1);
if ((score > 0.0) && (score <= 1)) {
note("score : " + score);
}
}

dfm_features(
{ "err1" => err1, "lay1" => lay1, "lay2" => lay2},
dfm_function = u_score);

Example 2
In the following example, the sum of an expression is required.
u_err: function (void) returning result : double{
result = (K*dfm_distance()) / (dfm_projection_length()**2);
}

u_score: function (void) returning void{


score = exp(-dfm_aggregate("err"));
if (score >= 0) {
dfm_fnote(0, "score : " + score);
}
}

dfm_features(
layer_ids = { "spacing_error" => spacing_error},
dfm_function = u_score,
aggregate_functions = {

Chapter 2: Runset Functions: A - I


dfm_features() 2-267
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

"err" => {u_err, "spacing_error"}


}
);

Chapter 2: Runset Functions: A - I


dfm_features() 2-268
IC Validator Reference Manual Version N-2017.12-SP2

donut_holes()
The donut_holes() function creates polygons that define the holes in any donut-shaped
data on the specified input layer.

Syntax
donut_holes(
layer1 = polygon_layer,
holes = ALL | INNER | EMPTY, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
area = doubleconstraint, //optional
name = "layer_label", //optional
outer_boundary_point_touch = OPEN_OUTER_BOUNDARY |
CLOSED_OUTER_BOUNDARY //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

holes
Optional. Specifies the types of holes that generate polygons. The default is ALL.
❍ ALL. Specifies that all holes generate polygons.

❍ INNER. Specifies that only holes which do not contain donuts generate polygons.

❍ EMPTY. Specifies that only completely empty holes generate polygons.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

area
Optional. Specifies that holes are checked for this area. The default is >0.0.
❍ When the holes argument is ALL, the area is checked for unmerged holes.
❍ When the holes argument is INNER or EMPTY, the area is checked for merged holes.

Chapter 2: Runset Functions: A - I


donut_holes() 2-269
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

outer_boundary_point_touch
Optional. Controls if an outer boundary point touch case is treated as hole or not. The
default is OPEN_OUTER_BOUNDARY.
❍ OPEN_OUTER_BOUNDARY. Does not treat an outer boundary point touch case as a hole.

❍ CLOSED_OUTER_BOUNDARY. Treats an outer boundary point touch case as a hole.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

holes Argument Examples


For the following examples, the input polygon layer is shown in Figure 2-81.
Figure 2-81 Input for donut_holes() Function Examples
Input layerA

In Figure 2-82 all holes from donut-shaped pieces of layerA are selected.
Result = donut_holes (layerA);

Chapter 2: Runset Functions: A - I


donut_holes() 2-270
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-82 Selecting All Donut Holes


Output layerA

Result

In Figure 2-83 all holes from donut-shaped pieces of layerA that do not enclose any data of
layerA are selected.
Result = donut_holes (layerA, EMPTY);

Figure 2-83 Only Holes That Do Not Contain Donuts Generate Polygons
Output layerA

Result

In Figure 2-84 all holes from donut-shaped pieces of layerA that do not enclose any
donut-shaped pieces are selected.
Result = donut_holes (layerA, INNER);

Figure 2-84 Excluding Holes That Do Not Contain Donuts


Output layerA

Result

outer_boundary_point_touch Argument Example


The donut_holes() function only considers one polygon at a time. The area enclosed by
multiple point-touching polygons is never a donut hole, regardless of the setting of the
outer_boundary_point_touch argument. Figure 2-85 shows an example of multiple
point-touching polygons.

Chapter 2: Runset Functions: A - I


donut_holes() 2-271
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-85 Multiple Point-touching Polygons Example

See Also
donuts() and not_donuts()
inside_hole() and not_inside_hole()

Chapter 2: Runset Functions: A - I


donut_holes() 2-272
IC Validator Reference Manual Version N-2017.12-SP2

donuts() and not_donuts()


The donuts() function selects layer1 polygons that contain one or more holes. An optional
constraint allows you to specify the required number of holes. The complement of this
function is the not_donuts() function.

Syntax
donuts(
layer1 = polygon_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_donuts(
layer1 = polygon_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

count
Optional. Specifies the number of holes a polygon must contain for it to be selected. The
default is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


donuts() and not_donuts() 2-273
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-86 shows examples of polygons with and without holes.
Figure 2-86 Examples of Polygons With and Without Holes
Donuts

1 hole 2 holes 1 hole 1 hole

Not Donuts

See Also
donut_holes()

Chapter 2: Runset Functions: A - I


donuts() and not_donuts() 2-274
IC Validator Reference Manual Version N-2017.12-SP2

drc_features()
The drc_features() function provides access to geometric data on multiple layers based
on the interaction of the secondary layer with the primary layer. A remote function is used to
specify arithmetic conditions in terms of geometric characteristics and to choose polygons
for output.

Syntax
drc_features(
primary_layer = geometry_layer,
secondary_layers = {"string" => geometry_layer, ...},
drc_function = function,
output_from_layer = polygon_layer,
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
files = {ascii_file_handle, ...} //optional
clipping = true | false, //optional
connect_sequence = connect_database, //optional
combine_errors = NONE | OPPOSING //optional
);

Returns
polygon layer or error result

Arguments
primary_layer
Required. Specifies the layer that is the basis for the collection of geometric
characteristics.

secondary_layers
Required. Specifies the hash of string to geometry layers. The strings are used by the
remote function to access composite characteristics of the given secondary layer. The
secondary layers can be of type error, polygon, or edge.

drc_function
Required. Specifies the remote function that is called one time for each geometry in the
primary layer. The function has access to the characteristics of the secondary layers that
interact with the given geometry. It is used to select the output based on those
characteristics. See “DRC Features Utility Functions” in Chapter 4 for more information
about the utility functions you can use to define a remote function.

Chapter 2: Runset Functions: A - I


drc_features() 2-275
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

output_from_layer
Required. Specifies the layer from which polygons are selected.

include_touch
Optional. Specifies the outside touches that are included in the interaction check
between the primary layer and the secondary layers. The default is EDGE.
❍ NONE. Includes neither point touch nor line touch.

❍ EDGE. Includes edge touch.

❍ ALL. Includes all touches (edge and point).

error_shape
Optional. Specifies how errors are treated in the interaction check between the primary
layer and the secondary layer. The default is EDGES.
❍ EDGES. Recognizes interaction only with the violating edges. The errors are treated as
pairs of edges, and if either edge meets the interaction specification, the error is
selected.
❍ REGION. Recognizes interaction with any part of the violating region. The errors are
treated as polygons, as created when the output_type argument is REGION in the
spacing check functions that produce polygons.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

files
Optional. Specifies the ASCII files that the df_fnote() function can write to. The files
are defined using the fopen() function. The order of the files determines the index for
accessing the files in the remote functions; the first file listed has an index of 0 (zero).

Chapter 2: Runset Functions: A - I


drc_features() 2-276
IC Validator Reference Manual Version N-2017.12-SP2

clipping
Optional. Specifies whether secondary layer polygons are clipped by the primary
polygon layer. The default is false.
❍ false. Specifies that, for a given primary layer polygon, the full secondary layer
polygons that interact with it are considered by the drc_function argument.
❍ true. Clips secondary layer polygons by ANDing secondary layer polygons with
primary layer polygons they interact with. The remote functions used in the
drc_function argument apply to the clipped secondary layer polygons. The primary
layer polygons are unchanged. When output_from_layer is the secondary layer,
the drc_features() function outputs the clipped secondary layer polygons.
Note:
When clipping = true, all layers must be polygon layers. Otherwise, the
IC Validator tool returns an error.

connect_sequence
Optional. Specifies the connect database for these net-based utility functions:
df_nets_in_sync(), df_get_*_net_double_property(),
df_get_edge_net_list_of_double_property(), and
df_get_edge_net_string_property().
This database must be a valid connect database, specifically derived from the
property_to_net() function, when any net-based utilities appear in the drc_function
argument.
Note:
Clipping must be false when using net-based utilities.

combine_errors
Optional. Specifies how to combine unique errors that are considered duplicate or
redundant. The default is NONE.
❍ NONE. Specifies that error layers are not combined.

❍ OPPOSING. Specifies that error layers which are opposing in direction are combined.
See Figure 2-88 for an example of the OPPOSING option.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 2: Runset Functions: A - I


drc_features() 2-277
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
You can use the drc_features() function to check for long edges that jog. In the example
shown in Figure 2-87, the rule is: For a parallel run length > 1.5, including jogs, the external
spacing must be 0.5.
Figure 2-87 Example of Checking for Long Edges That Jog

data

errors

The runset has


my_func1 : function (void) returning void{
pp = df_get_current_data();
As = df_error_layer(pp, "lay1");
if(df_error_sum_projection_length(As) > 1.5)
{
df_save_data(pp);
}
}

A = external1_error(M1, < 0.5, RADIAL);


Shapes = error_merge(A);
viol = drc_features(Shapes, {"lay1" => A }, my_func1,
output_from_layer=Shapes);

See Also
drc_features_edge()
drc_features_error()
drc_features_marker()

Chapter 2: Runset Functions: A - I


drc_features() 2-278
IC Validator Reference Manual Version N-2017.12-SP2

drc_features_edge()
The drc_features_edge() function provides access to geometric data on multiple layers
based on the interaction of the secondary layer with the primary layer. A remote function is
used to specify arithmetic conditions in terms of geometric characteristics and to choose
edges for output.

Syntax
drc_features_edge(
primary_layer = geometry_layer,
secondary_layers = {"string" => geometry_layer, ...},
drc_function = function,
output_from_layer = edge_layer,
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
files = {ascii_file_handle, ...}, //optional
connect_sequence = connect_database, //optional
combine_errors = NONE | OPPOSING //optional
);

Returns
edge layer or error result

Arguments
primary_layer
Required. Specifies the layer that is the basis for the collection of geometric
characteristics.

secondary_layers
Required. Specifies the hash of string to geometry layers. The strings are used by the
remote function to access composite characteristics of the given secondary layer. The
secondary layers can be of type error, polygon, or edge.

drc_function
Required. Specifies the remote function that is called one time for each geometry in the
primary layer. The function has access to the characteristics of the secondary layers that
interact with the given geometry. It is used to select the output based on those
characteristics. See “DRC Features Utility Functions” in Chapter 4 for more information
about the utility functions you can use to define a remote function.

output_from_layer
Required. Specifies the layer from which edges are selected.

Chapter 2: Runset Functions: A - I


drc_features_edge() 2-279
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

include_touch
Optional. Specifies the outside touches that are included in the interaction check
between the primary layer and the secondary layers. The default is EDGE.
❍ NONE. Includes neither point touch nor line touch.

❍ EDGE. Includes edge touch.

❍ ALL. Includes all touches (edge and point).

error_shape
Optional. Specifies how errors are treated in the interaction check between the primary
layer and the secondary layer. The default is EDGES.
❍ EDGES. Recognizes interaction only with the violating edges. The errors are treated as
pairs of edges, and if either edge meets the interaction specification, the error is
selected.
❍ REGION. Recognizes interaction with any part of the violating region. The errors are
treated as polygons, as created when the output_type argument is REGION in the
spacing check functions that produce polygons.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

files
Optional. Specifies the ASCII files that the df_fnote() function can write to. The files
are defined using the fopen() function. The order of the files determines the index for
accessing the files in the remote functions; the first file listed has an index of 0 (zero).

connect_sequence
Optional. Specifies the connect database for these net-based utility functions:
df_nets_in_sync(), df_get_*_net_double_property(),
df_get_edge_net_list_of_double_property(), and
df_get_edge_net_string_property().

Chapter 2: Runset Functions: A - I


drc_features_edge() 2-280
IC Validator Reference Manual Version N-2017.12-SP2

This database must be a valid connect database, specifically derived from the
property_to_net() function, when any net-based utilities appear in the drc_function
argument.
Note:
Clipping must be false when using net-based utilities.

combine_errors
Optional. Specifies how to combine unique errors that are considered duplicate or
redundant. The default is NONE.
❍ NONE. Specifies that error layers are not combined.

❍ OPPOSING. Specifies that error layers which are opposing in direction are combined.
See Figure 2-88 for an example of the OPPOSING option.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the drc_features() function for more information.

See Also
drc_features()
drc_features_error()
drc_features_marker()

Chapter 2: Runset Functions: A - I


drc_features_edge() 2-281
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

drc_features_error()
The drc_features_error() function provides access to geometric data on multiple layers
based on the interaction of the secondary layer with the primary layer. A remote function is
used to specify arithmetic conditions in terms of geometric characteristics and to choose
errors for output.

Syntax
drc_features_error(
primary_layer = geometry_layer,
secondary_layers = {"string" => geometry_layer, ...},
drc_function = function,
output_from_layer = error_layer,
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
files = {ascii_file_handle, ...}, //optional
corner_pruning = NONE | ORTHOGONAL, //optional
contributing_layers = {layer1 = polygon_layer,
layer2 = polygon_layer}, //optional
connect_sequence = connect_database, //optional
combine_errors = NONE | OPPOSING //optional
);

Returns
error layer or error result

Arguments
primary_layer
Required. Specifies the layer that is the basis for the collection of geometric
characteristics.

secondary_layers
Required. Specifies the hash of string to geometry layers. The strings are used by the
remote function to access composite characteristics of the given secondary layer. The
secondary layers can be of type error, polygon, or edge.

drc_function
Required. Specifies the remote function that is called one time for each geometry in the
primary layer. The function has access to the characteristics of the secondary layers that
interact with the given geometry. It is used to select the output based on those
characteristics. See “DRC Features Utility Functions” in Chapter 4 for more information
about the utility functions you can use to define a remote function.

Chapter 2: Runset Functions: A - I


drc_features_error() 2-282
IC Validator Reference Manual Version N-2017.12-SP2

output_from_layer
Required. Specifies the layer from which errors are selected.

include_touch
Optional. Specifies the outside touches that are included in the interaction check
between the primary layer and the secondary layers. The default is EDGE.
❍ NONE. Includes neither point touch nor line touch.

❍ EDGE. Includes edge touch.

❍ ALL. Includes all touches (edge and point).

error_shape
Optional. Specifies how errors are treated in the interaction check between the primary
layer and the secondary layer. The default is EDGES.
❍ EDGES. Recognizes interaction only with the violating edges. The errors are treated as
pairs of edges, and if either edge meets the interaction specification, the error is
selected.
❍ REGION. Recognizes interaction with any part of the violating region. The errors are
treated as polygons, as created when the output_type argument is REGION in the
spacing check functions that produce polygons.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

files
Optional. Specifies the ASCII files that the df_fnote() function can write to. The files
are defined using the fopen() function. The order of the files determines the index for
accessing the files in the remote functions; the first file listed has an index of 0 (zero).

Chapter 2: Runset Functions: A - I


drc_features_error() 2-283
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

corner_pruning
Optional. Controls whether the IC Validator tool prunes the primary error layer by
removing one of the errors for each pair of corner-to-corner errors formed by orthogonal
corners. The default is NONE.
❍ NONE. The primary error layer is not pruned.

❍ ORTHOGONAL. For each pair of corner-to-corner errors formed by orthogonal corners,


the corner error with the larger area is kept and the corner error with the smaller area
is pruned. All other errors stay the same.
Note:
When the ORTHOGONAL option is specified, the secondary_layers argument must
be empty.

contributing_layers
Optional. Identifies the secondary layers that contribute to the primary error layer. Only
those polygons that might cause a primary error are identified. This argument is valid
only when the
❍ primary layer is an error layer.
❍ primary layer is derived from the enclose_error(), external2_error(),
internal2_error(), or external_corner2_error() function.

❍ two layers are in the secondary layer list.


❍ two layers are both be specified or unspecified.
The contributing_layers argument provides constraints on what should be in the
cluster, in addition to the constraints it provides to the include_touch and error_shape
arguments.
When you identify a secondary layer as a layer1 layer, it is included in the cluster only if
❍ It is coincident with the layer1 side of the error.
❍ The direction of coincidence is consistent with the layer1 side of the error.
When you identify a secondary layer as a layer2 layer, it is included in the cluster only if
❍ It is coincident with the layer2 side of the error.
❍ The direction of coincidence is consistent with the layer2 side of the error.

connect_sequence
Optional. Specifies the connect database for these net-based utility functions:
df_nets_in_sync(), df_get_*_net_double_property(),
df_get_edge_net_list_of_double_property(), and
df_get_edge_net_string_property().

Chapter 2: Runset Functions: A - I


drc_features_error() 2-284
IC Validator Reference Manual Version N-2017.12-SP2

This database must be a valid connect database, specifically derived from the
property_to_net() function, when any net-based utilities appear in the drc_function
argument.
Note:
Clipping must be false when using net-based utilities.

combine_errors
Optional. Specifies how to combine unique errors that are considered duplicate or
redundant. The default is NONE.
❍ NONE. Specifies that error layers are not combined.

❍ OPPOSING. Specifies that error layers which are opposing in direction are combined.
In Figure 2-88, the external2_error() function outputs two redundant errors: one
error projects from the red edge to the green polygon and the other error projects
from the green polygon to the red edge. For this case, the projection direction of the
two errors are opposing and the errors share violation edges from different layers.
When this option is set, the drc_features() function combines the errors before
cluster formation. This option changes the drc_features() function from a selector
to a creator.
external2_error(red, green, distance < 0.08, extension=NONE,
look_thru=COINCIDENT);

Figure 2-88 Example of OPPOSING Option

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 2: Runset Functions: A - I


drc_features_error() 2-285
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
See the Example section of the drc_features() function for more information.

See Also
drc_features()
drc_features_edge()
drc_features_marker()

Chapter 2: Runset Functions: A - I


drc_features_error() 2-286
IC Validator Reference Manual Version N-2017.12-SP2

drc_features_marker()
The drc_features_marker() function provides access to geometric data on multiple
layers based on the interaction of the secondary layer with the primary layer. A remote
function is used to specify arithmetic conditions in terms of geometric characteristics and to
choose markers for output.

Syntax
drc_features_marker(
primary_layer = geometry_layer,
secondary_layers = {"string" => geometry_layer, ...},
drc_function = function,
output_from_layer = marker_layer,
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
files = {ascii_file_handle, ...} //optional
);

Returns
marker layer or error result

Arguments
primary_layer
Required. Specifies the input layer, which is the basis for the collection of geometric
characteristics.

secondary_layers
Required. Specifies the hash of string to geometry layers. The strings are used by the
remote function to access composite characteristics of the given secondary layer. The
secondary layers can be of type error, polygon, edge, or marker.

drc_function
Required. Specifies the remote function that is called one time for each geometry in the
primary layer. The function has access to the characteristics of the secondary layers that
interact with the given geometry. It is used to select the output based on those
characteristics. See “DRC Features Utility Functions” in Chapter 4 for more information
about the utility functions you can use to define a remote function.

output_from_layer
Required. Specifies the layer from which markers are selected.

Chapter 2: Runset Functions: A - I


drc_features_marker() 2-287
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

include_touch
Optional. Specifies the outside touches that are included in the interaction check
between the primary layer and the secondary layers. The default is EDGE.
❍ NONE. Includes neither point touch nor line touch.

❍ EDGE. Includes edge touch.

❍ ALL. Includes all touches (edge and point).

error_shape
Optional. Specifies how errors are treated in the interaction check between the primary
layer and the secondary layer. The default is EDGES.
❍ EDGES. Recognizes interaction only with the violating edges. The errors are treated as
pairs of edges, and if either edge meets the interaction specification, the error is
selected.
❍ REGION. Recognizes interaction with any part of the violating region. The errors are
treated as polygons, as created when the output_type argument is REGION in the
spacing check functions that produce polygons.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. This name is used only for log files; runset variables are not
changed. The default is the name of the layer being created.

files
Optional. Specifies the ASCII files that the df_fnote() function can write to. The files
are defined using the fopen() function. The order of the files determines the index for
accessing the files in the remote functions; the first file listed has an index of 0 (zero).

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


drc_features_marker() 2-288
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the drc_features() function for more information.

See Also
drc_features()
drc_features_edge()
drc_features_error()

Chapter 2: Runset Functions: A - I


drc_features_marker() 2-289
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

edge_extents()
The edge_extents() function creates rectangles from the extents of the layer1 edges.
The rectangles are merged in the result.
Note:
The extents polygon is generated using 45-degree edges rather than orthogonal edges
if the orthogonal extents would have 0 area.

Syntax
edge_extents(
layer1 = edge_layer,
corners = CONNECT | IGNORE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge layer.

corners
Optional. Specifies how corners are processed. The default is IGNORE.
Note:
A corner is a point where the start of exactly one edge is coincident with the end of
exactly one edge, and the edges are not collinear.
❍ CONNECT. Connects the edges at corners and uses their total extents box.

❍ IGNORE. Ignores corners. Each edge is processed individually.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


edge_extents() 2-290
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
/* create boxes for nonorthogonal gate edges */
boxes = edge_extents (
layer1 = not_angle_edge (
layer1 = gate_edges,angles = {0,90}));

See Also
layer_extent()
polygons()

Chapter 2: Runset Functions: A - I


edge_extents() 2-291
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

edge_features_edge()
The edge_features_edge() function creates an edge layer from user-defined geometries
based on the characteristics of the input layer edges. Edges are defined as a pair of
xy coordinates. The two points are ordered with the active area on the right. The created
edges are merged; redundant data points are removed.

Syntax
edge_features_edge(
layer1 = edge_layer,
edge_function = function,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge layer.

edge_function
Required. Specifies the remote function for edge processing and output. This function is
called one time for each individual layer1 edge. See “Edge Features Edge Utility
Functions” in Chapter 4 for more information about the utility functions you can use to
define a function.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes edges only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes edges within the context of the lowest cell that contains
the complete hierarchical edge.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


edge_features_edge() 2-292
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
This example selects all horizontal and vertical edges from an edge layer, and extends the
edges by their length at both ends.
euf : function (void) returning void {
ce = efe_get_current_edge();
x0 = efe_edge_coordinate_x(ce, 0);
y0 = efe_edge_coordinate_y(ce, 0);
x1 = efe_edge_coordinate_x(ce, 1);
y1 = efe_edge_coordinate_y(ce, 1);

new_edge = false;
if (double_to_integer_coordinate(y0) == double_to_integer_coordinate(y1)) {
new_edge = true;
if (dblgt(x1, x0)) {
l = x1 - x0;
x0 = x0 - l;
x1 = x1 + l;
}
else {
l = x0 - x1;
x0 = x0 + l;
x1 = x1 - l;
}
}
else if (double_to_integer_coordinate(x0) == double_to_integer_coordinate(x1)) {
new_edge = true;
if (dblgt(y1, y0)) {
l = y1 - y0;
y0 = y0 - l;
y1 = y1 + l;
}
else {
l = y0 - y1;
y0 = y0 + l;
y1 = y1 - l;
}
}
if (new_edge) {
ne = efe_new_edge();
efe_set_edge_coordinate(ne, x0, y0, 0);
efe_set_edge_coordinate(ne, x1, y1, 1);
efe_save_edge(ne);
}
}
t1 = edge_features_edge(e1, euf);

Chapter 2: Runset Functions: A - I


edge_features_edge() 2-293
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
angle_edge() and not_angle_edge()
delta_edge() and not_delta_edge()
length_edge() and not_length_edge()
polygon_features()

Chapter 2: Runset Functions: A - I


edge_features_edge() 2-294
IC Validator Reference Manual Version N-2017.12-SP2

edge_grow()
The edge_grow() function creates polygons from the input layer that are oversized in the
specified directions by the specified distances. If the north, south, east, and west
arguments are all 0 (zero) then the output is an empty layer.
As shown in Figure 2-89, the direction of each edge is classified according to its outside
faces. Each edge is identified to have one or two directions. When you specify only one
direction matching the edge direction, the resulting polygon is a rectangle. When you specify
two directions matching the edge directions, the resulting polygon is a rectangle if the two
values are the same; otherwise, the resulting polygon is a parallelogram. All values must
be  0 (zero).
Figure 2-89 Edge Directions

N NE E SE S SW W NW

Syntax
edge_grow(
layer1 = data_layer,
north = double, //optional
south = double, //optional
east = double, //optional
west = double, //optional
corner_extension = INTERSECTION | NONE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
data layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

north
Optional. Specifies the oversize distance in the northern direction. The default is 0.

Chapter 2: Runset Functions: A - I


edge_grow() 2-295
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

south
Optional. Specifies the oversize distance in the southern direction. The default is 0.

east
Optional. Specifies the oversize distance in the eastern direction. The default is 0.

west
Optional. Specifies the oversize distance in the western direction. The default is 0.

corner_extension
Optional. Specifies how corners are handled when the function causes the adjacent
edges to pull apart. This behavior does not apply to corners where the function causes
the edges to collide. The default is NONE.
❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ NONE. Does not extend corners.
Note:
For edge layers, a corner is a point where the start of exactly one edge is coincident
with the end of exactly one edge, and the edges are not collinear.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


edge_grow() 2-296
IC Validator Reference Manual Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 2-90 shows:
output_polygon = edge_grow(layer1 = blue_edge, east = 4);

Figure 2-90 edge_grow() Function Example

inside outside 4

inside edge layer


output polygon

See Also
edge_shrink()
edge_size()
grow()
move()
shrink()
size()
size_inside()
size_outside()

Chapter 2: Runset Functions: A - I


edge_grow() 2-297
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

edge_shrink()
The edge_shrink() function creates polygons from the input layer that are undersized in
the specified directions by the specified distances. If the north, south, east, and west
arguments are all 0 (zero) then the output is an empty layer.
See the edge_grow() function for information about how edges are classified.

Syntax
edge_shrink(
layer1 = data_layer,
north = double, //optional
south = double, //optional
east = double, //optional
west = double, //optional
corner_extension = INTERSECTION | NONE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the data layer.

north
Optional. Specifies the undersize distance in the northern direction. The default is 0.

south
Optional. Specifies the undersize distance in the southern direction. The default is 0.

east
Optional. Specifies the undersize distance in the eastern direction. The default is 0.

west
Optional. Specifies the undersize distance in the western direction. The default is 0.

corner_extension
Optional. Specifies how corners are handled when the function causes the adjacent
edges to pull apart. This behavior does not apply to corners where the function causes
the edges to collide. The default is NONE.

Chapter 2: Runset Functions: A - I


edge_shrink() 2-298
IC Validator Reference Manual Version N-2017.12-SP2

❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ NONE. Does not extend corners.
Note:
For edge layers, a corner is a point where the start of exactly one edge is coincident
with the end of exactly one edge, and the edges are not collinear.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For this example,
output_polygon = edge_shrink(layer1=edge,north=3, east=1)

Figure 2-91 shows how the new polygon is defined.

Chapter 2: Runset Functions: A - I


edge_shrink() 2-299
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-91 Defining the Result Example


P1

P2
P1'

P2' 1

Figure 2-92 shows the result.


Figure 2-92 edge_shrink() Function Example

edge
output_polygon

Figure 2-93 shows the following:


output_polygon = edge_shrink(layer1 = edge,
north = 3, east = 1),
corner_extension = INTERSECTION);

Figure 2-93 edge_shrink() Function With Corner Extension Example

extension boundary
edge
output_polygon

Chapter 2: Runset Functions: A - I


edge_shrink() 2-300
IC Validator Reference Manual Version N-2017.12-SP2

See Also
edge_grow()
edge_size()
grow()
move()
shrink()
size()
size_inside()
size_outside()

Chapter 2: Runset Functions: A - I


edge_shrink() 2-301
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

edge_size()
The edge_size() function creates rectangles from edges by expanding the edges inward
and outward. If there is neither inward or outward expansion (that is, both values are 0), the
output layer is empty.

Syntax
edge_size(
layer1 = data_layer,
inside = double, //optional
outside = double, //optional
corner_extension = INTERSECTION | NONE, //optional
clip_acute = BISECTOR | ORTHOGONAL | OCTAGONAL | NONE,
//optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
inside_by_factor = double, //optional
outside_by_factor = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

inside
Optional. Specifies the absolute distance that the edge is expanded toward the inside of
the edge. The distance must be a nonnegative value, and a value of 0 specifies no
expansion. The default is 0.
Note:
For lines (an edge that has no direction), edge expansion is meaningful only if both
inward and outward expansion are specified with the same value. The outward
expansion value overwrites the inward expansion value. For example, there is no
edge expansion if the inward expansion value is positive and the outward expansion
value is 0.

outside
Optional. Specifies the absolute distance that the edge is expanded toward the outside
of the edge. The distance must be a nonnegative value, and a value of 0 specifies no
expansion. The default is 0.

Chapter 2: Runset Functions: A - I


edge_size() 2-302
IC Validator Reference Manual Version N-2017.12-SP2

corner_extension
Optional. Specifies how corners are handled when the function causes the adjacent
edges to pull apart. This behavior does not apply to corners where the function causes
the edges to collide. The default is NONE.
❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ NONE. Does not extend corners.
Note:
For edge layers, a corner is a point where the start of exactly one edge is coincident
with the end of exactly one edge, and the edges are not collinear.

clip_acute
Optional. When the corner_extension argument is INTERSECTION, this argument
specifies the type of clipping that occurs when an acute interior angle is oversized, or an
acute exterior angle is undersized. The default is NONE.
❍ BISECTOR. Clips acute angles with an edge perpendicular to the angle bisector at
(sqrt(2) x distance) from the original corner.
❍ ORTHOGONAL. When one edge is orthogonal, clips the angle perpendicular to that
edge at the specified distance from the original corner. Otherwise, clips the angle with
an edge perpendicular to the angle bisector at the specified distance away from the
original corner.
❍ OCTAGONAL. Clips acute angles with two edges at the specified distance from the
original corner, perpendicular to each of the edges forming the corner.
❍ NONE. Does not clip acute angles.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

inside_by_factor
Optional. Specifies the factor of the edge length by which an edge is expanded toward
the inside. The expansion value is calculated for each edge. The inside_by_factor
value must be positive. The default is 0.0; that is, no expansion.
Note:
Both inside_by_factor and inside arguments cannot be nonzero values.

Chapter 2: Runset Functions: A - I


edge_size() 2-303
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

When the value of inside_by_factor argument is nonzero, the corner_extension


argument must be NONE.
The minimum expansion value is one working resolution unit. See the
working_resolution_factor argument of the resolution_options() function for
more information.

outside_by_factor
Optional. Specifies the factor of the edge length by which an edge is expanded toward
the outside. The expansion value is calculated for each edge. The outside_by_factor
value must be positive. The default is 0.0; that is, no expansion.
Note:
Both the outside_by_factor and outside arguments cannot be nonzero values.
When the value of the outside_by_factor argument is nonzero, the
corner_extension argument must be NONE.
The minimum expansion value is one working resolution unit. See the
working_resolution_factor argument of the resolution_options() function for
more information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-94 and Figure 2-95 show the edge_size() function sizing a closed edge chain.
Figure 2-94 shows using the corner_extension argument set to the default, NONE.

Chapter 2: Runset Functions: A - I


edge_size() 2-304
IC Validator Reference Manual Version N-2017.12-SP2

output = edge_size (layer1 = input, inside = 0.25, outside = 0.5);

Figure 2-94 corner_extension = NONE Example


Input edge_size() operation Output

0.25 0.5

Figure 2-95 shows using the corner_extension argument set to INTERSECTION.


output = edge_size (layer1 = input, inside = 0.25, outside = 0.5,
corner_extension = INTERSECTION);

Figure 2-95 corner_extension = INTERSECTION Example


Input edge_size() operation Output

0.25 0.5
Figure 2-96 shows using the inside_by_factor argument. The blue edge is sized outward
by a value of 2 and is sized inward by 10 because the inside_by_factor argument equals
1.0 and the length of the edge is 10.
output = edge_size (layer1 = blue_edge, inside_by_factor = 1.0,
outside = 2.0);

Chapter 2: Runset Functions: A - I


edge_size() 2-305
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-96 inside_by_factor Argument Example

See Also
edge_grow()
edge_shrink()
edge_size_by_property()
extend_edge()
size()
size_inside()
size_outside()

Chapter 2: Runset Functions: A - I


edge_size() 2-306
IC Validator Reference Manual Version N-2017.12-SP2

edge_size_by_property()
The edge_size_by_property() function creates rectangles from edges by expanding
edges inward and outward, extending edges, and shifting edges. Edges are processed
one-by-one with different values. The operations of this function are edge-based; therefore
polygons and violations are converted to edges before manipulations.

Syntax
edge_size_by_property(
layer1 = geometry_layer,
inside_property = "string", //optional
outside_property = "string", //optional
extend_property = "string", //optional
shift_property = "string", //optional
inside_value = double, //optional
outside_value = double, //optional
extend_value = double, //optional
shift_value = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the layer, which can be an error, edge, or polygon layer. The
properties of the input data are attached from preceding functions.
If data of this layer is not an edge, the data is converted into edges. See the Description
section.

inside_property
Optional. Specifies a property with a distance that the edge is expanded toward the
inside of the edge. The distance must be nonnegative, and a value of 0 or negative
specifies no expansion. If input data does not have this property, then the distance is 0.0.

outside_property
Optional. Specifies a property with a distance that the edge is expanded toward the
outside of the edge. The distance must be nonnegative, and a value of 0 or negative
specifies no expansion. If input data does not have this property, then the distance is 0.0.

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-307
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extend_property
Optional. Specifies a property with a distance that the edge is extended in both edge end
directions. The distance can be a positive or negative value, and a value of 0 specifies
no extension. A positive value means extend the edge in both end directions. A negative
value means to shrink the edge in both end directions. If input data does not have this
property, then the distance is 0.0.

shift_property
Optional. Specifies a property with a distance that the edge is shifted in the direction of
edge sizing. The value of 0 specifies no shift. The distance must be nonnegative, and a
value of 0 or negative specifies no shift. If input data does not have this property, then the
distance is 0.0

inside_value
Optional. Specifies a constant distance that the edge is expanded toward the inside of
the edge. The distance must be nonnegative, and a value of 0 or negative specifies no
expansion. The default is 0.0.

outside_value
Optional. Specifies a constant distance that the edge is expanded toward the outside of
the edge. The distance must be nonnegative, and a value of 0 or negative specifies no
expansion. The default is 0.0.

extend_value
Optional. Specifies a constant distance that the edge is extended in both edge end
directions. The distance can be a positive or negative value, and a value of 0 specifies
no extension. A positive value means extend in both edge end directions. A negative
value means shrink in both edge end directions. The default is 0.0.

shift_value
Optional. Specifies a constant distance that the edge is shifted in the direction of edge
sizing. A value of 0 specifies no shift. The distance must be nonnegative, and a value of 0
or negative specifies no shift. The default is 0.0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-308
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Description
In the edge_size_by_property() function,
• All input, including paths and polygons, is converted to a group of edges, and then, each
edge is processed separately.
• The operations are edge-based; therefore polygons and violations are converted to
edges before manipulations.
• The inside_property and inside_value arguments cannot be used together.
• The outside_property and outside_value arguments cannot be used together.
• The extend_property and extend_value arguments cannot be used together.
• The shift_property and shift_value arguments cannot be used together.
• At least one inward edge expansion and outward edge expansion is used. That is,
extension and shift cannot be used standalone, without edge expansions.
• An edge can be sized only in one direction if a shift option is used. Either an inside or an
outside option must be specified, but not both at the same time.
For lines (an edge that has no direction), edge expansion is meaningful only if both
inward and outward expansion are specified with the same value. The outward
expansion value overwrites the inward expansion value. For example, there is no edge
expansion if the inward expansion value is positive and the outward expansion value is
0. Shift operations are meaningless.
• If the precision of a value is larger than the precision of the internal resolution, then the
distance is rounded.
• Edges with a length of 0 (that is, a point) are ignored.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-309
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Sizing a Closed Edge Chain


Figure 2-97 shows using the edge_size() function for inward and outward edge expansion.
output = edge_size_by_property(layer1 = input, inside_value = 0.25,
outside_value = 0.5);

Figure 2-97 Sizing a Closed Edge Chain


Input edge_size_by_property() operation Output

0.25 0.5

Sizing and Extension of Edges


Figure 2-98 shows examples of sizing and extension of edges.
Figure (a):
output = edge_size_by_property(input, outside_value = 0.003,
extend_value = 0.004);

Figure (b):
output = edge_size_by_property(input, outside_value = 0.003,
extend_value = -0.002,
shift_value = 0.001);

Figure (c):
output = edge_size_by_property(input, inside_value = 0.003,
extend_value = -0.002);

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-310
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-98 Using the Inside_value, outside_value, and extend_value Arguments

(a) (b) (c)

input output

Using the Properties Arguments


Figure 2-99 shows an example of using the properties arguments.
attach_prop : function (void) returning void
{
ce = df_get_current_data();
val = df_error_distance(ce);
df_save_properties(ce, {{"Oprop", val/3}, {"Sprop", 0.001},
{"Eprop", 0.003}});
df_save_data(ce);
}

Cyan = external1_error(gray, <= 0.1, extension = NONE);

Cyan_p = drc_features_error (
primary_layer = Cyan,
secondary_layers = {"prop" => Cyan},
drc_function = attach_prop,
output_from_layer = Cyan
);

red = edge_size_by_property(Cyan_p, outside_property = "Oprop",


extend_property = "Eprop");

Figure 2-99 Using Properties Arguments

input output

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-311
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
edge_size()
extend_edge()
move()
move_edge()

Chapter 2: Runset Functions: A - I


edge_size_by_property() 2-312
IC Validator Reference Manual Version N-2017.12-SP2

edges()
The edges() function creates edges in the top cell using specified coordinates. The function
can generate multiple edges. Intersecting edges are merged.

Syntax
edges(
coordinates = {{{x = double, y = double}, ...}, ...},
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
coordinates
Required. Lists xy coordinate pairs. These coordinates are scaled by the
magnification_factor argument of the library() function. Each list must specify at
least two coordinates.
Note:
Edges with zero length are ignored.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
e1 = edges({
{{0,0}, {2.5,0}}, // a horizontal line
{{0,5}, {0,1.5}, {1.5, 1.5}}, // an L shape
{{5,5}, {5,5}} // ignored
});

Chapter 2: Runset Functions: A - I


edges() 2-313
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
polygons()

Chapter 2: Runset Functions: A - I


edges() 2-314
IC Validator Reference Manual Version N-2017.12-SP2

edtext_file()
The edtext_file() function defines an Edtext file handle. This handle is used by the
text_layer_items argument of the text_net() function.
Limitation:
The edtext_file() function cannot be called more than one time with the same file
argument. The result, however, can be used more than one time.

Syntax
edtext_file(
file = "string"
);

Returns
edtext_file_handle

Arguments
file
Required. Specifies the Edtext output file name. See the text_net() function for more
information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
text_net()

Chapter 2: Runset Functions: A - I


edtext_file() 2-315
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

eerc_analyze_netlist()
The eerc_analyze_netlist() function executes an EERC Python remote function for
netlist processing. Use this function to accomplish either or both of the following operations:
• Preprocess an input netlist and save the resulting netlist for additional processing in
another eerc_analyze_netlist() remote block.
Preprocessing often includes setting useful tags, possibly propagating them throughout
the netlist, and can also include saving netlist attributes. This type of preprocessing is
useful when multiple rules can take advantage of these operations. You can also use
preprocessing to select a section of circuitry and copy it into a holding cell for further
processing. The resulting netlist has only the holding cell, which accelerates further
processing of this circuitry.
• Perform netlist processing to generate shapes associated with certain netlist objects.
You can use netlist processing to select circuitry of interest. You can save the associated
nets and devices to the results database, from which you can generate the shapes
associated with these netlist objects for further processing in the geometry engine. See
the EERC create layer functions (eerc_create_device_layer(),
eerc_create_device_list_layer(), and eerc_create_net_layer()).

The eerc_analyze_netlist() function also performs netlist processing to check electrical


rules and report errors or generate netlist statistics. The utility functions that you can use in
the Python remote block called by eerc_analyze_netlist() offer a set of netlist
processing capabilities. In addition, all of the features of the Python language are available,
including writing files with a format that you specify.
Most of the runset code for netlist processing is in the remote blocks called by the
eerc_analyze_netlist() functions. The remote block is written in Python and exists in
separate Python module files. The Web is a good source for Python language reference
material. For information about the EERC utility functions, see “EERC Utility Functions” on
page 4-303.

Syntax
eerc_analyze_netlist(
module_file = "string",
function_expression = "string",
input_netlist_db = eerc_netlist_database,
violation_definitions = {{"string" => "string"}, ...}, //optional
execution_dependencies = {
{netlist_db = eerc_netlist_database,
results_db = eerc_results_database},
...}, //optional
disable_pruning = true | false //optional
);

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-316
IC Validator Reference Manual Version N-2017.12-SP2

Returns
The output is a structure of databases or void:
eerc_analysis_s : newtype struct of {
netlist_db : eerc_netlist_database;
results_db : eerc_results_database;
violations : violation_table_h;
};

netlist_db
The netlist saved in the function_expression Python remote block function by the
utility command ndb_save_netlist(). This netlist can be used in any function that
takes an eerc_netlist_database as input, such as another
eerc_analyze_netlist() function.

results_db
The database that holds netlist objects (nets or devices) saved in the
function_expression Python remote block function. This database is used in the
EERC create layer functions (eerc_create_device_layer(),
eerc_create_device_list_layer(), and eerc_create_net_layer()) to generate
the shapes associated with the saved netlist objects.

violations
Returns a hash of rule names to violation objects. You specify the rule names in the
violation_definitions argument. For more information about violations, see the
“Violation Block” and “Violation Variables” sections in the IC Validator User Guide.

Arguments
module_file
Required. Specifies the file name of the Python module that holds the definition of the
Python remote function. If the Python module file is not in the current working directory,
you can use the python_validate() function to resolve any search paths specified on
the IC Validator command line.

function_expression
Required. Specifies the Python function to be executed by eerc_analyze_netlist().
This string should include the Python syntax for calling the Python remote function,
including any arguments that should be passed to it.

input_netlist_db
Required. Specifies the netlist to be passed to the Python remote function for processing.
This netlist is returned by the eerc_setup() function or a previous
eerc_analyze_netlist() function.

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-317
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

violation_definitions
Optional. Specifies additional rules in a string-to-string hash of individual rule names to
their corresponding comments.
An eerc_analyze_netlist() function can check multiple rules in a single Python
remote function. If the eerc_analyze_netlist() function is enclosed in an IC Validator
error structure, this structure defines the default rule checked in the Python remote
function. The rule names specified by this argument should be used inside the Python
remote function when issuing errors.

execution_dependencies
Optional. Specifies any previous eerc_analyze_netlist() functions that should
complete before this function is executed. Use this argument when the IC Validator tool
is running in distributed processing mode if the Python remote function must perform file
I/O after previous eerc_analyze_netlist() functions.
This option is not necessary if the Python remote function does not perform any file I/O.

disable_pruning
Optional. Controls whether this eerc_analyze_netlist() function should be
automatically removed from the IC Validator execution tree if all of its rules have been
turned off by IC Validator selectable rules command-line options. The default is true.
The IC Validator tool can determine when a particular function in the runset can be
pruned from the execution tree by checking its dependencies. However, the tool cannot
determine if a Python remote function is doing any file I/O that should be executed even
if all of the rules associated with this eerc_analyze_netlist() function have been
turned off.
Setting this option to true protects this eerc_analyze_netlist() function from being
removed. If no critical file I/O is performed in the remote block, then setting this option to
false allows the IC Validator run to be more efficient.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-318
IC Validator Reference Manual Version N-2017.12-SP2

Examples
1. Use a preprocessing step to assign supply tags and propagate them throughout the
netlist for use in later checks.
// The Python prep() function assigns tags for each supply and
// propagates those tags ... the resulting netlist is saved
// for further processing
prep_results = eerc_analyze_netlist("prep.py", "prep()",
orig_netlist_db);

// Obtain the saved netlist from the returned data structure


prep_netlist_db = prep_results.netlist_db;

// The first netlist check uses the preprocessed netlist


eerc_analyze_netlist("check.py", "check1()", prep_netlist_db);

2. Identify resistors used for ESD protection and get their body shapes for some spacing
checks.
// Identify resistors used for ESD protection and save them to the
// results database
esd_res_results = eerc_analyze_netlist("esd.py", "esd_res()",
layout_db);

// Obtain the results database handle from the returned data structure
esd_res_db = esd_res_results.results_db;

// Get the resistor body shapes for later spacing checks


esd_res_bodies = eerc_create_device_layer(esd_res_db, device_db);

3. Report any nets with a single connection as errors.


// Identify single-connect nets and report them as errors
net_1c_err @= { @ "Net with Single Connection";
eerc_analyze_netlist("check.py", "net_1c()",
layout_db);
};

4. Report nets with a single connection and nets with no path to power or ground.
// Use a single Python remote block to check two rules:
// 1. Report nets with a single connection
// 2. Report nets with no path to power or ground
net_errs @= { @ "Net with Single Connection";
eerc_analyze_netlist(
module_file = "check.py",
function_expression = "check_nets()",
input_netlist_db = layout_db,
violation_definitions = {
"npg" => "Net with No Path to Power or Ground"
}
);
};

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-319
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

5. Preprocess the input layout extracted netlist to tag the supply nets and propagate those
tags. Then, save the supply nets so the metal1 layer associated with them can be
checked.
// Preprocess the netlist to assign tags to the supply nets
// Propagate the supply tags
// Save the supply nets so the metal1 associated with them can be ////
// generated
prep_results = eerc_analyze_netlist("prep.py", "prep()",
orig_netlist_db);

// Get the resulting preprocessed netlist for further checking


prep_netlist_db = prep_results.netlist_db;

// Get the results database so that the supply metal1 can be generated
supply_results = prep_results.results_db;

// Get the metal1 associated with the supply nets


supply_met1 = eerc_create_net_layer(supply_results, device_db,
{METAL1});

6. Report any cell instances that do not have a direct connection to power or ground. Then,
check to determine whether the violations returned by the eerc_analyze_netlist()
function are empty.
// Preprocess the netlist to assign tags to the power and ground nets
// and propagate these tags.
cell_prep_results = eerc_analyze_netlist("cell_check_prep.py",
"cell_check_prep()",
layout_db);

// Get the resulting preprocessed netlist for further checking


cell_prep_db = cell_prep_results.netlist_db;

// Use a Python remote block to check the rule:


// 1. Report any cell instances with no direct connection to power or
// ground
cell_check_results = eerc_analyze_netlist(
module_file = "cell_check.py",
function_expression = "cell_check()",
input_netlist_db = cell_prep_db,
violation_definitions = {
"cpg" => "Cell instance with no direct path to Power or Ground"
}
);

// Get the returned violation to check whether it is empty


eerc_violations = cell_check_results.violations;

if (violation_empty(eerc_violations["cpg"])) {
note("No cell instances were found in error!")
);

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-320
IC Validator Reference Manual Version N-2017.12-SP2

See Also
eerc_create_device_layer()
eerc_create_device_list_layer()
eerc_create_net_layer()
eerc_setup()
python_validate()

Chapter 2: Runset Functions: A - I


eerc_analyze_netlist() 2-321
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

eerc_create_device_layer()
The eerc_create_device_layer() function returns the body shapes for all of the devices
in the results database returned by an eerc_analyze_netlist() function. This includes all
of the devices that you saved in the results database by using the save argument in the
ndb_find_device() or ndb_save_top_cell_device() utility function.

When you save the devices by using an ndb_find_device() utility function, the body
shapes appear in the hierarchy. When you save the devices by using an
ndb_save_top_cell_device() utility function, the body shapes are flat in the top cell.

Syntax
eerc_create_device_layer(
report_db = eerc_results_database,
device_db = device_database
);

Returns
polygon layer or error result

Arguments
report_db
Required. Specifies the results database returned by an eerc_analyze_netlist()
function. This database is an element in the data structure returned by the
eerc_analyze_netlist() function.

device_db
Required. Specifies the device database returned by the extract_devices() function.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
In this example, the IC Validator tool identifies the NMOS devices in which the GATE pin is
tied to ground, and then generates the gate pin shapes for those devices.

Chapter 2: Runset Functions: A - I


eerc_create_device_layer() 2-322
IC Validator Reference Manual Version N-2017.12-SP2

The Python code is in check.py:


from ICV.eerc import *

def check_gates():
nldb = ndb_get_netlist()

ground_nets = ndb_get_ground_net_names(nldb)
ndb_find_net(nldb, name_check=ground_nets, add_tags=["ground"])

ndb_find_device(nldb, NMOS,
pins=[ndb_pin_check(["GATE"],tag_check="ground")],
save=True)

The PXL code is in eerc.rs:


// Get the input layout extracted netlist.
...
device_db = extract_devices(my_devices);
layout_db = netlist(device_db)

// Run netlist processing to save NMOS devices with a grounded gate


nmos_results = eerc_analyze_netlist("check.py", "check_gates()",
layout_db);

// Get the results database


nmos_db = nmos_results.results_db;

// Get the gate shapes for all grounded gates


grounded_gates = eerc_create_device_layer(nmos_db, device_db);

See Also
eerc_analyze_netlist()
eerc_create_device_list_layer()
eerc_create_net_layer()
eerc_setup()
extract_devices()

Chapter 2: Runset Functions: A - I


eerc_create_device_layer() 2-323
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

eerc_create_device_list_layer()
The eerc_create_device_list_layer() function returns either the body shapes or
extents of each group of devices in the results database returned by an
eerc_analyze_netlist() function. This includes all of the devices that you saved in the
results database by using the ndb_save_top_cell_device_list() utility function.
Each call to ndb_save_top_cell_device_list() adds a group of devices to the results
database. The eerc_create_device_list_layer() function returns the device body
shapes or extent shapes for all of these groups. Shapes for devices that you save by using
the ndb_find_device() hierarchical search function are not returned.
The body shapes or extent shapes are flat in the top cell. If you request extent shapes, each
shape represents the minimum enclosing rectangle of the device body shapes for the
devices included in a single ndb_save_top_cell_device_list() function call. Each call of
this function executed in a Python remote block by the eerc_analyze_netlist() function
produces a single extents shape.
If a group of devices in the results database is identical to another group, only unique body
shapes are returned. However, the IC Validator tool stops executing if extent shapes of two
groups overlap each other exactly.

Syntax
eerc_create_device_list_layer(
report_db = eerc_results_database,
device_db = device_database,
output_type = BODY_POLYGONS | BODY_EXTENTS //optional
);

Returns
polygon layer or error result

Arguments
report_db
Required. Specifies the results database returned by an eerc_analyze_netlist()
function. This database is an element in the data structure returned by the
eerc_analyze_netlist() function.

device_db
Required. Specifies the device database returned by the extract_devices() function.

output_type
Optional. Specifies the data that you want to write to the output layer. The default is
BODY_POLYGONS.

Chapter 2: Runset Functions: A - I


eerc_create_device_list_layer() 2-324
IC Validator Reference Manual Version N-2017.12-SP2

❍ BODY_POLYGONS. Writes the body shapes to the output layer.

❍ BODY_EXTENTS. Writes the minimum enclosing rectangle for each device group to the
output layer.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
In this example, the IC Validator tool identifies inverter circuits, generates both of the gate
shapes for the circuit MOSFETs, and creates a minimum bounding box around each circuit.
The Python code is in check.py:
from ICV.eerc import *

def check_inv():
# identify inverter circuits and cache them
...
for mos in ndb_devices(cache_cell):
# collect the MOS devices in one circuit and save as a group
...
ndb_save_top_cell_device_list(mos_devices)

Chapter 2: Runset Functions: A - I


eerc_create_device_list_layer() 2-325
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The PXL code is in eerc.rs:


// Get the input layout extracted netlist.
...
device_db = extract_devices(my_devices);
layout_db = netlist(device_db)

// Run netlist processing to identify and save inverter circuit devices


inv_results = eerc_analyze_netlist("check.py", "check_inv()", layout_db);

// Get the results database


inv_db = inv_results.results_db;

// Get the MOS body shapes associated with inverter circuits


inv_mos_gates = eerc_create_device_list_layer(inv_db, device_db,
BODY_POLYGONS);

// Get the minimum enclosing rectangle of each inverter circuit


inv_mos_extents = eerc_create_device_list_layer(inv_db, device_db,
BODY_EXTENTS);

if(!layer_empty(inv_mos_extents))
{
note("Layer inv_mos_extents is not empty");
}

if(!layer_empty(inv_mos_gates))
{
note("Layer inv_mos_gates is not empty");
}

See Also
eerc_analyze_netlist()
eerc_create_device_layer()
eerc_create_net_layer()
eerc_setup()
extract_devices()

Chapter 2: Runset Functions: A - I


eerc_create_device_list_layer() 2-326
IC Validator Reference Manual Version N-2017.12-SP2

eerc_create_net_layer()
The eerc_create_net_layer() function returns the shapes from the specified list of layers
for all of the nets in the results database returned by an eerc_analyze_netlist() function.
This includes all of the nets that you saved in the results database by using the save
argument in the ndb_find_net() or ndb_save_top_cell_net() utility function.
Note:
The list of layers that you specify to create shapes must be contained in the connect
database.
When you save the nets by using an ndb_find_net() utility function, the shapes appear in
the hierarchy. When you save the nets by using an ndb_save_top_cell_net() utility
function, the shapes are flat in the top cell.

Syntax
eerc_create_net_layer(
report_db = eerc_results_database,
device_db = device_database,
output_from_layers = {polygon_layer, ...} //optional
);

Returns
polygon layer or error result

Arguments
report_db
Required. Specifies the results database in the data structure returned by an
eerc_analyze_netlist() function.

device_db
Required. Specifies the device database returned by the extract_devices() function.

output_from_layers
Optional. Specifies the list of layers from which shapes should be drawn for the nets
contained in the results database. If you do not specify any layers, the shapes of all the
layers in the connect database are drawn for the nets in the results database.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


eerc_create_net_layer() 2-327
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
This example shows how to get all of the metal1 layers associated with the VDD net.
The Python code is in check.py
from ICV.eerc import *

def vdd_m1():
nldb = ndb_get_netlist()

# save the VDD net


ndb_find_net(nldb, name_check=["VDD"], save=True)

The PXL code is in eerc.rs:


// Get the input layout extracted netlist.
...
device_db = extract_devices(my_devices);
layout_db = netlist(device_db)
...

// Use EERC to identify the VDD net


vdd_results = eerc_analyze_netlist("check.py", "vdd_m1()", layout_db);

// Get the results database


vdd_db = vdd_results.results_db;

// Get the metal1 associated with the VDD net


vdd_m1 = eerc_create_net_layer(vdd_db, device_db, {MET1});

if(!layer_empty(vdd_m1))
{
note("Layer vdd_m1 is not empty");
}

See Also
eerc_analyze_netlist()
eerc_create_device_layer()
eerc_create_device_list_layer()
eerc_setup()
extract_devices()

Chapter 2: Runset Functions: A - I


eerc_create_net_layer() 2-328
IC Validator Reference Manual Version N-2017.12-SP2

eerc_import_net_properties_from_file()
The eerc_import_net_properties_from_file() function reads a file from disk. The file
contains a list of net names, with one name on each line. Each column in the file represents
the name or value of a double property that should be assigned to a net.
The first line in the file is a header. This header must be the first line in the file. Comment
lines are not allowed before the header line.
• The first column in the header should contain the keyword NetPath.
• Each subsequent column should contain the name of a property.
All remaining noncomment lines contain a net name and the properties associated with the
net.
• The first column contains the net name, with reference to the top cell. The name can be
hierarchical.
• All of the other columns represent a double value; one for each property name.
• If a property value is missing on a line, each subsequent property gets the last provided
value.
• Use double slashes (//) to indicate a comment on a single line.

The following example shows the format of a net double property file:
NetPath volt control
IO 3.3 1
DVDD 1.8 2
DVSS 0.0
AVDD 3.3
AVSS 0.0 3
X1/X24/A 0.8 4

In this example, each net gets the following properties:


• IO -> volt=3.3, control=1

• DVDD -> volt=1.8, control=2

• DVSS -> volt=0.0, control=0.0

• AVDD -> volt=3.3, control=3.3

• AVSS -> volt=0.0, control=3

• X1/X24/A -> volt=0.8, control=4

Chapter 2: Runset Functions: A - I


eerc_import_net_properties_from_file() 2-329
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The file can also be cell based, where the first column is the cell name, the second column
is the net name with relation to the cell listed in the CellName column, and the remaining
columns give the property values. When cell-based names are used, the header line must
use the keyword CellName in the first column.
All of the nets listed in relation to the cell receive the property for all placements of that cell:
CellName NetPath volt control
lowCell IO 3.3 1
topCell DVDD 1.8 2
topCell DVSS 0.0 2
otherCell AVDD 3.3 3
otherCell AVSS 0.0 3
lowCell X1/X24/A 0.8 4

You should specify the net names with respect to the input netlist. However, if the input
netlist is extracted from the layout as part of an LVS run, and the design compares cleanly,
you can specify schematic net names if you provide a cross-reference database.
The net names do not have to be top-of-net names (the names of the nets at their highest
point in the hierarchy). The property values are applied to the entire net throughout its
hierarchy. If a single hierarchical net has conflicting property values (multiple lines that are
present for a single net, each one using a name at a different hierarchical level), the
IC Validator tool uses the value associated with the net at the highest hierarchical level.

Syntax
eerc_import_net_properties_from_file(
netlist_db = eerc_netlist_database,
property_file = "string",
xref_db = xref_database_handle //optional
);

Returns
eerc_netlist_database

Arguments
netlist_db
Required. Specifies the input netlist. This must come from an eerc_setup() function or
an eerc_analyze_netlist() function.

property_file
Required. Specifies the name of the file that contains the net double property definitions.
The net names in this file should correspond with net names in the input netlist or should
cross-reference names in the input netlist.

Chapter 2: Runset Functions: A - I


eerc_import_net_properties_from_file() 2-330
IC Validator Reference Manual Version N-2017.12-SP2

xref_db
Optional. Specifies the cross-reference database produced by an IC Validator LVS run.
The compare must be clean to provide a complete cross-reference database.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
This example shows a net double property file with a single “volt” property.
NetPath volt
IO 3.3
DVDD 1.8
DVSS 0.0
AVDD 3.3
AVSS 0.0
X1/X24/A 0.8

See Also
eerc_analyze_netlist()
eerc_setup()
eerc_write_net_missing_property_file()
eerc_write_net_property_file()
eerc_write_vue_debug_database()

Chapter 2: Runset Functions: A - I


eerc_import_net_properties_from_file() 2-331
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

eerc_setup()
The eerc_setup() function reads a netlist from disk, or from a layout extraction, and
prepares it for use in an EERC remote block through the eerc_analyze_netlist()
function. The eerc_setup() function can be called only one time in a runset. The
IC Validator tool uses this function to define the reference netlist that the IC Validator VUE
tool uses to report and debug netlist errors.
The eerc_setup() function provides two arguments for specifying the input netlist file
handle, schematic_netlist and layout_netlist. Only one of these netlist file handles
can be specified. Use the argument for the type of netlist (schematic or layout) that you
specify with the netlist_source argument.
The schematic_netlist argument allows the IC Validator VUE tool to connect to a
schematic-capture tool for cross-probing. If you need to use this cross-probing capability,
you must set the netlist_source argument to SCHEMATIC. This setting allows the IC
Validator tool to map the instance names in the netlist to the names used in the
schematic-capture tool. For more information about using this flow, contact your Synopsys
representative.
Note:
For a netlist domain check that does not include any layout input or require
schematic-tool cross-probing capabilities, the input netlist file handle that is passed to the
eerc_setup() function is returned using either the read_layout_netlist() or the
schematic() function.
Using either function does not affect the netlist processing capabilities in a remote
Python block called by the eerc_analyze_netlist() function.
SPICE/CDL type netlists do not contain implant type information for devices like MOS and
bipolar transistors. Using this implant information is often helpful in netlist processing. For
example, if no further information is provided when a SPICE/CDL type netlist is read into
EERC for processing, all MOS transistor devices have the general MOSFET type. If you
want to know which of these devices are NMOS and which devices are PMOS, you must
provide this information for EERC.
You can use either of the following methods to pass implant information to EERC:
• Pass the compare matrix to the eerc_setup() function. EERC can determine the
implant types for all devices from information contained in the matrix. Use this method
when netlist processing is part of an LVS runset.
• Use the device_type_setting argument to define implant types explicitly for the MOS,
bipolar, or diode devices.

In addition to the implant types, a SPICE/CDL type netlist often represents devices by using
empty subcircuits. In this case, EERC does not recognize the instances as devices. Both the

Chapter 2: Runset Functions: A - I


eerc_setup() 2-332
IC Validator Reference Manual Version N-2017.12-SP2

compare-state method and explicit definition through the device_type_setting argument


can resolve this. Most runsets require one of these methods to be used. However, if the
netlist processing that you define does not need any information about the implant types for
empty subcircuit devices, you do not need to use either of these methods.

Syntax
eerc_setup(
netlist_source = SCHEMATIC | LAYOUT,
schematic_netlist = schematic_netlist_file_handle,
layout_netlist = layout_netlist_file_handle,
compare_state = compare_state, //optional
device_type_setting = {
mos = {nmos = {"string", ...},
pmos = {"string", ...},
undefined_implant_type = ALLOW | ABORT
},
bjt = {npn = {"string", ...},
pnp = {"string", ...},
undefined_implant_type = ALLOW | ABORT
},
diode = {np = {"string", ...},
pn = {"string", ...},
undefined_implant_type = ALLOW | ABORT
},
subckt = {
subckt_device_type = {
{model_names = {"string", ...},
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | MOSFET |
JUNCTION_DIODE | BIPOLAR_TRANSISTOR},
...},
empty_subckt = EMPTY_CELL | ABORT |
GENERIC_DEVICE}
}, //optional
top_cell = "string", //optional
power_nets = {"string", ...}, //optional
ground_nets = {"string", ...} //optional
);

Returns
EERC netlist database

Arguments
netlist_source
Required. Specifies whether the input netlist is from a schematic or a layout extraction. If
you need to cross-probe the results in a schematic-capture tool, set this option to
SCHEMATIC.

Chapter 2: Runset Functions: A - I


eerc_setup() 2-333
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

schematic_netlist
Optional. Specifies the schematic netlist file handle returned by the schematic()
function. Use this argument when you set the netlist_source argument to SCHEMATIC.
You must use either this argument or the layout_netlist argument.

layout_netlist
Optional. Specifies the layout netlist file handle returned by the
read_layout_netlist() or netlist() function. Use this argument when you set the
netlist_source argument to LAYOUT. You must use either this argument or the
schematic_netlist argument.

compare_state
Optional. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.
This argument is used to pass device information from the LVS runset into EERC, such
as the implant types of MOS devices and the device types of any devices that are
included as empty subcircuits in the netlist.

device_type_setting
Optional. Specifies the implant types of MOS, bipolar, and diode devices and the device
types of any devices that are included as empty subcircuits in the netlist.
if you do not specify this argument or the compare_state argument, all MOS devices
have the MOSFET type with no implant specification (NMOS or PMOS), all bipolar
devices have the BIPOLAR_TRANSISTOR type with no implant specification (NPN or
PNP), and all diode devices have the JUNCTION_DIODE type with no implant
specification (NP or PN).
❍ mos. Optional. Specifies the MOSFET devices to be assigned the NMOS or PMOS
implant type.
■ nmos. Specifies a list of strings that represent the model names of the MOS
devices to be assigned the NMOS implant type. All MOSFET device instances
that have one of these model names are assigned an NMOS device type.
■ pmos. Specifies a list of strings that represent the model names of the MOS
devices to be assigned the PMOS implant type. All MOSFET device instances
that have one of these model names are assigned a PMOS device type.
■ undefined_implant_type. Specifies how the IC Validator tool treats MOSFET
devices that are not assigned an implant type. The default is ALLOW, which means
the tool assigns the MOSFET device type to the device. If you specify ABORT, tool
execution stops.

Chapter 2: Runset Functions: A - I


eerc_setup() 2-334
IC Validator Reference Manual Version N-2017.12-SP2

❍ bjt. Optional. Specifies the bipolar devices to be assigned the NPN or PNP implant
type.
■ npn. Specifies a list of strings that represent the model names of the bipolar
devices to be assigned the NPN implant type. All bipolar device instances that
have one of these model names are assigned an NPN device type.
■ pnp. Specifies a list of strings that represent the model names of the bipolar
devices to be assigned the PNP implant type. All bipolar device instances that
have one of these model names are assigned a PNP device type.
■ undefined_implant_type. Specifies how the IC Validator tool treats bipolar
devices that are not assigned an implant type. The default is ALLOW, which means
the tool assigns the BIPOLAR_TRANSISTOR device type to the device. If you
specify ABORT, tool execution stops.
❍ diode. Optional. Specifies the diode devices to be assigned th NP or PN implant
type.
■ np. Specifies a list of strings that represent the model names of the diode devices
to be assigned the NP implant type. All diode device instances that have one of
these model names are assigned an NP device type.
■ pn. Specifies a list of strings that represent the model names of the diode devices
to be assigned the PN implant type. All diode device instances that have one of
these model names are assigned an PN device type.
■ undefined_implant_type. Specifies how the IC Validator tool treats a diode
devices that are not assigned an implant type. The default is ALLOW, which means
the tool assigns the JUNCTION_DIODE device type to the device. If you specify
ABORT, tool execution stops.

❍ subckt. Optional. Assigns device types to devices that are netlisted as subcircuits.

■ subckt_device_type. Specifies the list of subcircuits and the device type to


which they are mapped.
- model_names. Specifies a list of strings that represent the subcircuit names.

- device_type. Specifies the device type to be assigned to the subcircuits


named in the model_names list.
■ empty_subckt. Specifies how the IC Validator tool treats empty subcircuit devices
that are not assigned a device type. The default is GENERIC_DEVICE, which means
the tool maps the empty subcircuit to the GENERIC device type. If you specify
EMPTY_CELL, the tool does not assign a device type to an empty subcircuit device.
If you specify ABORT, tool execution stops.

Chapter 2: Runset Functions: A - I


eerc_setup() 2-335
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

top_cell
Optional. Specifies the name of the top cell to be read from the input netlist.

power_nets
Optional. Specifies the possible power net names. You can include wildcards. The
eerc_setup() function finds any nets in the top block with names that match a string in
this list, and makes them available to the Python remote block through the
ndb_get_power_net_names() utility function.

ground_nets
Optional. Specifies the possible ground net names. you can include wildcards. The
eerc_setup() function finds any nets in the top block with names that match a string in
this list, and makes them available to the Python remote block through the
ndb_get_ground_net_names() utility function.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
1. Read an existing netlist from disk without mapping any devices to the different implant
types or resolving devices represented by empty subcircuits. The source of the netlist
does not matter because the results are not used to cross-probe to a schematic-capture
tool.
lay_netlist_db = read_layout_netlist(
cell = "test_cell",
layout_file = {{"./test.cdl", format=SPICE}}
);

eerc_netlist_db = eerc_setup(
netlist_source = LAYOUT,
layout_netlist = lay_netlist_db
);

eerc_analyze_netlist("check.py", "check_mos()", eerc_netlist_db);

2. Read the same netlist from disk, but this time define MOS transistor implant types and
map some resistors, represented as empty subcircuits in the netlist. to the proper type.

Chapter 2: Runset Functions: A - I


eerc_setup() 2-336
IC Validator Reference Manual Version N-2017.12-SP2

nmos_models : list of string = {"nch","n18","mn25"};


pmos_models : list of string = {"pch","p18","mp25","mesd"};
res_models : list of string = {"rpoly","rnp","rpp"};

lay_netlist_db = read_layout_netlist(
cell = "test_cell",
layout_file = {{"./test.cdl", format=SPICE}}
);

eerc_netlist_db = eerc_setup(
netlist_source = LAYOUT,
layout_netlist = lay_netlist_db,
device_type_setting = {
mos = {
nmos = nmos_models,
pmos = pmos_models,
undefined_implant_type = ABORT
},
subckt = {{{res_models, RESISTOR}}}
}
);

eerc_analyze_netlist("check.py", "check_mos()", eerc_netlist_db);

3. Read a netlist from the layout extraction portion of an LVS runset, and use the compare
matrix to define device implant types and properly map devices represented as empty
subcircuits. In addition, use the power and ground name definitions from the LVS portion
of the runset.
power_supplies : list of string = {"VDD*", "AVD*", "DVD*",
"!DVDD_pll"};
ground_supplies : list of string = {"VSS*", "*GND*"};

#include "lvs.rs"

/* the above LVS runset includes the following commands:


cmp_matrix = init_compare_matrix();
lay_db = netlist(device_db=device_db, precision=6);
*/

orig_netlist_db = eerc_setup(
netlist_source = LAYOUT,
layout_netlist = lay_db,
compare_state = cmp_matrix,
power_nets = power_supplies,
ground_nets = ground_supplies
);

eerc_analyze_netlist("check.py", "check_mos()", orig_netlist_db);

See Also
eerc_analyze_netlist()

Chapter 2: Runset Functions: A - I


eerc_setup() 2-337
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

init_compare_matrix()
netlist()
read_layout_netlist()
schematic()

Chapter 2: Runset Functions: A - I


eerc_setup() 2-338
IC Validator Reference Manual Version N-2017.12-SP2

eerc_write_net_missing_property_file()
The eerc_write_net_missing_property_file() function writes an output file containing
the instance-based net names of the nets that did not have properties propagated to them.
The IC Validator tool writes a default value, set in this function, for the net properties and
prints it along with the net.
For example, if a net is floating and a property is never propagated to it, this option prints the
floating net and a default value for the property to the output file. The output file is similar to
the file produced by the eerc_write_net_property_file() function.

Syntax
eerc_write_net_missing_property_file(
netlist_db = eerc_netlist_database,
file_name = "string",
net_properties = {
{"string", double},
...},
tag_check = {
any_of = {"string", ...},
all_of = {"string", ...},
none_of = {"string", ...}
} //optional
);

Returns
void

Arguments
netlist_db
Required. Specifies the input netlist.

file_name
Required. Specifies the name of the output file to be produced. This file contain the
instance-based net names and the properties specified in the net_properties
argument.

net_properties
Required. Specifies the names and values of the properties to be written, with the net, to
the output file. A property is written only for the nets that do not have the property
assigned to them.

Chapter 2: Runset Functions: A - I


eerc_write_net_missing_property_file() 2-339
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

tag_check
Optional. Specifies a tag constraint used to designate which nets are written to the output
file. When this option is used, only nets that meet the tag specification are written to the
output file.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
In this example, the IC Validator tool writes the vmax and vmin properties in the
myOutputProps_floatingNets.txt file on any nets that do not have values for these properties
in the eercNetlist netlist. Each of these properties should have a value of 0.0.
eerc_write_net_missing_property_file(
netlist_db = eercNetlist,
file_name = "myOutputProps_floatingNets.txt",
net_properties = {
{"vmax", 0.0},
{"vmin", 0.0}
}
);

The output file might look like this:


Net_Name vmax vmin
floatingNet1 0.0 0.0
X2/X3/net 0.0 0.0

See Also
eerc_analyze_netlist()
eerc_import_net_properties_from_file()
eerc_setup()
eerc_write_net_property_file()
eerc_write_vue_debug_database()

Chapter 2: Runset Functions: A - I


eerc_write_net_missing_property_file() 2-340
IC Validator Reference Manual Version N-2017.12-SP2

eerc_write_net_property_file()
The eerc_write_net_property_file() function writes an output file of instance-based
net names and associated propagated properties in the same format as the file used for the
eerc_import_net_properties_from_file() function. However, the output file written by
the eerc_write_net_property_file() function references every net from the top block.
The xref_to_double_property() function can use this file later in an IC Validator
geometry-based flow.

Syntax
eerc_write_net_property_file(
netlist_db = eerc_netlist_database,
file_name = "string",
net_properties = {"string", ...},
tag_check = {
any_of = {"string", ...},
all_of = {"string", ...},
none_of = {"string", ...}
} //optional
);

Returns
void

Arguments
netlist_db
Required. Specifies the input netlist.

file_name
Required. Specifies the name of the output file to be produced. This file contains the
instance-based net names and the properties specified in the net_properties
argument.

net_properties
Required. Specifies the list of property names that the function outputs for each net in the
output file.

tag_check
Optional. Specifies the tag conditions used to designate which nets the function writes to
the output file. When this option is used, only nets that meet the tag specification are
written to the output file.

Chapter 2: Runset Functions: A - I


eerc_write_net_property_file() 2-341
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
In this example, the IC Validator tool writes the stored net properties from the eercNetlist
netlist into the file named myOutputProps.txt in the current working directory. The vmax and
vmin properties on the nets tagged with powerNet are written to the output file.
eerc_write_net_property_file(
netlist_db = eercNetlist,
file_name = "myOutputProps.txt",
net_properties = {"vmax", "vmin"},
tag_check = {
any_of = {"powerNet"}
}
);

The output file might look like this:


Net_Name vmax vmin
TOP1 1.2 1.2
X1/X2/net 1.2 1.2
vdd 1.2 1.2

See Also
eerc_analyze_netlist()
eerc_import_net_properties_from_file()
eerc_setup()
eerc_write_net_missing_property_file()
eerc_write_vue_debug_database()

Chapter 2: Runset Functions: A - I


eerc_write_net_property_file() 2-342
IC Validator Reference Manual Version N-2017.12-SP2

eerc_write_vue_debug_database()
The eerc_write_vue_debug_database() function writes debugging information for use in
the IC Validator VUE tool. You can right-click in the Netlist Visualization window and select
the Load Debug Info command. Then, you can hover the pointer over any net in the Netlist
Visualization window to see the properties and tags associated with that net.

Syntax
eerc_write_vue_debug_database(
netlist_db = eerc_netlist_database
);

Returns
void

Arguments
netlist_db
Required. Specifies the input netlist.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

See Also
eerc_analyze_netlist()
eerc_import_net_properties_from_file()
eerc_setup()
eerc_write_net_missing_property_file()
eerc_write_net_property_file()

Chapter 2: Runset Functions: A - I


eerc_write_vue_debug_database() 2-343
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

empty_layer()
The empty_layer() function creates an empty polygon layer.

Syntax
empty_layer(
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
empty_polygon_layer = empty_layer();

See Also
empty_layer_edge()
empty_layer_marker()
empty_violation()

Chapter 2: Runset Functions: A - I


empty_layer() 2-344
IC Validator Reference Manual Version N-2017.12-SP2

empty_layer_edge()
The empty_layer_edge() function creates an empty edge layer.

Syntax
empty_layer_edge(
name = "layer_label" //optional
);

Returns
edge layer

Arguments
name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
empty_edge_layer = empty_layer_edge();

See Also
empty_layer()
empty_layer_marker()
empty_violation()

Chapter 2: Runset Functions: A - I


empty_layer_edge() 2-345
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

empty_layer_marker()
The empty_layer_marker() function creates an empty marker layer.

Syntax
empty_layer_marker(
name = "layer_label" //optional
);

Returns
marker layer

Arguments
name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. The name is used only for log files; runset variables are not
changed. The default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
dummy_marker = empty_layer_marker();

See Also
empty_layer()
empty_layer_edge()
empty_violation()

Chapter 2: Runset Functions: A - I


empty_layer_marker() 2-346
IC Validator Reference Manual Version N-2017.12-SP2

empty_violation()
The empty_violation() function creates an empty violation.

Syntax
empty_violation();

Returns
violation

Arguments
This function has no arguments.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
empty_layer()
empty_layer_edge()
empty_layer_marker()

Chapter 2: Runset Functions: A - I


empty_violation() 2-347
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

enclose()
The enclose() function creates polygons that are formed by pairs of violation edges. It
measures outside-to-inside spacing on two layers based on the specified distance. The
arguments define various geometric conditions for measuring the distance between the
layer edges.

Syntax
enclose(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint,
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH, INSIDE, OUTSIDE, CROSS},
//optional
relational_type = EXPANDED_EDGE | POLYGON, //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double, //optional
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
line_touch_shape = OUTSIDE | INSIDE | BOTH, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional

Chapter 2: Runset Functions: A - I


enclose() 2-348
IC Validator Reference Manual Version N-2017.12-SP2

projection_filter = INDIVIDUAL | MUTUAL |


MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = INSIDE_TO_OUTSIDE | COINCIDENT | ALL,
//optional
break_edges = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the enclosed input edge or polygon layer.

layer2
Required. Specifies the enclosing edge or polygon layer against which the layer1 layer
is checked.

distance
Required. Checks distance. See “Constraints” on page A-4 for more information.
Note:
The only constraint operators allowed are <, <=, and ==.
Figure 2-100 shows the effect of the distance argument settings.
Figure 2-100 distance Argument Example

<= 0.2 <= 0.3 [0.2, 0.3]

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-349
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance argument value. When the touch argument includes
ON, the NONE_INCLUSIVE setting generates point-to-point violations whose edges
have no length. See the description of the output_type argument for more
information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance argument value with a radial curve. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance argument value with a square. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance argument value with a rectangle. The boundary of the check
region is inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance argument value, and creating right-angle boundaries at the
extended endpoints based on the distance constraint. The right-angle boundaries of
the check region are exclusive. The far boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
Figure 2-101 is an example of extension = RECTANGLE, with distance = [.4,.5] and
extension_distance =.8.

Chapter 2: Runset Functions: A - I


enclose() 2-350
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-101 extension = RECTANGLE Example

Figure 2-102 is an example of extension = EDGE, with distance = [.4,.5] and


extension_distance =.8.

Figure 2-102 extension = EDGE Example

In the conceptual diagram shown in Figure 2-103, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-103 Check Region Extension

Figure 2-104 shows the effect of the extension argument settings.

Chapter 2: Runset Functions: A - I


enclose() 2-351
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-104 extension Argument Example

NONE RADIAL SQUARE

layer1 layer2 Result

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.
Figure 2-105 shows the effect of the extension argument settings when the extension
argument is EDGE.
Figure 2-105 extension_distance Argument With extension = EDGE Example

0.0 0.12 0.25

layer1 layer2 Result Areas shown for illustration

Figure 2-106 shows the effect of the extension argument settings when the extension
argument is RECTANGLE.

Chapter 2: Runset Functions: A - I


enclose() 2-352
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-106 extension_distance Argument With extension = RECTANGLE Example

0.0 0.18 0.12 0.25

layer1 layer2 Result Areas shown for illustration

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.


Figure 2-107 shows the effect of the connectivity argument settings.
Figure 2-107 connectivity Argument Example

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

Chapter 2: Runset Functions: A - I


enclose() 2-353
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


Figure 2-108 shows the effect of the orientation argument settings.
Figure 2-108 orientation Argument Example

ACUTE PARALLEL PERPENDICULAR

layer1 layer2 Result

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where the outside of the enclosed layer touches the inside
of the enclosing layer. There is no measurement in this case.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
Figure 2-109 shows the effect of the intersecting argument settings.

Chapter 2: Runset Functions: A - I


enclose() 2-354
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-109 intersecting Argument Example

TOUCH PERPENDICULAR ACUTE

layer1 layer2 Result

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
In Figure 2-110, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Chapter 2: Runset Functions: A - I


enclose() 2-355
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-110 Example of Projection Region

Chapter 2: Runset Functions: A - I


enclose() 2-356
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-111 shows the effect of the projection argument settings.


Figure 2-111 projection Argument Example

IN ON OUT

layer1 layer2 Result

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.

Chapter 2: Runset Functions: A - I


enclose() 2-357
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ The intersecting argument cannot contain PERPENDICULAR.


❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


Figure 2-112 shows the effect of the orthogonal argument settings.
Figure 2-112 orthogonal Argument Example

BOTH ONE NEITHER

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-358
IC Validator Reference Manual Version N-2017.12-SP2

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See Figure 2-113 for an example of the direction argument.
Figure 2-113 direction Measurements

HORIZONTAL VERTICAL POSITIVE_45 NEGATIVE_45

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-359
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following examples,

Input

1.05
0.99
1.05

0.99
1.001

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges create check regions.


See Figure 2-114 for an example of the from_layer argument.
Figure 2-114 from_layer Measurements

LAYER1 LAYER2 ALL

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-360
IC Validator Reference Manual Version N-2017.12-SP2

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if

■ The two edges are parallel and do not project.


■ The layer1 edge is on a convex, right-angle corner.
■ The layer2 edge is on a concave, right-angle corner.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if

■ One edge falls on a convex, right-angle corner of a layer1 edge or a concave,


right-angle corner of a layer2 edge.
■ The two edges are nonparallel and project.
■ The line bisecting the corner intersects the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See Figure 2-115 for an example of the corner_configuration argument.
Figure 2-115 corner_configuration Measurements

CORNER_TO_CORNER CORNER_TO_CORNER_OR_EDGE
CORNER_TO_EDGE NOT_CORNER

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-361
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through outside coincident edges from layer2, the enclosing
layer.
❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ INSIDE. Looks inside layer1, the enclosed layer.

❍ OUTSIDE. Looks outside the layer2, enclosing layer.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. A projection is contained when any of the following are true:
■ A layer1 edge is inside coincident to a projecting layer2 edge.
■ A layer1 polygon overlaps a projecting layer2 edge. If layer1 is an edge layer,
this contain does not apply.
■ The projection is inside a layer2 polygon. If layer2 is an edge layer, this contain
does not apply.
Figure 2-116 shows an example of using the NOT_CONTAINED option.
enclose(gray, purple, look_thru = NOT_CONTAINED);

Chapter 2: Runset Functions: A - I


enclose() 2-362
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-116 look_thru = NOT_CONTAINED Example

polygon layer edge layer


polygon layer reported violations

❍ ALL. Looks through all edges.


Figure 2-117 shows an example of the edges that a spacing check looks through for
various look_thru argument settings.

Projections look_thru argument setting

1, 2 NONE

1, 2, 3, 4 INSIDE

1, 2, 3, 4, 5 ALL

Chapter 2: Runset Functions: A - I


enclose() 2-363
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-117 Example of look_thru Projections

1 2 3 4 5

Figure 2-118 shows another example of the edges that a spacing check looks through for
various look_thru argument settings.

Projections look_thru argument setting

1 NONE

1, 2 COINCIDENT

1, 2, 3 OUTSIDE

1, 2, 3, 4, 5 ALL

Chapter 2: Runset Functions: A - I


enclose() 2-364
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-118 Example of look_thru Projections

1 2 3 4 5

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

Chapter 2: Runset Functions: A - I


enclose() 2-365
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-119 for an example of the extension_obstructions argument.
Figure 2-119 Example of extension_obstructions
POINT_TO_POINT

ALL

Chapter 2: Runset Functions: A - I


enclose() 2-366
IC Validator Reference Manual Version N-2017.12-SP2

relational
Optional. Specifies the additional violations that the check outputs. By default, the
IC Validator tool does not report additional violations.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-inside point touch.
The format of the violation is determined by the point_touch_shape and
shape_size arguments. Connectivity is considered.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
❍ INSIDE. Reports as violations the layer2 edges that are inside layer1. Applies only
when layer1 is a polygon layer. Connectivity is considered.
❍ OUTSIDE. Reports as violations the layer1 edges that are outside layer2. When
layer2 is an edge layer, this argument reports outside coincidence. Connectivity is
not considered for this argument.
❍ CROSS. Creates a violation where layer1 and layer2 edges cross. Applies only
when layer1 and layer2 are polygon layers. Connectivity is considered. When this
argument is specified, the intersection_angle argument is ignored.
Figure 2-120 shows the effect of the relational argument settings.
Figure 2-120 relational Argument Example

POINT_TOUCH INSIDE OUTSIDE

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


enclose() 2-367
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

relational_type
Optional. Specifies how OUTSIDE relational violations are reported. The default is
EXPANDED_EDGE.

❍ EXPANDED_EDGE. Reports violations as individual edges expanded to the outside by


width.
❍ POLYGON. Reports violations as closed polygons (applies only when both inputs are
polygons).
Figure 2-121 shows the effect of the relational_type argument settings.
Figure 2-121 relational_type Argument Example

layer1

layer2

EXPANDED_EDGE POLYGON Result

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The violation region is approximated with edges that are either
perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.
❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing

Chapter 2: Runset Functions: A - I


enclose() 2-368
IC Validator Reference Manual Version N-2017.12-SP2

distance. The value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution.

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.
❍ CENTERLINE. Reports violations as an expanded line at the center of the projection
region. The midpoints of the sides of the violation region form a line that is expanded
in both directions by width/2. When the output_type argument is CENTERLINE, only
parallel spacing is supported.
❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when the extension argument is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width value. Violations are oriented along the line.

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.
For the following examples,

Input

0.778
0.8

In the following example,

Chapter 2: Runset Functions: A - I


enclose() 2-369
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

green = enclose(blue, red, <= 1.0, RADIAL,


output_type = REGION);

Output

0.778
0.8

In the following example,


green = enclose(blue, red, <= 1.0, RADIAL,
orientation = {PARALLEL}, intersecting = {},
output_type = CENTERLINE);

Output

0.778
0.8

In the following example,


green = enclose(blue, red, <= 1.0, RADIAL,
output_type = EXTENTS);

Chapter 2: Runset Functions: A - I


enclose() 2-370
IC Validator Reference Manual Version N-2017.12-SP2

Output

0.778
0.8

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is 0.001.
For the following examples,

Input

In the following example,


green = enclose(blue, red, < 0, RADIAL,
relational = {INSIDE}, width = 2.0);

Chapter 2: Runset Functions: A - I


enclose() 2-371
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

line_touch_shape
Optional. Specifies how to expand a line-touch edge violation into a polygon. The default
is OUTSIDE.
❍ OUTSIDE. Outputs a line-touch polygon outside of the dimensional function layer1
polygon. The output polygon size equals the value of the width option.
❍ INSIDE. Outputs a line-touch polygon inside of layer1. The output polygon size
equals the value of the width option.
❍ BOTH. Outputs a line touch polygon inside and outside of the layer1. The total output
size is 2*width option.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.

❍ NONE. Measures each violation separately.

Chapter 2: Runset Functions: A - I


enclose() 2-372
IC Validator Reference Manual Version N-2017.12-SP2

❍ SAME_EDGE. Accumulates the projection length for interacting violations that project
from the same edge. A given violation can contribute to more than one unique
accumulated projection length.
Figure 2-122 shows how the cumulative projection length is measured for the
SAME_EDGE option. There are a total of four projection lengths.

Figure 2-122 SAME_EDGE Projection Length Measurement Example

projection length cumulative projection length

violation (1) violation (2) violation (3)


layer1

cumulative projection length projection length violation


layer

❍ JOGGING_EDGE. Accumulates the projection length for interacting violations that


project from the same edge or a jogging edge. A given violation can contribute to
more than one unique accumulated projection length.
Note:
A jogging edge is a group of parallel edges with the same direction that are
separated only by perpendicular edges. These perpendicular edges have one
angle at 90 degrees and the other at 270 degrees.
Figure 2-123 shows how the cumulative projection length is measured for
JOGGING_EDGE.

Figure 2-123 JOGGING_EDGE Projection Length Measurement Example

cumulative projection length

layer1

cumulative projection length violation


layer

Chapter 2: Runset Functions: A - I


enclose() 2-373
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-124 shows the difference between a jogging edge and a non-jogging edge.
Figure 2-124 Jogs Not Included in a JOGGING_EDGE Projection Length Measurement

layer1
violation
jogging edge point touch is not layer
a jogging edge

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.

Chapter 2: Runset Functions: A - I


enclose() 2-374
IC Validator Reference Manual Version N-2017.12-SP2

❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as


specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
checks. The look_thru argument is ignored, except when it is NOT_CONTAINED and
two intersecting edges are cut. The connectivity and orthogonal arguments are
not ignored.
Figure 2-125 shows an example of using the intersection_angle argument.
green = enclose(blue, red, distance < 1.0, extension = RADIAL,
orientation = {}, intersecting = {},
intersection_angle < 180);

Chapter 2: Runset Functions: A - I


enclose() 2-375
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-125 intersection_angle Argument Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL, the break_edges argument is
forced to true.
❍ INSIDE_TO_OUTSIDE. Includes the following measurements:

■ For layer1 edges,


If layer2 is a polygon, edges on the layer2 polygon measure those layer1
edges that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.

Chapter 2: Runset Functions: A - I


enclose() 2-376
IC Validator Reference Manual Version N-2017.12-SP2

If layer2 is an edge, those layer1 edges that are neither inside coincident nor
outside coincident with layer2 are included in the measurements.
■ For layer2 edges,
If layer1 is a polygon, only those layer2 edges that are outside and outside
coincident with layer1 are included in the measurements.
If layer1 is an edge, those layer2 edges that are not inside coincident with
layer1 are included in the measurements.
Important:
Edges that are inside coincident with the other layer are included in the
measurement for touch violations.
In Figure 2-126, the dash lines are filtered out before the measurement. The syntax is
enclose(layer1 = orange, layer2 = blue, ...)

Figure 2-126 Example of Edge Containment for the enclose() Functions


For polygons: For edges:

❍ COINCIDENT. Includes layer1 edges that are outside coincident.

❍ ALL. Does not filter edges.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks. The segments
resulting from the edge breaking are processed individually by the edge filters and
spacing constraints. The default is false.
❍ true. Enables edge breaking behavior. Edges are broken into individual segments as
follows:
■ Specifies that edges are broken at every point of intersection with the other layer.

Chapter 2: Runset Functions: A - I


enclose() 2-377
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.
Figure 2-127 shows the break_edges argument for a two-layer polygon. If the other
layer is an edge layer, there is no inside or outside with the other edge layer.
Figure 2-127 Example of break_edges Argument for a Two-Layer Polygon

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Minimum spacing of 0.5; touch interactions are allowed
enclose(layer1 = met1, layer2 = met2, distance <= 0.5,
extension = RADIAL);

Chapter 2: Runset Functions: A - I


enclose() 2-378
IC Validator Reference Manual Version N-2017.12-SP2

Minimum spacing of 0.5 for opposite edges only


enclose(layer1 = via, layer2 = met1, distance < 0.5,
extension = NONE);

Minimum enclosure of 0.5 for all polygons on the same net


enclose(layer1 = via, layer2 = met1, distance < 0.5,
extension = RADIAL, connectivity = SAME_NET);

Minimum enclosure of 0.5 for met1 to met2; measures only parallel edges
enclose(layer1 = met1, layer2 = met2, distance < 0.5,
extension = RADIAL, orientation = {PARALLEL});

Minimum spacing of 0.5 for met1 to met2; measures all parallel angled edges
enclose(layer1 = met1, layer2 = met2, distance < 0.5,
extension = RADIAL, orthogonal = BOTH,
orientation = {PARALLEL});

See Also
not_contained_by() and contained_by()
covered_by()
enclose_edge() and not_enclose_edge()
not_covered_by()

Chapter 2: Runset Functions: A - I


enclose() 2-379
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

enclose_corner()
The enclose_corner() function creates polygons that are formed by pairs of violation
corners. It measures the outside of the layer1 layer to the inside of the layer2 layer. The
arguments define various geometric conditions for measuring the point-to-point distance
between the corners.
The output consists of rectangles that are the extents of the point-to-point violations. In the
case where the violation is horizontal or vertical, the output rectangle is generated by
expanding the violation three times the input library resolution on both sides.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. Also, a portion of the edge must fall in the
corner projection zone, and neither of the edges forming the corner can be parallel to the
edge.
For edge input, the enclose_corner() function optionally includes terminal edge endpoints
as corners; there is no adjacent edge. In this case, the angle argument is not used. The
check zone of an edge endpoint with no adjacent edge is determined by the following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
enclose_corner(

Chapter 2: Runset Functions: A - I


enclose_corner() 2-380
IC Validator Reference Manual Version N-2017.12-SP2

layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint,
type =
{CONVEX_TO_CONCAVE, CONVEX_TO_CONVEX,
CONVEX_TO_EDGE, CONCAVE_TO_CONCAVE,
CONCAVE_TO_EDGE, EDGE_TO_CONCAVE, EDGE_TO_CONVEX,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
boundary = EXCLUSIVE | INCLUSIVE, //optional
convex_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | INSIDE | OUTSIDE |
ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the enclosed input edge or polygon layer.

layer2
Required. Specifies the enclosing edge or polygon layer against which the layer1 layer
is checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing checked on layer1 and
layer2, respectively. For example, CONCAVE_TO_EDGE checks between concave corners
on layer1 and edges on layer2. By default, the IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
boundary argument.

Chapter 2: Runset Functions: A - I


enclose_corner() 2-381
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is inclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ EDGE_TO_CONCAVE. Specifies that the edge projection region is inclusive; convex
corner check zone is exclusive.
❍ EDGE_TO_CONVEX. Specifies that the edge projection region is inclusive; convex
corner check zone is inclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and boundary arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner; one edge is coincident to the boundary. For right corners, the two boxes

Chapter 2: Runset Functions: A - I


enclose_corner() 2-382
IC Validator Reference Manual Version N-2017.12-SP2

are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.

boundary
Optional. For convex-to-convex and concave-to-concave measurements, specifies
whether the corner check-zone boundaries are exclusive or inclusive. The default is
EXCLUSIVE.

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database. This database must be a valid connect
database when the connectivity argument is SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

Chapter 2: Runset Functions: A - I


enclose_corner() 2-383
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ COINCIDENT. Looks through outside coincident edges from layer2, the enclosing
layer.
❍ INSIDE. Looks inside layer1, the enclosed layer.

❍ OUTSIDE. Looks outside layer2, the enclosing layer.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the enclose() function for more
information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Minimum spacing of 0.5; touch interactions are allowed:
enclose_corner(layer1 = met1, layer2 = met2, distance <= 0.5 );

Chapter 2: Runset Functions: A - I


enclose_corner() 2-384
IC Validator Reference Manual Version N-2017.12-SP2

Minimum enclosure of 0.5 for all polygons on the same net:


enclose_corner(layer1 = via, layer2 = met1, distance < 0.5,
connectivity = SAME_NET);

See Also
covered_by()
enclose()
enclose_corner_edge()
not_covered_by()

Chapter 2: Runset Functions: A - I


enclose_corner() 2-385
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

enclose_corner_edge()
The enclose_corner_edge() function creates edges that consist of pairs of violation
corners. It measures the outside of the layer1 layer to the inside of the layer2 layer. The
arguments define various geometric conditions for measuring the point-to-point distance
between the corners.
The output consists of pairs of violation edges.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. Also, a portion of the edge must fall in the
corner projection zone, and neither of the edges forming the corner can be parallel to the
edge.
For edge input, the enclose_corner_edge() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
enclose_corner_edge(
layer1 = data_layer,
layer2 = data_layer,

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-386
IC Validator Reference Manual Version N-2017.12-SP2

distance = doubleconstraint,
type = {CONVEX_TO_CONCAVE, CONVEX_TO_CONVEX,
CONVEX_TO_EDGE, CONCAVE_TO_CONCAVE,
CONCAVE_TO_EDGE, EDGE_TO_CONCAVE,
EDGE_TO_CONVEX, PARALLEL_POINT_PROJECTION},
//optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
boundary = EXCLUSIVE | INCLUSIVE, //optional
convex_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | INSIDE | OUTSIDE |
ALL, //optional
output_layer = LAYER1 | LAYER2, //optional
output_type = FAIL | POINT_TO_POINT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the enclosed input edge or polygon layer.

layer2
Required. Specifies the enclosing edge or polygon layer against which the layer1 layer
is checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing checked on layer1 and
layer2, respectively. For example, CONCAVE_TO_EDGE checks between concave corners
on layer1 and edges on layer2. By default, the IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
boundary argument.

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-387
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is inclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ EDGE_TO_CONCAVE. Specifies that the edge projection region is inclusive; convex
corner check zone is exclusive.
❍ EDGE_TO_CONVEX. Specifies that the edge projection region is inclusive; convex
corner check zone is inclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and boundary arguments are ignored.
The edge endpoints and all angle corners are always measured; edge_endpoints
and angle arguments are ignored.
The region argument is not used for this corner type.

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-388
IC Validator Reference Manual Version N-2017.12-SP2

are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.

boundary
Optional. For convex-to-convex and concave-to-concave measurements, specifies
whether the corner check-zone boundaries are exclusive or inclusive. The default is
EXCLUSIVE.

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database. This database must be a valid connect
database when the connectivity argument is SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-389
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ COINCIDENT. Looks through outside coincident edges from layer2, the enclosing
layer.
❍ INSIDE. Looks inside layer1, the enclosed layer.

❍ OUTSIDE. Looks outside layer2, the enclosing layer.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the enclose() function for more
information.

output_layer
Optional. Specifies the layer whose edges are output for the violations. The default is
LAYER1.

❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. Edge endpoints are ordered from layer1 to layer2.
POINT_TO_POINT creates an orphan edge layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-390
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
covered_by()
enclose_corner()
not_covered_by()

Chapter 2: Runset Functions: A - I


enclose_corner_edge() 2-391
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

enclose_edge() and not_enclose_edge()


The enclose_edge() function selects the portion of layer1 and layer2 edges that violates
the spacing constraints. It measures outside-to-inside spacing between two layers based on
the specified distance. The arguments define various geometric conditions for measuring
the distance between the layer edges. The complement of this function is the
not_enclose_edge() function.

Syntax
enclose_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH, INSIDE, OUTSIDE, CROSS},
//optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
output_type = FAIL | CENTERLINE,
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-392
IC Validator Reference Manual Version N-2017.12-SP2

name = "layer_label", //optional


edge_containment = INSIDE_TO_OUTSIDE | COINCIDENT | ALL,
//optional
output_side = ALL | HIGH | LOW, //optional
break_edges = true | false //optional
);

not_enclose_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH, INSIDE, OUTSIDE, CROSS},
//optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = INSIDE_TO_OUTSIDE | COINCIDENT | ALL,
//optional
output_side = ALL | HIGH | LOW, //optional
break_edges = true | false //optional
);

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-393
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the enclosed input edge or polygon layer.

layer2
Required. Specifies the enclosing edge or polygon layer against which the layer1 layer
is checked.

distance
Optional. Specifies the check distance. See “Constraints” on page A-4 for more
information. The default is 0.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked. The default is RADIAL.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance argument value with a radial curve. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance argument value with a square. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-394
IC Validator Reference Manual Version N-2017.12-SP2

❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance argument value with a rectangle. The boundary of the check
region is inclusive or exclusive depending on the constraint of the distance value.
Figure 2-128 and Figure 2-129 show the effect of the extension argument settings.
Figure 2-128 extension Argument Example

NONE RADIAL SQUARE RECTANGLE

layer1 layer2 Result Areas shown for illustration

Figure 2-129 extension Argument Example

RECTANGLE EDGE

layer1 layer2 Result Areas shown for illustration

❍ EDGE. Forms the check region by extending the edges using the
extension_distance argument value, and creating right-angle boundaries at the
extended endpoints based on the distance constraint. The right-angle boundaries of
the check region are exclusive. The far boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-395
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ALL. Checks all edges regardless of connectivity.


Figure 2-130 shows the effect of the connectivity argument settings.
Figure 2-130 connectivity Argument Example

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


Figure 2-131 shows the effect of the orientation argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-396
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-131 orientation Argument Example

ACUTE PARALLEL PERPENDICULAR

layer1 layer2 Result

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where the outside of the enclosed layer touches the inside
of the enclosing layer. There is no measurement in this case.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
Figure 2-132 shows the effect of the intersecting argument settings.
Figure 2-132 intersecting Argument Example

TOUCH PERPENDICULAR ACUTE

layer1 layer2 Result

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-397
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
Figure 2-133 shows the effect of the projection argument settings.
Figure 2-133 projection Argument Example

IN ON OUT

layer1 layer2 Result oversize areas shown for illustration

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-398
IC Validator Reference Manual Version N-2017.12-SP2

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


Figure 2-134 shows the effect of the orthogonal argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-399
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-134 orthogonal Argument Example

BOTH ONE NEITHER

layer1 layer2 Result

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


Figure 2-135 shows the effect of the direction argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-400
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-135 direction Argument Example

HORIZONTAL VERTICAL POSITIVE_45 NEGATIVE_45

layer1 layer2 Result Areas shown for illustration

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.


Figure 2-136 shows the effect of the from_layer argument settings.
Figure 2-136 from_layer Argument Example

LAYER1 LAYER2 ALL

layer1 layer2 Result Areas shown for illustration

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-401
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CORNER_TO_CORNER. Measures the spacing between two edges only if

■ The two edges are parallel and do not project.


■ The layer1 edge is on a convex, right-angle corner.
■ The layer2 edge is on a concave, right-angle corner.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if

■ One edge falls on a convex, right-angle corner of a layer1 edge or a concave,


right-angle corner of a layer2 edge.
■ The two edges are nonparallel and project.
■ The line bisecting the corner intersects the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
Figure 2-137 shows the effect of the corner_configuration argument settings. The
red outlines highlight the selected boundaries.
Figure 2-137 corner_configuration Argument Example

CORNER_TO_CORNER CORNER_TO_CORNER_OR_EDGE
CORNER_TO_EDGE NOT_CORNER

layer1 layer2 Result Areas shown for illustration

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through outside coincident edges from layer2, the enclosing
layer.
❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-402
IC Validator Reference Manual Version N-2017.12-SP2

❍ INSIDE. Looks inside layer1, the enclosed layer.

❍ OUTSIDE. Looks outside the layer2, enclosing layer.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
enclose() function for exceptions and an example.
❍ ALL. Looks through all edges.
Figure 2-138 shows the effect of the look_thru argument settings.
Figure 2-138 look_thru Argument Example

NONE COINCIDENT

layer1

layer2

Result

Areas shown
INSIDE OUTSIDE ALL for illustration

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-403
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.
Figure 2-139 shows the effect of the look_thru_from_layer argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-404
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-139 look_thru_from_layer Argument Example

LAYER1, count3 LAYER2, count3

layer1

layer2

Result

Areas shown
ALL, count3 ALL, count2 for illustration

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
Figure 2-140 shows the effect of the extension_look_past argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-405
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-140 extension_look_past Argument Example


layer1

layer2

Result

NONE POINT_TO_POINT Areas shown


for illustration

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
Figure 2-141 shows the effect of the extension_obstructions argument settings.
Figure 2-141 extension_obstructions Argument Example
layer1

layer2

Result
POINT_TO_POINT ALL
Areas shown
for illustration

relational
Optional. Specifies additional violations for the check outputs. By default, the IC Validator
tool does not report additional violations.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-inside point touch.
The length of the violation is equal to the maximum of the distance constraint, with
a minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution.
Connectivity is considered.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-406
IC Validator Reference Manual Version N-2017.12-SP2

When the edge_containment argument is specified, the POINT_TOUCH argument


creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
❍ INSIDE. Reports as violations the layer2 edges that are inside layer1. Applies only
when layer1 is a polygon layer. Connectivity is considered.
❍ OUTSIDE. Reports as violations the layer1 edges that are outside layer2. When
layer2 is an edge layer, this argument reports outside coincidence. Connectivity is
not considered for this argument.
❍ CROSS. Creates a violation where layer1 and layer2 edges cross. Applies only
when layer1 and layer2 are polygon layers. Connectivity is considered. When this
argument is specified, the intersection_angle argument is ignored.
Figure 2-142 shows the effect of the relational argument settings.
Figure 2-142 relational Argument Example

POINT_TOUCH INSIDE OUTSIDE

layer1 layer2 Result

output_layer
Optional. Specifies the layer that is output for the violations. The default is LAYER1.
❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.


Figure 2-143 shows the effect of the output_layer argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-407
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-143 output_layer Argument Example

layer1

layer2

Result
LAYER1 LAYER2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.
Figure 2-144 shows the effect of the cumulative_projection_length argument
settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-408
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-144 cumulative_projection_length Argument Example

NONE SAME_EDGE JOGGING_EDGE

layer1 layer2 Result Areas shown


for illustration

output_type
Optional. Specifies the type of output generated. The default is FAIL.
Note:
The output_type argument is not available for the not_enclose_edge() function.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Outputs spacing violations as lines at the center of the projection
region. A line is two points connected with no specific order. The midpoints of the
sides of the violation region are used to create the lines. When the output_type
argument is CENTERLINE, only parallel spacing is supported.
Figure 2-145 shows the effect of the output_type argument settings.
Figure 2-145 output_type Argument Example

layer1

layer2

Result
FAIL CENTERLINE

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-409
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).
Figure 2-146 shows the effect of the projection_mode argument settings.
Figure 2-146 projection_mode Argument Example

SYMMETRIC ASYMMETRIC SYMMETRIC_NON_


INTERSECTING

layer1 layer2 Result Areas shown for illustration

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.
Figure 2-147 shows the effect of the projection_filter argument settings.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-410
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-147 projection_filter Argument Example

INDIVIDUAL MUTUAL MUTUAL_NON_ORTHOGONAL

layer1 layer2 Result Areas shown for illustration

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
Figure 2-148 shows an example of using the intersection_angle argument.
green = enclose_edge(blue, red, distance < 1.0, extension = RADIAL,
orientation = {}, intersecting = {},
intersection_angle < 180);

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-411
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-148 intersection_angle Argument Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL, the break_edges argument is
forced to true.
❍ INSIDE_TO_OUTSIDE. Includes the following measurements:

■ For layer1 edges,


If layer2 is a polygon, edges on the layer2 polygon measure those layer1
edges that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-412
IC Validator Reference Manual Version N-2017.12-SP2

If layer2 is an edge, those layer1 edges that are neither inside coincident nor
outside coincident with layer2 are included in the measurements.
■ For layer2 edges,
If layer1 is a polygon, only those layer2 edges that are outside and outside
coincident with layer1 are included in the measurements.
If layer1 is an edge, those layer2 edges that are not inside coincident with
layer1 are included in the measurements.
Important:
Edges that are inside coincident with the other layer are included in the
measurement for touch violations.
See Figure 2-126 for an example.
❍ COINCIDENT. Includes layer1 edges that are outside coincident.

❍ ALL. Does not filter edges.

output_side
Optional. Specifies to output only the check edges on the specified side of any violation
projected from an orthogonal edge. The default is ALL.
Note:
To use the HIGH or LOW options,
■ The direction argument needs to be HORIZONTAL or VERTICAL.
■ The extension argument needs to be NONE.
❍ ALL. Outputs all check edges

❍ HIGH. Outputs all check edges except:

■ For any violation projected from a horizontal edge, only the edge on the top side
is output.
■ For any violation projected from a vertical edge, only the edge on the right side is
output.
❍ LOW. Outputs all check edges.

■ For any violation projected from a horizontal edge, only the edge on the bottom
side is output.
■ For any violation projected from a vertical edge, only the edge on the left side is
output.
Figure 2-149 shows the results when the direction argument is HORIZONTAL. For
example,

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-413
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Result = external2_edge(green, gray, extension = NONE,


direction = HORIZONTAL, output_side = ALL);

Figure 2-149 output_side Argument Examples When direction Argument is HORIZONTAL

Result
ALL HIGH LOW

Figure 2-150 shows the results when the direction argument is VERTICAL. For
example,
Result = external2_edge(green, gray, extension = NONE,
direction = VERTICAL, output_side = ALL);

Figure 2-150 output_side Argument Examples When direction Argument is VERTICAL

Result
ALL HIGH LOW

Figure 2-151 shows the results when projection_mode argument is ASYMMETRIC and
the direction argument is HORIZONTAL. For example,
Result = external2_edge(green, gray, extension = NONE,
projection_mode = ASYMMETRIC, direction = VERTICAL,
output_side = ALL);

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-414
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-151 output_side Argument Examples When projection_mode Argument is


ASYMMETRIC and direction Argument is HORIZONTAL

Result
ALL HIGH LOW

Figure 2-152 shows the results when projection_mode argument is ASYMMETRIC and
the direction argument is VERTICAL. For example,
Result = external2_edge(green, gray, extension = NONE,
projection_mode = ASYMMETRIC, direction = VERTICAL,
output_side = ALL);

Figure 2-152 output_side Argument Examples When projection_mode Argument is


ASYMMETRIC and direction Argument is VERTICAL

ALL HIGH LOW Result

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks. The segments
resulting from the edge breaking are processed individually by the edge filters and
spacing constraints. The default is false.
❍ true. Enables edge breaking behavior. Edges are broken into individual segments as
follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-415
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Figure 2-127 for an example.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Minimum spacing of 0.5; touch interactions are allowed
enclose_edge(layer1 = met1, layer2 = met2, distance <= 0.5 );

Minimum spacing of 0.5 for opposite edges only


enclose_edge(layer1 = via, layer2 = met1, distance < 0.5,
extension = NONE);

Minimum spacing of 0.5 for all polygons on the same net


enclose_edge(layer1 = via, layer2 = met1, distance < 0.5,
connectivity = SAME_NET);

Minimum spacing of 0.5 for met1 to met2; measures only parallel edges
enclose_edge(layer1 = met1, layer2 = met2, distance < 0.5,
orientation = {PARALLEL});

Minimum spacing of 0.5 for met1 to met2; measures only parallel angled edges
enclose_edge(layer1 = met1, layer2 = met2, distance < 0.5,
orthogonal = BOTH, orientation = {PARALLEL});

See Also
covered_by()
enclose()
not_covered_by()

Chapter 2: Runset Functions: A - I


enclose_edge() and not_enclose_edge() 2-416
IC Validator Reference Manual Version N-2017.12-SP2

enclose_error()
The enclose_error() function measures outside-to-inside spacing between two layers
based on the specified distance. The arguments define various geometric conditions for
measuring the distance between the layer edges. The output is unmerged errors.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Errors output to the error database consist of pairs of violation edges.

Syntax
enclose_error(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = INSIDE_TO_OUTSIDE | COINCIDENT | ALL,

Chapter 2: Runset Functions: A - I


enclose_error() 2-417
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

//optional
break_edges = true | false, //optional
relational = {POINT_TOUCH, INSIDE, OUTSIDE, CROSS}
//optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the enclosed input edge or polygon layer.

layer2
Required. Specifies the enclosing edge or polygon layer against which the layer1 layer
is checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


enclose_error() 2-418
IC Validator Reference Manual Version N-2017.12-SP2

❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.

Chapter 2: Runset Functions: A - I


enclose_error() 2-419
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the examples for the orientation argument of the enclose() function for more
information.

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where the outside of the enclosed layer touches the inside
of the enclosing layer. There is no measurement in this case.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
See the examples for the intersecting argument of the enclose() function for more
information.

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
See the examples for the projection argument of the enclose() function for more
information.

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are

Chapter 2: Runset Functions: A - I


enclose_error() 2-420
IC Validator Reference Manual Version N-2017.12-SP2

❍ The orientation argument cannot contain PERPENDICULAR.


❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


See the examples for the orthogonal argument of the enclose() function for more
information.

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See the examples for the direction argument of the enclose() function for more
information.

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.

Chapter 2: Runset Functions: A - I


enclose_error() 2-421
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.


See the examples for the from_layer argument of the enclose() function for more
information.

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if

■ The two edges are parallel and do not project.


■ The layer1 edge is on a convex, right-angle corner.
■ The layer2 edge is on a concave, right-angle corner.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if

■ One edge falls on a convex, right-angle corner of a layer1 edge or a concave,


right-angle corner of a layer2 edge.
■ The two edges are nonparallel and project.
■ The line bisecting the corner intersects the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See the examples for the corner_configuration argument of the enclose() function
for more information.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

Chapter 2: Runset Functions: A - I


enclose_error() 2-422
IC Validator Reference Manual Version N-2017.12-SP2

❍ COINCIDENT. Looks through outside coincident edges from layer2, the enclosing
layer.
❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ INSIDE. Looks inside layer1, the enclosed layer.

❍ OUTSIDE. Looks outside the layer2, enclosing layer.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
enclose() function for exceptions and an example.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the enclose()function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

Chapter 2: Runset Functions: A - I


enclose_error() 2-423
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See the examples for the extension_obstructions argument of the enclose()
function for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


enclose_error() 2-424
IC Validator Reference Manual Version N-2017.12-SP2

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).

Chapter 2: Runset Functions: A - I


enclose_error() 2-425
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
See the intersection_angle argument of the enclose() and enclose_edge() and
not_enclose_edge() functions for examples.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL, the break_edges argument is
forced to true.
❍ INSIDE_TO_OUTSIDE. Includes the following measurements:

■ For layer1 edges,


If layer2 is a polygon, edges on the layer2 polygon measure those layer1
edges that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.
If layer2 is an edge, those layer1 edges that are neither inside coincident nor
outside coincident with layer2 are included in the measurements.
■ For layer2 edges,
If layer1 is a polygon, only those layer2 edges that are outside and
outside-coincident with layer1 are included in the measurements.
If layer1 is an edge, those layer2 edges that are not inside-coincident with
layer1 are included in the measurements.
Important:
Edges that are inside-coincident with the other layers are included in the
measurement for touch violations.

Chapter 2: Runset Functions: A - I


enclose_error() 2-426
IC Validator Reference Manual Version N-2017.12-SP2

See Figure 2-126 for an example.


❍ COINCIDENT. Includes layer1 edges that are outside coincident.

❍ ALL. Does not filter edges.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks. The segments
resulting from the edge breaking are processed individually by the edge filters and
spacing constraints.The default is false.
❍ true. Enables edge breaking behavior. Edges are broken into individual segments as
follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.
See Figure 2-127 for an example.

relational
Optional. Specifies additional violations for the check outputs. By default, the IC Validator
tool does not report additional violations.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-inside point touch.
The length of the violation is equal to the maximum of the distance constraint, with
a minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution.
Connectivity is considered.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
❍ INSIDE. Reports as violations the layer2 edges that are inside layer1. Applies only
when layer1 is a polygon layer. Connectivity is considered.
❍ OUTSIDE. Reports as violations the layer1 edges that are outside layer2. When
layer2 is an edge layer, this argument reports outside coincidence. Connectivity is
not considered for this argument.

Chapter 2: Runset Functions: A - I


enclose_error() 2-427
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CROSS. Creates a violation where layer1 and layer2 edges cross. Applies only
when layer1 and layer2 are polygon layers. Connectivity is considered. When this
argument is specified, the intersection_angle argument is ignored.
Figure 2-153 shows the effect of the relational argument settings.
Figure 2-153 relational Argument Example

POINT_TOUCH INSIDE OUTSIDE

layer1 layer2 Result

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
To set a minimum spacing of 0.5:
ext_errs = enclose_error(layer1 = met1, layer2 = met2,
distance <= 0.5, extension = RADIAL
);

Touch interactions are allowed.

See Also
drc_features()
enclose()
enclose_corner()
enclose_corner_edge()
enclose_edge() and not_enclose_edge()

Chapter 2: Runset Functions: A - I


enclose_error() 2-428
IC Validator Reference Manual Version N-2017.12-SP2

enclosing() and not_enclosing()


The enclosing() function selects layer1 polygons that fully enclose layer2 polygons.
The complement of this function is the not_enclosing() function.

Syntax
enclosing(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_touch = POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

not_enclosing(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_touch = POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

count
Optional. Specifies the number of layer2 polygons that must be enclosed. See
“Constraints” on page A-4 for more information. The default is >0.
Figure 2-154 and Figure 2-155 show the effect of the count argument settings for the
enclosing() and not_enclosing() functions.

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-429
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-154 count Argument Example Result for enclosing()


layer1

layer2
count = 1 count > 1
Result

Figure 2-155 count Argument Example Result for not_enclosing()


layer1

layer2
count = 1 count > 1
Result

include_touch
Optional. Specifies the inside touches that are included in the definition of fully enclosed
for layer2 polygons. The default is ALL.
❍ POINT. Considers point touch as enclosed.

❍ ALL. Considers all touches (edge and point) as enclosed.


Figure 2-156 and Figure 2-157 show the effect of the include_touch argument settings
for the enclosing() and not_enclosing() functions.
Figure 2-156 include_touch Argument Example for enclosing()
layer1

layer2
ALL POINT
Result

Figure 2-157 include_touch Argument Example for not_enclosing()


layer1

layer2
ALL POINT
Result

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-430
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

count_parity
Optional. Specifies the parity of the number of layer2 polygons that must touch layer1
polygons. The default is ALL.
❍ EVEN. Specifies that the layer1 polygons must have an even number of interactions
with layer2 data.
❍ ODD. Specifies that the layer1 polygons must have an odd number of interactions
with layer2 data.
❍ ALL. Does not check the parity based on the number of interactions.
The count argument can be used with the count_parity argument. For example, when
count = [4, 9] and count_parity is EVEN, the layer1 polygons that interact with four,
six, or eight layer2 polygons are selected.
Figure 2-158 shows an example of two interacting layers.
Figure 2-158 count_parity Argument Example

L1

L2

For the following commands, the result is shown in Figure 2-159.


enclosing(L1, L2, count = [2, 4], count_parity = EVEN)

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-431
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-159 Result of count_parity Argument Example

L1

L2

result

count_by
Optional. Provides selection by net feature. The default is SHAPE.
❍ NET. Selects a layer1 polygon if it encloses with distinct nets on the layer2 layer the
number of times specified by the count argument.
❍ SHAPE. Selects a layer1 polygon if it encloses the layer2 layer the number of times
specified by the count argument.
Refer to Figure 2-160 for the following examples.
Figure 2-160 count_by Argument Example

L1

L2

The following commands select polygon A of layer L1.


❍ Only net 2 is fully enclosed by layer L1. It is counted one time because the count_by
argument is NET. Therefore, polygon A meets the count=1 restriction.
enclosing(L1, L2, count==1, count_by=NET, connect_sequence=cdb)

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-432
IC Validator Reference Manual Version N-2017.12-SP2

❍ Only net 2 is fully enclosed by layer L1. It is counted two times. Therefore, polygon A
meets the count=2 restriction.
enclosing(L1, L2, count==2)

connect_sequence
Optional. Specifies the connect database that has the layer2 connection. The database
is used when the count_by argument is NET.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the example shown in Figure 2-162, all data from layer2 that encloses the polygons of
layer1 is selected.
Result = layer2 enclosing layer1;

Figure 2-161 enclosing() Function Example


layer1

layer2
All arguments at default values
Result

In the example shown in Figure 2-162, all data from layer2 that does not enclose the
polygons of layer1 is selected.

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-433
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Result = layer2 not_enclosing layer1;

Figure 2-162 not_enclosing() Function Example


layer1

layer2

All arguments at default values


Result

See Also
covered_by()
enclose()
not_covered_by()

Chapter 2: Runset Functions: A - I


enclosing() and not_enclosing() 2-434
IC Validator Reference Manual Version N-2017.12-SP2

equiv_options()
The equiv_options() function specifies user-intended pairings of cells in the schematic
and layout netlists for comparison. Additional arguments specify instances to be deleted,
nets to be equated, static nets and devices, as well as schematic swappable ports.
Note:
You can use a -e command-line option to add equivalence options that you have defined
in a separate file. See the Command-Line Options section in the “IC Validator Basics”
chapter of the IC Validator User Guide for more information.
The equiv.run file, which is written by IC Validator, lists the equivalence cells that were used
during the run. See Equivalence Files in the Output Files chapter of the IC Validator User
Guide for more information.
This function, or a #include directive pointing to a file containing this function, must be
called before assign functions.

Syntax
equiv_options(
equiv_cells = {{schematic_cell = "string",
layout_cell = "string",
ignore = true | false},
...},
delete_layout_instances = {"string", ...}, //optional
delete_schematic_instances = {"string", ...}, //optional
equate_nets = {{schematic_net = "string",
layout_net = "string"},
...}, //optional
schematic_static_devices = {"string", ...}, //optional
schematic_static_nets = {"string", ...}, //optional
layout_static_devices = {"string", ...}, //optional
layout_static_nets = {"string", ...}, //optional
static_ports = NONE | ALL_PORTS, //optional
schematic_swappable_ports = {{"string", ...}, ...} //optional
);

Returns
void

Arguments
equiv_cells
Required. Specifies a list of schematic and layout cell name pairs either used or ignored
as equivalence points for comparison.

Chapter 2: Runset Functions: A - I


equiv_options() 2-435
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ schematic_cell and layout_cell. Specifies a user-intended equivalence cell


pairing. See the lvs_options() function for a description of user-intended versus
system-generated equivalence cell pairings.
If only the schematic_cell option name is specified, both cell names are assumed
to be the same. String matching using metacharacters is allowed for the cell names.
See “String Matching” on page A-11 for more information.
■ If ignore = true, non-metacharacters are not required in the schematic_cell
and corresponding layout_cell names.
■ If ignore = false, at least one non-metacharacter is required in the
schematic_cell and corresponding layout_cell names.

❍ ignore. Specifies whether the equiv_cells pair should be used as an equivalence


point for comparison. The default is false.
■ true. Ignores the equiv_cells pair as an equivalence point for comparison,
regardless of whether the pair is explicitly specified or automatically generated by
the generate_user_equivs and generate_system_equivs arguments of the
lvs_options() function.

■ false. Uses the equiv_cells pair as an equivalence point for comparison.

delete_layout_instances
Optional. Specifies the ignored instances in the layout netlist. For each instance name in
the list, that instance and all data hierarchically beneath it are deleted.

delete_schematic_instances
Optional. Specifies the ignored instances in the schematic netlist. For each instance
name in the list, that instance and all data hierarchically beneath it are deleted.

equate_nets
Optional. Specifies a list of the net names in the schematic cell to equate with net names
in the layout cell.

schematic_static_devices
Optional. Specifies the schematic devices that are neither merged nor filtered.

schematic_static_nets
Optional. Specifies the schematic nets for which neither merging nor filtering is
performed if it would cause the nets to be removed.

layout_static_devices
Optional. Specifies the layout devices that are neither merged nor filtered.

Chapter 2: Runset Functions: A - I


equiv_options() 2-436
IC Validator Reference Manual Version N-2017.12-SP2

layout_static_nets
Optional. Specifies the layout nets for which neither merging nor filtering is performed if
it would cause the nets to be removed.

static_ports
Optional. Specifies whether the ports are static for cells below the top cell. Ports on the
top cell are always static. The default is NONE.
❍ NONE. Uses the settings of the push_down_pins and remove_dangling_net
arguments of the compare() function to determine whether the ports of the
equivalences specified by the equiv_cells argument are merged or removed.
❍ ALL_PORTS. Does not use the settings of the push_down_pins and
remove_dangling_net arguments of the compare() function to determine whether
the ports of the equivalences specified by the equiv_cells argument are merged or
removed. That is, all ports of the equivalences specified by the equiv_cells
argument are static and neither merged nor removed.

schematic_swappable_ports
Optional. Specifies a list of the port names that are treated as being logically equivalent
for comparison purposes at higher levels of the design hierarchy.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
equiv_options({{"schCellName", "layCellName"}});

equiv_options({{"schCellName"}, {"schChild1", "layChild1"}},


delete_layout_instances = {"inst1","inst2"},
delete_schematic_instances = {"INST1","INST2"},
schematic_swappable_ports = {{"port1","port2"}}
);

equiv_options({{"schCellName", "layCellName"}},
schematic_static_devices = {"DEV1", "DEV2"},
schematic_static_nets = {"VSS_1", "VSS_2"},
layout_static_devices = {"dev1", "dev2"},
layout_static_nets = {"vss_1", "vss_2"}
);

Chapter 2: Runset Functions: A - I


equiv_options() 2-437
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

equiv_options({{"schCellName", "layCellName"}},
equate_nets = {{"VSS", "vss"},},
schematic_swappable_ports = {{"port1","port2"},
{"port3","port4"}}
);

In the following example, schematic cell names containing the substring “scell” and layout
cell names containing the substring “lcell” are paired to form equivalence points for
comparison.
equiv_options({{"*scell*", "*lcell*"}});

In the following example, cell names that begin with “cell” followed by any single character
are paired to form equivalence points for comparison.
equiv_options({{"cell?", "cell?"}});

In the following example, cell names that begin with “cell” followed by any single integer digit
from 0 to 9 are paired to form equivalence points for comparison.
equiv_options({{"cell[0-9]", "cell[0-9]"}});

In the following example, all equivalence pairings of schematic cell “scell” matched to any
layout cell name are ignored.
equiv_options({{"scell", "*", ignore=true}});

See Also
check_property()
compare()
filter()
match()
merge_parallel()
merge_series()
lvs_options()
recalculate_property()
short_equivalent_nodes()

Chapter 2: Runset Functions: A - I


equiv_options() 2-438
IC Validator Reference Manual Version N-2017.12-SP2

error_merge()
The error_merge() function converts an error layer to a polygon layer.

Syntax
error_merge(
layer1 = error_layer,
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
line_touch_shape = OUTSIDE | INSIDE | BOTH, //optional
name = "layer_label", //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the error layer from which polygons are selected.

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.
❍ CENTERLINE. Outputs spacing violations as an expanded line at the center of the
projection region. The midpoints of the sides of the violation region form a line that is
expanded in both directions by width/2. When the output_type argument is
CENTERLINE, only parallel spacing is supported.

❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when the extension argument is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width argument value on both
sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width argument value. Violations are oriented along the line.

Chapter 2: Runset Functions: A - I


error_merge() 2-439
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.
See the examples for the output_type argument of the enclose() function for more
information.

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is .001.
See the examples for the width argument of the enclose() function for more
information.

line_touch_shape
Optional. Specifies how to expand a line-touch edge violation into a polygon. Use the
line_touch_shape argument only with error layers that come from a two-layer spacing
check. The default is OUTSIDE.
❍ OUTSIDE. Outputs a line-touch polygon outside of the dimensional function layer1
polygon. The output polygon size equals the value of the width argument.
❍ INSIDE. Outputs a line-touch polygon inside of the layer1 layer. The output polygon
size equals the value of the width argument.
❍ BOTH. Outputs a line touch polygon inside and outside of the layer1 layer. The total
output size is 2*width.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The violation region is approximated with edges that are either
perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.

Chapter 2: Runset Functions: A - I


error_merge() 2-440
IC Validator Reference Manual Version N-2017.12-SP2

❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing
distance. This value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
error_merge_edge()

Chapter 2: Runset Functions: A - I


error_merge() 2-441
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

error_merge_edge()
The error_merge_edge() function converts an error layer to an edge layer.

Syntax
error_merge_edge(
layer1 = error_layer,
output_layer = LAYER1 | LAYER2, //optional
output_type = FAIL | POINT_TO_POINT, //optional
edge_to_edge_output_type = FAIL | CENTERLINE, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the error layer from which polygons are selected.

output_layer
Optional. Specifies the layer that is output for the violations. The default is LAYER1.
❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.


Note:
When the layer1 error layer is from a one layer spacing check, setting the
output_layer argument to LAYER2 produces an empty layer.
See the examples for the output_layer argument of the enclose_edge() and
not_enclose_edge() functions for more information.

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
Note:
The output_type argument is applicable only to corner errors, that is, those errors
that come from a *corner_error() function.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.

Chapter 2: Runset Functions: A - I


error_merge_edge() 2-442
IC Validator Reference Manual Version N-2017.12-SP2

❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. Edge endpoints are ordered from layer1 to layer2.
POINT_TO_POINT creates an orphan edge layer.

edge_to_edge_output_type
Optional. Specifies the type of output generated. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Specifies that spacing violations are output as a line at the center of the
projection region. A line is two points connected with no specific order. The midpoints
of the sides of the violation region are used to create the lines.
Only parallel spacing is supported, and those errors must come from
external1_error(), external2_error(), internal1_error(),
internal2_error(), or enclose_error().

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
err_polygons = error_merge(external_errs);

See Also
error_merge()

Chapter 2: Runset Functions: A - I


error_merge_edge() 2-443
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

error_options()
The error_options() function specifies the error output for the design being verified.
If you are classifying DRC errors, use these arguments:
match_errors
mustfix_errors
comment_match_delimiter

See the DRC Error Classification chapter in the IC Validator User Guide for more
information.

Syntax
error_options(
error_limit_per_check = integer, //optional
db_path = "string", //optional
pcell_list = {"string", ...}, //optional
create_vue_output = true | false, //optional
comment_match_delimiter = "string", //optional
match_errors = {{db_name = "string",
db_path = "string",
suppress_matched_errors = {"string", ...},
report_unmatched_errors = true | false,
missing_db = ERROR | IGNORE},
...}, //optional
mustfix_errors = {{violation_comments = {"string", ...},
cells = {"string", ...}},
...}, //optional
report_layout_errors = {HIERARCHICAL, TOP}, //optional
report_empty_violations = true | false, //optional
report_flat_violation_count = true | false, //optional
clean_classifications = {"string", ...}, //optional
match_errors_processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
create_lvs_short_output = true | false, //optional
demagnify_errors = true | false, //optional
violation_options = {{violation_comments = {"string", ...},
match_errors_processing_mode =
CELL_LEVEL | HIERARCHICAL |
UNSPECIFIED, //optional
match_errors_tolerance = double,
...}, //optional
rule_name_delimiter = {search_string = "string",
ignore_case = true | false}, //optional
report_error_details = true | false, //optional
flatten_violations = {"string", ...}, //optional
flatten_violations_limit = integer, //optional
match_errors_tolerance = double, //optional
match_renamed_cells = USE_NEW_NAME | USE_ORIGINAL_NAME,
//optional

Chapter 2: Runset Functions: A - I


error_options() 2-444
IC Validator Reference Manual Version N-2017.12-SP2

classify_by_layer = {{violation_comments = {"string", ...},


classification = "string",
classification_comment = "string", //optional
cells = {"string", ...},
//optional
ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...}},
//optional
ambit = double, //optional
halo = {outside = double,
inside = double},
//optional
relationship = ENCLOSE | INTERACT,
NOT_ENCLOSE |
NOT_INTERACT,
//optional
include_touch = NONE | EDGE | ALL,
//optional
directional_ambit = {north = double,
south = double,
east = double,
west = double,
//optional
directional_halo = {outside_north = double,
inside_north = double,
outside_south = double,
inside_south = double,
outside_east = double,
inside_east = double,
outside_west = double,
inside_west = double},
//optional
suppress_by_layer = {{violation_comments = {"string", ...},
cells = {"string", ...},
//optional
ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...}},
//optional
ambit = double, //optional
halo = {outside = double,
inside = double},
//optional
relationship = ENCLOSE | INTERACT,
NOT_ENCLOSE |
NOT_INTERACT,
//optional
include_touch = NONE | EDGE | ALL,
//optional
directional_ambit = {north = double,
south = double,
east = double,

Chapter 2: Runset Functions: A - I


error_options() 2-445
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

west
= double,
//optional
directional_halo = {outside_north = double,
inside_north = double,
outside_south = double,
inside_south = double,
outside_east = double,
inside_east = double,
outside_west = double,
inside_west = double},
//optional
partially_exploded_cells = KEEP | EXPLODE //optional
);

Returns
void

Arguments
error_limit_per_check
Optional. Specifies the maximum number of errors, per function, stored in the error
database and the LAYOUT_ERRORS file. Setting this argument to ERROR_LIMIT_MAX
causes all errors up to a tool-defined maximum limit to be stored. The limit can be set
above the tool-defined maximum limit by giving a specific number. However, setting the
limit above the tool-defined maximum might result in decreased performance and
increased disk usage for large numbers of errors, and therefore is not recommended.
Setting it to 0 suppresses storage of all errors. The default is 100.
Note:
If error_limit_per_check = 0 and errors were found during the run, the
LAYOUT_ERRORS file notes that errors were found but error output was
suppressed.

db_path
Optional. Specifies the location where the error database (PYDB) is stored. The default
is "run_details/pydb". To change the directory, use the run_details_path argument
of the run_options() function.
The error database file name is PYDB_top-cell.

pcell_list
Optional. Specifies the list of strings to control the output of errors for parameterized
cells, pcells. If a cell matches a specified string, any error that occurs in that cell is
exploded and reported in its parent cell. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


error_options() 2-446
IC Validator Reference Manual Version N-2017.12-SP2

create_vue_output
Optional. Specifies if output for VUE is generated. When the create_vue_output
argument is true, the IC Validator tool generates all output data required to run VUE.
You can also enable generation of VUE output with the -vue command-line option. The
default is false.

comment_match_delimiter
Optional. Specifies a delimiter string for violation comment matching in imported error
classification databases. If a delimiter string is specified, a violation comment from the
runset is considered equivalent to any violation in the error classification database that
matches up to the first occurrence of the delimiter string.

match_errors
Optional. Lists the error classification databases to import for DRC error classification
matching. The order of this list specifies the match precedence. By default, the
IC Validator tool does not import any error classification databases.
Note:
Each error classification database that is specified requires its own server process.
Therefore, you must ensure that your shell process limit is high enough. Enter “limit
maxproc” in your UNIX shell to obtain the maximum number of processes for the
shell. A guideline is to ensure that the maximum process limit is three times the
number of the error classification databases used in the run.
See the Database Naming Conventions section in the DRC Error Classification chapter
of the IC Validator User Guide for more information.
❍ db_name. Required. Specifies the error classification database name.

❍ db_path. Required. Specifies the error classification database path.

❍ suppress_matched_errors. Optional. Specifies if errors that are classified from this


error classification database are to be suppressed. This argument accepts a list of
strings that represent the error classifications which are to be suppressed. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for
more information. By default, the IC Validator tool does not suppress matched errors.
For example, to suppress all errors that match Waive or Ignore classifications from
this error classification database:
suppress_matched_errors = {"Waive","Ignore"}

To suppress all errors from this error classification database:


suppress_matched_errors = {"*"}

The default is that no errors are suppressed.

Chapter 2: Runset Functions: A - I


error_options() 2-447
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ report_unmatched_errors. Optional. Specifies if the IC Validator tool creates a new


violation. When set to true, the IC Validator tool creates a new violation for any errors
that exist in this error classification database but are not produced during the run.
This behavior applies only to violations and cells that are part of the run. The resulting
errors are classified as Unmatched. The default is false.
❍ missing_db. Optional. Specifies the behavior when the IC Validator tool does not find
the specified error classification database. The default is ERROR.
■ ERROR. Stops the IC Validator run with an error if the tool cannot find the error
classification database.
■ IGNORE. Continues the IC Validator run if the tool cannot find the error
classification database.

mustfix_errors
Optional. Lists the violations and cells that must be fixed. Any errors that occur in a
must-fix violation or cell cannot be classified as Waive or Ignore. By default, no violations
or cells are must-fix.
❍ violation_comments. Optional. Specifies the strings for the violation comments that
are must-fix. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information. By default, all violations must be fixed.
❍ cells. Optional. Specifies the strings for the cell names that are must-fix. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for
more information. By default, all cells must be fixed.

report_layout_errors
Optional. Specifies the layout error reports that are generated at the end of the run. The
default is HIERARCHICAL, which generates only the hierarchical report.
If you want to generate both files, list both options:
report_layout_errors = {HIERARCHICAL, TOP} //Creates LAYOUT_ERRORS and
//TOP_LAYOUT_ERRORS reports

If you do not want either file, use an empty list:


report_layout_errors = {} //Creates neither LAYOUT_ERRORS nor
//TOP_LAYOUT_ERRORS reports

❍ HIERARCHICAL. Generates the hierarchical cell.LAYOUT_ERRORS report.


Coordinates are reported at the cell level.
❍ TOP. Generates the cell.TOP_LAYOUT_ERRORS report. Coordinates are reported in
the top cell of the design.

Chapter 2: Runset Functions: A - I


error_options() 2-448
IC Validator Reference Manual Version N-2017.12-SP2

Note:
TOP is not a flat reporting option. Instead of reporting errors one time inside a
lower-level cell, errors are reported one time in the top cell over a single instance
of the lower-level cell. Errors are not reported for all instances of a lower-level cell.

report_empty_violations
Optional. Specifies if the ERROR SUMMARY section of the LAYOUT_ERRORS file
includes rules that produced zero errors as well as rules that were not executed. The
following command-line options can cause rules to not execute: -il, -iln, -svn, -svc,
-uvn, -uvc, -sfn, -ufn, and -ro. The default is false.

❍ true. Specifies that the ERROR SUMMARY section of the LAYOUT_ERRORS file
reports rules that have zero violations as well as rules that were not executed.
❍ false. Does not report rules that have zero violations.
For example,
952 Rule1
953 external2 ................................. 0 violations found.
954 and ....................................... 0 violations found.
955
956 Rule2
957 internal1 ................................. 0 violations found.
958
959 Rule3 Not executed.
960
961 Rule4 Not executed.
962
963 Rule5 Not executed.

report_flat_violation_count
Optional. Specifies if the ERROR SUMMARY section of the LAYOUT_ERRORS file
includes a flat count of the violations. The default is false.
The flat count is the number of errors in a cell multiplied by the number of flat placements
of that cell. The flat count in the LAYOUT_ERRORS report is the count before the error
limit per check is applied.
Note:
This does not flatten any of the error coordinates.
❍ true. Specifies that the ERROR SUMMARY section of the LAYOUT_ERRORS file
reports the flat count.
❍ false. Does not report the flat count.

Chapter 2: Runset Functions: A - I


error_options() 2-449
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

clean_classifications
Optional. Determines how error classification affects the clean status of the layout
reported in the LAYOUT_ERRORS file. If all reported errors are of the classifications in
this list, the LAYOUT_ERRORS file reports the layout as clean. If there are any
unclassified errors or if there are any errors whose classification is not in this list, the
layout is not reported as clean.
This argument does not affect how errors are listed in the LAYOUT_ERRORS file; it
affects only the clean status of the layout. The default is an empty list, which means that
any reported error causes an error result.
The classifications are:
Ignore
Waive
Watch
Fixed
Unmatched
Note:
These classifications are the same as those listed in the Error Classifications table in
the Running IC Validator Within VUE chapter of the IC Validator VUE User Guide,
except that Error is not valid as a clean classification.
This list of classifications applies to all errors including those reported from the
text_net() function and error classifications from a cPYDB. See the
error_classifications argument of the text_net() function for more information.
For example,
error_options(clean_classifications = {"Ignore", "Watch"};

match_errors_processing_mode
Optional. Specifies if the IC Validator tool uses cell level or hierarchical processing to
match classified violations in an error classification database. The HIERARCHICAL mode
was added after the CELL_LEVEL mode. While it is not the default, it is the recommended
setting. The default is CELL_LEVEL.
❍ CELL_LEVEL. Matches individual errors from the IC Validator run with classified errors
from the cPYDB at the cell level. This is the default value.
Note:
The CELL_LEVEL mode puts restrictions on hierarchy optimization. In particular,
cells with classified errors in the cPYDB are marked as no explode. Also, setting
the flow argument of the hierarchy_auto_options() function to
ERROR_CLASSIFICATION is recommended for this mode. This setting further
restricts hierarchy optimization to ensure the best chance of matching errors.

Chapter 2: Runset Functions: A - I


error_options() 2-450
IC Validator Reference Manual Version N-2017.12-SP2

❍ HIERARCHICAL. Hierarchically matches errors from the IC Validator run with classified
errors from the cPYDB. This mode puts no restrictions on hierarchy optimization.
Cells that have classified errors in the cPYDB are allowed to explode.
Note:
Setting the partially_exploded_cells argument of the error_options()
function to EXPLODE is recommended for HIERARCHICAL error classification,
especially for the initial IC Validator run used to create the error classification
database. Using this argument ensures that errors are reported in cells for which
the IC Validator tool has kept all placements from the original design hierarchy.
An error is considered a match for a classified error from the cPYDB if the complete
hierarchically-formed shape of the errors produced by the IC Validator tool exactly
overlaps the complete hierarchically-formed shape of errors from the cPYDB with the
same classification.
Errors can also be matched individually when possible. That is, when a single error,
rather than the complete hierarchically-formed shape consisting of multiple errors,
exactly overlaps a corresponding single error in the cPYDB it is considered a match.
Conflicts when an error matches multiple cPYDB errors are resolved as follows:
■ A match within the same cell takes priority over a match from a different level of
hierarchy.
■ A match from a cPYDB specified in the match_errors argument list takes priority
over one from a cPYDB, which is specified later.
■ A match in a non-suppressed class takes priority over a match in a suppressed
class. See the suppress_matched_errors option of the match_errors
argument.
■ Any further conflict resolution is arbitrary.

create_lvs_short_output
Optional. Enables the generation of interactive LVS short finder output. A maximum of
200 shorts are reported. The default is false. See the IC Validator VUE User Guide for
more information about LVS Short Finder.
The -create_lvs_short_output command-line option also creates LVS short finder
output. With the command-line option you can specify to report only a set number of
shorts or all shorts. See the Command-Line Options section in the “IC Validator Basics”
chapter of the IC Validator User Guide for more information.
A cellname.vue file is created. The output is in the ./run_details/short_out_db directory.

Chapter 2: Runset Functions: A - I


error_options() 2-451
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

demagnify_errors
Optional. Specifies if the input library magnification factor is reversed for error
coordinates in the LAYOUT_ERRORS file. (See the magnification_factor argument
of the library() function.) The default is false.
❍ true. Divides the error coordinates in the LAYOUT_ERRORS file by the input library
magnification factor. That is, the errors are found at the runset magnification, but
written to the LAYOUT_ERRORS file at the input library magnification.
❍ false. Does not divide the error coordinates in the LAYOUT_ERRORS file by the
input library magnification factor. That is, errors are found at the runset magnification
and also written to the LAYOUT_ERRORS file at the runset magnification.

violation_options
Optional. Allows global settings from the error_options() function to be overridden for
specified violation comments.
❍ violation_comments. Required. Lists the violations that these settings apply to.
String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information.
❍ match_errors_processing_mode. Optional. Specifies how errors are matched for
DRC error classification for the specified violation comments. See the
match_errors_processing_mode argument for more information about the two
modes. The default is CELL_LEVEL.
■ CELL_LEVEL. Matches individual errors from the IC Validator run with classified
errors from the cPYDB at the cell level.
■ HIERARCHICAL. Hierarchically matches errors from the IC Validator run with
classified errors from the cPYDB.
■ UNSPECIFIED. Uses the value of the match_errors_processing_mode argument
of the error_options() function. This is the default value.
❍ match_errors_tolerance. Optional. Specifies a tolerance to be used when
matching error shapes for DRC error classification. The default is to use the
match_errors_tolerance argument of the error_options() function.

rule_name_delimiter
Optional. Defines a delimiter for rule names. Use this argument to display the rule name
rather than the full violation comment in the verbose results file and in VUE. The violation
comment is truncated at the first instance of this delimiter. If the delimiter is not matched,
the entire violation comment is displayed. The violation comment might be truncated for
length; the maximum length of a violation comment is 1024 characters.

Chapter 2: Runset Functions: A - I


error_options() 2-452
IC Validator Reference Manual Version N-2017.12-SP2

❍ search_string. Specifies the delimiter. The search string must be a GNU extended
regular expression. The default is
"[[:space:]]+:|[[:space:]]*:[[:space:]]"
That is, the default is one of the following:
■ One or more white space characters followed by a colon.
■ Zero or more white space characters followed by a colon followed by one white
space character.
❍ ignore_case. Specifies if the character case in the violation comment is considered
when matching the delimiter. The default is false.
■ true. The search is case-sensitive.

■ false. The search is not case-sensitive.

report_error_details
Optional. Specifies if violation details are reported to the LAYOUT_ERRORS and
TOP_LAYOUT_ERRORS files. The default is true.
❍ true. Reports violation details to the LAYOUT_ERRORS and
TOP_LAYOUT_ERRORS files.
❍ false. Does not report violation details to the LAYOUT_ERRORS and
TOP_LAYOUT_ERRORS files. The information is still stored in the error database
(PYDB), but only the violation summary section is written to the LAYOUT_ERRORS
file.
Note:
You can also use the -ned command-line option to set the value to false. See the
Command-Line Options section in the “IC Validator Basics” chapter of the
IC Validator User Guide for more information.

flatten_violations
Optional. Flattens the violation output under the specified cells into the specified cells.
String matching using metacharacters is allowed. See “String Matching” on page A-11 for
more information. By default, the IC Validator tool does not flatten violation output.
Note:
The flatten_violations argument can place limitations on automatic hierarchy
optimizations, which can affect performance. Avoid wildcard usage, which might
select more cells than necessary.

flatten_violations_limit
Optional. Specifies that if flattening violation output for a particular function, according to
the flatten_violations argument, increases the violation count by more than this

Chapter 2: Runset Functions: A - I


error_options() 2-453
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

limit, no violation flattening is performed for that function, and a warning is reported. The
default is 1000000.

match_errors_tolerance
Optional. Specifies a tolerance in microns to be used when matching interacting
classified error shapes from the cPYDB to error shapes generated by the current
IC Validator run. The default is 0 (zero), which means that the shapes must match
exactly for the classifications to be applied.

match_renamed_cells
Optional. When the IC Validator tool renames cells while reading Milkyway, NDM, or
OpenAccess layouts to avoid conflicts between cells of the same name in different
libraries, this argument specifies whether to use the original layout name or the new
unique name when searching error classification databases for classified errors, and
when exporting classified errors using pydb_export. The default is NEW_NAME.
❍ USE_NEW_NAME. For renamed cells, the new unique name given by the tool is used for
error classification.
❍ USE_ORIGINAL_NAME. For renamed cells, the original layout name is used for error
classification.
Note:
Ensure that the contents of the cells are identical before using this argument.

classify_by_layer
Optional. Specifies error classifications to be applied based on polygon shapes.
❍ violation_comments. Required. Specifies a list of violation comments for which this
particular error classification is applied. String matching with metacharacters is
supported.
❍ classification. Required. Specifies the error classification to be applied to error
shapes that interact with classification shapes.
The valid classifications for this option are:
Ignore
Waive
Watch
Fixed
❍ classification_comment. Optional. Specifies the comment to be used for error
classification. The default is that no comment is used.
❍ cells. Optional. Specifies a list of cells from which the classification shapes are
derived. The default is all cells. If the ldt_list option is specified, the layout shapes

Chapter 2: Runset Functions: A - I


error_options() 2-454
IC Validator Reference Manual Version N-2017.12-SP2

are used only from the cells listed, and at cell level. Otherwise, the cell data extents
of the cells listed are used to derive the classification shapes.
❍ ldt_list. Optional. Specifies a list of layer and datatype ranges that specify a drawn
layer to be used for classification shapes. The default is to use cell data extents to
derive classification shapes.
❍ ambit. Optional. Specifies that classification shapes are oversized or undersized by
the specified amount. The default is no ambit. Only one of the ambit, halo,
directional_ambit, or directional_halo arguments can be specified.

❍ halo. Optional. Specifies that classification shapes are used to derive a halo or ring
using the specified inside or outside distances. The default is no halo. Only one of the
ambit, halo, directional_ambit, or directional_halo arguments can be
specified.
■ inside. Specifies that classification shapes derive a halo or ring using the
specified inside distance.
■ outside. Specifies that classification shapes derive a halo or ring using the
specified outside distance.
❍ relationship. Optional. Specifies the type of polygon interactions to consider for
classification. The default is INTERACT.
■ ENCLOSE. Specifies that the error shape must be fully enclosed by the
classification shape for classification to be applied.
■ INTERACT. Specifies that the interaction between the error shape and the
classification shape determines the classification to be applied. The
include_touch argument specifies the level of interaction that will apply
classification in the case of outside touches.
■ NOT_ENCLOSE. Specifies that the violations which are not enclosed by the
classification layer polygons are suppressed.
■ NOT_INTERACT. Specifies that the violations which do not interact with the
classification layer polygons are suppressed.
❍ include_touch. Optional. Specifies the outside touches that are included in the
interaction check when applying classification. The default is ALL.
■ NONE. Includes neither point touch or line touch.

■ EDGE. Includes edge touch.

■ ALL. Includes all touches (edge and point).

❍ directional_ambit. Optional. Specifies that classification shapes are oversized or


undersized by the specified amount in the specified directions. The default is no

Chapter 2: Runset Functions: A - I


error_options() 2-455
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ambit. Only one of the ambit, halo, directional_ambit, or directional_halo


arguments can be specified.
Note:
The grow() and shrink() functions are used to derive the directional ambit, so
any behavior of these functions also applies to the derivation of the
directional_ambit argument.

■ north. Specifies that the classification shapes are oversized or undersized in the
north direction by the specified amount.
■ south. Specifies that the classification shapes are oversized or undersized in the
south direction by the specified amount.
■ east. Specifies that the classification shapes are oversized or undersized in the
east direction by the specified amount.
■ west. Specifies that the classification shapes are oversized or undersized in the
west direction by the specified amount.
❍ directional_halo. Optional. Specifies that classification shapes are used to derive
a halo or ring using the specified inside or outside distances in the specified
directions. The default is no halo. Only one of the ambit, halo, directional_ambit,
or directional_halo arguments can be specified.
Note:
The grow() and shrink() functions are used to derive the directional ambit, so
any behavior of these functions also applies to the derivation of the
directional_ambit argument.

■ outside_north. Specifies that classification shapes derive a halo or ring using


the specified outside distance in the north direction.
■ inside_north. Specifies that classification shapes derive a halo or ring using the
specified inside distance in the north direction.
■ outside_south. Specifies that classification shapes derive a halo or ring using
the specified outside distance in the south direction.
■ inside_south. Specifies that classification shapes derive a halo or ring using the
specified inside distance in the south direction.
■ outside_east. Specifies that classification shapes derive a halo or ring using the
specified outside distance in the east direction.
■ inside_east. Specifies that classification shapes derive a halo or ring using the
specified inside distance in the east direction.
■ outside_west. Specifies that classification shapes derive a halo or ring using the
specified outside distance in the west direction.

Chapter 2: Runset Functions: A - I


error_options() 2-456
IC Validator Reference Manual Version N-2017.12-SP2

■ inside_west. Specifies that classification shapes derive a halo or ring using the
specified inside distance in the west direction.

suppress_by_layer
Optional. Specifies error suppressions to be applied based on polygon shapes.
❍ violation_comments. Required. Specifies a list of violation comments for which this
particular error suppression is applied. String matching with metacharacters is
supported.
❍ cells. Optional. Specifies a list of cells from which the suppression shapes are
derived. The default is all cells. If the ldt_list option is specified, the layout shapes
are used only from the cells listed, and at cell level. Otherwise, the cell data extents
of the cells listed are used to derive the suppression shapes.
❍ ldt_list. Optional. Specifies a list of layer and datatype ranges that specify a drawn
layer to be used for suppression shapes. The default is to use cell data extents to
derive suppression shapes.
❍ ambit. Optional. Specifies that suppression shapes are oversized or undersized by
the specified amount. The default is no ambit. Only one of the ambit, halo,
directional_ambit, or directional_halo arguments can be specified.

❍ halo. Optional. Specifies that suppression shapes are used to derive a halo or ring
using the specified inside or outside distances. The default is no halo. Only one of the
ambit, halo, directional_ambit, or directional_halo arguments can be
specified.
■ inside. Specifies that suppression shapes derive a halo or ring using the
specified inside distance.
■ outside. Specifies that suppression shapes derive a halo or ring using the
specified outside distance.
❍ relationship. Optional. Specifies the type of polygon interactions to consider for
suppression. The default is INTERACT.
■ ENCLOSE. Specifies that the error shape must be fully enclosed by the suppression
shape for the error to be suppressed.
■ INTERACT. Specifies that the interaction between the error shape and the
suppression shape causes the error to be suppressed. The include_touch
argument specifies the level of interaction that will suppress errors in the case of
outside touches.
■ NOT_ENCLOSE. Specifies that the violations which are not enclosed by the
classification layer polygons are suppressed.

Chapter 2: Runset Functions: A - I


error_options() 2-457
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ NOT_INTERACT. Specifies that the violations which do not interact with the
classification layer polygons are suppressed.
❍ include_touch. Optional. Specifies the outside touches that are included in the
interaction check when suppressing errors. The default is ALL.
■ NONE. Includes neither point touch or line touch.

■ EDGE. Includes edge touch.

■ ALL. Includes all touches (edge and point).

❍ directional_ambit. Optional. Specifies that suppression shapes are oversized or


undersized by the specified amount in the specified directions. The default is no
ambit. Only one of the ambit, halo, directional_ambit, or directional_halo
arguments can be specified.
Note:
The grow() and shrink() functions are used to derive the directional ambit, so
any behavior of these functions also applies to the derivation of the
directional_ambit argument.

■ north. Specifies that the suppression shapes are oversized or undersized in the
north direction by the specified amount.
■ south. Specifies that the suppression shapes are oversized or undersized in the
south direction by the specified amount.
■ east. Specifies that the suppression shapes are oversized or undersized in the
east direction by the specified amount.
■ west. Specifies that the suppression shapes are oversized or undersized in the
west direction by the specified amount.
❍ directional_halo. Optional. Specifies that suppression shapes are used to derive
a halo or ring using the specified inside or outside distances in the specified
directions. The default is no halo. Only one of the ambit, halo, directional_ambit,
or directional_halo arguments can be specified.
Note:
The grow(), shrink(), and not() functions are used to derive the directional
halo, so any behavior of these functions also applies to the derivation of the
directional_halo argument.

■ outside_north. Specifies that suppression shapes derive a halo or ring using the
specified outside distance in the north direction.
■ inside_north. Specifies that suppression shapes derive a halo or ring using the
specified inside distance in the north direction.

Chapter 2: Runset Functions: A - I


error_options() 2-458
IC Validator Reference Manual Version N-2017.12-SP2

■ outside_south. Specifies that suppression shapes derive a halo or ring using the
specified outside distance in the south direction.
■ inside_south. Specifies that suppression shapes derive a halo or ring using the
specified inside distance in the south direction.
■ outside_east. Specifies that suppression shapes derive a halo or ring using the
specified outside distance in the east direction.
■ inside_east. Specifies that suppression shapes derive a halo or ring using the
specified inside distance in the east direction.
■ outside_west. Specifies that suppression shapes derive a halo or ring using the
specified outside distance in the west direction.
■ inside_west. Specifies that suppression shapes derive a halo or ring using the
specified inside distance in the west direction.

partially_exploded_cells
Optional. Specifies where to report errors found in cells for which the IC Validator tool
has kept only some placements in the hierarchy. The default is KEEP.
❍ KEEP. Specifies that errors found in partially exploded cells are kept in the cell in which
they are found.
❍ EXPLODE. Specifies that errors found in partially exploded cells are reported at a
higher level in the hierarchy, in a cell from the original hierarchy that has not been
modified by hierarchy optimization.
Note:
The EXPLODE setting is recommended for HIERARCHICAL mode-error classification
flows, including the initial IC Validator run used to generate the error classification
database.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
error_options (
error_limit_per_check = 10,
db_path = "/mypath/pydb"
);

Chapter 2: Runset Functions: A - I


error_options() 2-459
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
write_gds()
write_milkyway()

Chapter 2: Runset Functions: A - I


error_options() 2-460
IC Validator Reference Manual Version N-2017.12-SP2

error_to_link_edge()
The error_to_link_edge() function selects polygons from an error layer and returns an
edge layer that represents the shortest edge layer between each error layer pair.

Syntax
error_to_link_edge(
layer1 = error_layer,
name = "layer_label", //optional
shift_min_length = double, //optional
shift_ratio = double, //optional
shift_mode = {SHORTEST, CENTER, CENTER_ALL_ANGLE,
OPPOSITE, ERROR_CENTER, ...} //optional
);

Returns
edge layer

Arguments
layer1
Required. Specifies the error layer from which polygons are selected.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

shift_min_length
Optional. Specifies the link shifting threshold. A link is shifted only when its length is
equal to or greater than this value. The default is 0 (zero).

shift_ratio
Optional. Defines the ratio of the shift segment to the overlap segment. This ratio must
be a value from 0.0 to 1.0. For example, if the overlap segment for an error pair is 100
microns and this value is set to 0.1, the shift segment is 10 microns. The shifted link is
within this segment. The default is 1.

shift_mode
Optional. Specifies the mode used to generate the link, which can be a subset of all
modes. The default is SHORTEST.
❍ SHORTEST. Uses the shortest distance between error pairs to generate a link.

Chapter 2: Runset Functions: A - I


error_to_link_edge() 2-461
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CENTER. Uses center points of the error pair to generate a link. This mode is
applicable only when the run length is less than or equal to 0 (zero) and the link
derived by the default shift mode is orthogonal.
❍ CENTER_ALL_ANGLE. Uses center points of the error pair to generate a link. This mode
is applicable only when the error pair run length is less than or equal to 0 (zero).
❍ OPPOSITE. Shifts two endpoints of the generated link in opposite directions with
respect to the shift ratio. This mode is applicable only when the shift range is positive,
which means the run length is greater than 0 (zero), the link length is greater than or
equal to the shift threshold, and the shift ratio is greater than 0 (zero).
❍ ERROR_CENTER. Uses center points of the error pair to generate a link.
Note:
When you select the ERROR_CENTER option to generate a link, all of the other
modes are disabled.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
The following examples show two polygons (orange) that have red error pair markers. The
green result is the generated edge data.
In the first example, the image on the left side has a single error pair (from a simple space
check). The image on the right side has a corner structure and shows two error pairs.
green = error_to_link_edge(red);

Chapter 2: Runset Functions: A - I


error_to_link_edge() 2-462
IC Validator Reference Manual Version N-2017.12-SP2

Single Error Pair Two Error Pairs

The second example shows a center edge link for each error pair.
green = error_to_link_edge(red, shift_mode = {ERROR_CENTER});

Single Error Pair Two Error Pairs

See Also
error_merge()
error_merge_edge()

Chapter 2: Runset Functions: A - I


error_to_link_edge() 2-463
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

exclude_milkyway_cell_types()
The exclude_milkyway_cell_types() function returns a list of Milkyway cell types that
are not specified in the exclude argument. You can use this function to exclude cell types
when reading in a Milkyway library. See the cell_types argument of the
milkyway_options() function and the milkyway argument of assign functions for more
information.

Syntax
exclude_milkyway_cell_types(
exclude = {cell_type, ...}
);

Returns
list of Milkyway cell types

Arguments
exclude
Required. Specifies the Milkyway cell types that are excluded from the returned list of cell
types. See Table 3-15 for a list of cell types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the exclude_milkyway_net_types() function for more
information.

See Also
exclude_milkyway_net_types()
exclude_milkyway_route_guide_layers()
exclude_milkyway_route_types()

Chapter 2: Runset Functions: A - I


exclude_milkyway_cell_types() 2-464
IC Validator Reference Manual Version N-2017.12-SP2

exclude_milkyway_net_types()
The exclude_milkyway_net_types() function returns a list of Milkyway net types that are
not specified in the exclude argument. You can use this function to exclude net types when
reading in a Milkyway library. See the net_types argument of the milkyway_options()
function and the milkyway argument of assign functions for more information.

Syntax
exclude_milkyway_net_types(
exclude = {net_type, ...}
);

Returns
list of Milkyway net types

Arguments
exclude
Required. Specifies the Milkyway net types that are excluded from the returned list of net
types. See Table 3-16 for the list of net types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
In the following example, power and ground nets are excluded from the net types read from
the Milkyway library.
milkyway_options(net_types=exclude_milkyway_net_types(POWER,GROUND));

See Also
exclude_milkyway_cell_types()
exclude_milkyway_route_guide_layers()
exclude_milkyway_route_types()

Chapter 2: Runset Functions: A - I


exclude_milkyway_net_types() 2-465
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

exclude_milkyway_route_guide_layers()
The exclude_milkyway_route_guide_layers() function returns a list of Milkyway route
guides that are not specified in the exclude argument. You can use this function to exclude
route guides when reading in a Milkyway library. See the route_guide_layers argument of
the milkyway_options() function and the milkyway argument of assign functions for more
information.

Syntax
exclude_milkyway_route_guide_layers(
exclude = {layer_type, ...}
);

Returns
list of Milkyway route guides

Arguments
exclude
Required. Specifies the Milkyway route guides that are excluded from the returned list of
route guides. See Table 3-17 for a list of route guide layers.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the exclude_milkyway_net_types() function for more
information.

See Also
exclude_milkyway_cell_types()
exclude_milkyway_net_types()
exclude_milkyway_route_types()

Chapter 2: Runset Functions: A - I


exclude_milkyway_route_guide_layers() 2-466
IC Validator Reference Manual Version N-2017.12-SP2

exclude_milkyway_route_types()
The exclude_milkyway_route_types() function returns a list of Milkyway route types that
are not specified in the exclude argument. You can use this function to exclude cell types
when reading in a Milkyway library. See the route_types argument of the
milkyway_options() function and the milkyway argument of assign functions for more
information.

Syntax
exclude_milkyway_route_types(
exclude = {route_type, ...}
);

Returns
list of Milkyway route types

Arguments
exclude
Required. Specifies the Milkyway route types that are excluded from the returned list of
route types. See Table 3-18 for a list of route types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the exclude_milkyway_net_types() function for more
information.

See Also
exclude_milkyway_cell_types()
exclude_milkyway_net_types()
exclude_milkyway_route_guide_layers()

Chapter 2: Runset Functions: A - I


exclude_milkyway_route_types() 2-467
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

exclude_ndm_blockage_types()
The exclude_ndm_blockage_types() function returns a list of NDM blockage types that
are not specified in the exclude argument. You can use this function to easily exclude
blockage types when reading in an NDM library. See the blockage_types option for the ndm
argument of assign functions for more information.

Syntax
exclude_ndm_blockage_types(
exclude = {blockage_type, ...}
);

Returns
list of NDM blockage types

Arguments
exclude
Required. Specifies the NDM blockage types that are excluded from the returned list of
blockage types. Table 2-10 lists the blockage types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
exclude_ndm_design_types()
exclude_ndm_net_types()
exclude_ndm_shape_uses()

Chapter 2: Runset Functions: A - I


exclude_ndm_blockage_types() 2-468
IC Validator Reference Manual Version N-2017.12-SP2

exclude_ndm_design_types()
The exclude_ndm_design_types() function returns a list of NDM design types that are not
specified in the exclude argument. You can use this function to easily exclude design types
when reading in an NDM library. See the design_types argument of the ndm_options()
function and the design_types option for the ndm argument of assign functions for more
information.

Syntax
exclude_ndm_design_types(
exclude = {design_type, ...}
);

Returns
list of NDM design types

Arguments
exclude
Required. Specifies the NDM design types that are excluded from the returned list of
design types. Table 2-9 in the assign() function lists the device types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
exclude_ndm_blockage_types()
exclude_ndm_net_types()
exclude_ndm_shape_uses()

Chapter 2: Runset Functions: A - I


exclude_ndm_design_types() 2-469
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

exclude_ndm_net_types()
The exclude_ndm_net_types() function returns a list of NDM net types that are not
specified in the exclude argument. You can use this function to easily exclude net types
when reading in an NDM library. See the net_types option for the ndm argument of assign
functions for more information.

Syntax
exclude_ndm_net_types(
exclude = {net_type, ...}
);

Returns
list of NDM net types

Arguments
exclude
Required. Specifies the NDM net types that are excluded from the returned list of net
types. Table 2-8 lists the net types.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
exclude_ndm_blockage_types()
exclude_ndm_design_types()
exclude_ndm_shape_uses()

Chapter 2: Runset Functions: A - I


exclude_ndm_net_types() 2-470
IC Validator Reference Manual Version N-2017.12-SP2

exclude_ndm_shape_uses()
The exclude_ndm_shape_uses() function returns a list of NDM shape uses that are not
specified in the exclude argument. You can use this function to easily exclude shape uses
when reading in an NDM library. See the shape_uses option for the ndm argument of assign
functions for more information.

Syntax
exclude_ndm_shape_uses(
exclude = {shape_use, ...}
);

Returns
list of NDM shape uses

Arguments
exclude
Required. Specifies the NDM shape uses that are excluded from the returned list of
shape uses. See Table 2-7 for the list of shape uses.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
exclude_ndm_blockage_types()
exclude_ndm_design_types()
exclude_ndm_net_types()

Chapter 2: Runset Functions: A - I


exclude_ndm_shape_uses() 2-471
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extend_edge()
The extend_edge() function creates an edge from an edge by extending or shortening the
endpoints.
The endpoints of an edge are uniquely identified as the start and end. The endpoints are
ordered such that the inside, or material side, of the edge is on the right. See edge in the
Glossary for more information.

Syntax
extend_edge(
layer1 = edge_layer,
start = double, //optional
end = double, //optional
corners = CONNECT | IGNORE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
start_by_factor = double, //optional
end_by_factor = double, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

start
Optional. Specifies the distance the endpoint is adjusted at the start of the edge. A
positive value extends the edge; a negative value shortens it. When set to 0, the distance
at the start is not changed. The default is 0.

end
Optional. Specifies the distance the endpoint is adjusted at the end of the edge. A
positive value extends the edge, a negative value shortens it. When set to 0, the distance
at the end is not changed. The default is 0.

corners
Optional. Specifies how corners are processed. The default is IGNORE.
❍ CONNECT. Connects the edges end to end at the corners, extending only the first and
last edge of the chain. Closed chains are unchanged.
❍ IGNORE. Ignores corners. Each edge is extended individually.

Chapter 2: Runset Functions: A - I


extend_edge() 2-472
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

start_by_factor
Optional. Specifies the amount of extension at the start of the edge in terms of the edge
length. The product of a positive start_by_factor value and the edge length specifies
the amount to extend start points of the edge. The product of a negative
start_by_factor value and the edge length specifies the amount to retract the start
points of an edge. The default is 0.
Note:
The minimum expansion values for the start_by_factor argument is one working
resolution unit.
Either the start argument or the start_by_factor argument must be a nonzero value.
Otherwise, an edge is not output.
See the Examples section for more information.

end_by_factor
Optional. Specifies the amount of extension at the end of the edge in terms of the edge
length. The product of a positive end_by_factor value and the edge length specifies the
amount to extend the endpoints of the edge. The product of a negative end_by_factor
value the edge length specifies the amount to retract the endpoints of an edge. The
default is 0.
Note:
The minimum expansion values for the end_by_factor argument is one working
resolution unit.
Either the end argument or the end_by_factor argument must be a nonzero value.
Otherwise, an edge is not output.
See the Examples section for more information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


extend_edge() 2-473
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Using corners = CONNECT


For the following examples, Figure 2-163 shows the edge layer:
Figure 2-163 extend_edge() Function Example Input Edge Layer
2u 1u 1u

0.5u
1u
1u in_layer
(edge layer)

Figure 2-164 shows the output for this extend_edge() function:


out_layer = extend_edge(in_layer, start = 0.5, end = 0.0);

Figure 2-164 extend_edge() Function Example Output


Output 0.5u
0.5u 1u
0.5u
2u 1u
0.5u

1u
0.5u
1u
0.5u

0.5u
0.5u

Chapter 2: Runset Functions: A - I


extend_edge() 2-474
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-165 shows the output when the corners argument is CONNECT:
out_layer = extend_edge(in_layer, start = 0.5, end = 0.5,
corners = CONNECT);

Figure 2-165 extend_edge(corners = CONNECT) Example Output


Output
2u 1u 0.5u 1u

1u
1u
Closed edge chain with
0.5u corners = CONNECT.

Using start_by_factor and end_by_factor


Figure 2-166 shows using the start_by_factor and end_by_factor arguments when not
using the corners argument.
red_edge = extend_edge(layer1 = blue_edge,
start_by_factor = 0.5,
end-by_factor = 0.5);

Figure 2-166 Using the start_by_factor and end_by_factor Arguments Without the corners
Argument

Chapter 2: Runset Functions: A - I


extend_edge() 2-475
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-167 shows the using the start_by_factor and end_by_factor arguments with
the corners argument.
red_edge = extend_edge(layer1 = blue_edge,
start_by_factor = 0.5,
end-by_factor = 0.5,
corners = CONNECT);

Figure 2-167 Using the start_by_factor and end_by_factor Arguments Without the corners
Argument

See Also
edge_size()
edge_size_by_property()

Chapter 2: Runset Functions: A - I


extend_edge() 2-476
IC Validator Reference Manual Version N-2017.12-SP2

extent() and not_extent()


The extent() function selects polygons whose extents fit the specified dimensions. The
complement of this function is the not_extent() function.

Syntax
extent(
layer1 = polygon_layer,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_extent(
layer1 = polygon_layer,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

sides
Required. Specifies the dimensions of the extents of polygons that are selected using
two lengths, one per side. The dimensions must be greater than 0. The length2 option
is optional, with a default of >0. See “Constraints” on page A-4 for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 2: Runset Functions: A - I


extent() and not_extent() 2-477
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-168 shows the polygons selected for different settings of the sides argument of the
extent() function.

The figure on the right shows the result when both sides are between 5 and 15:
Result = extent(layer1, sides = {[5,15], [5,15]});

Figure 2-168 extent() Function Example

sides = {>0, sides = {[5,15], sides = {[5,15],


>0} >0} [5,15]}

layer1 Result

Chapter 2: Runset Functions: A - I


extent() and not_extent() 2-478
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-169 shows the polygons selected for different settings of the sides argument of the
not_extent() function.

Figure 2-169 not_extent() Function Example

layer1

sides = sides = Result


{[5,15], >0} {[5,15], [5,15]}

See Also
rectangles() and not_rectangles()

Chapter 2: Runset Functions: A - I


extent() and not_extent() 2-479
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external_corner1()
The external_corner1() function creates polygons that are formed by pairs of violation
corners. It measures outside-to-outside spacing on layer1 based on the distance
specified. The arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
The output consists of rectangles that are the extents of the point-to-point violations. In the
case where the violation is horizontal or vertical, the output rectangle is generated by
expanding the violation three times the input library resolution on both sides.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the external_corner1() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
external_corner1(
layer1 = data_layer,
distance = doubleconstraint,

Chapter 2: Runset Functions: A - I


external_corner1() 2-480
IC Validator Reference Manual Version N-2017.12-SP2

type = {CONVEX_TO_CONCAVE, CONVEX_TO_CONVEX,


CONVEX_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
look_thru = NONE | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


convex_to_convex_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection

Chapter 2: Runset Functions: A - I


external_corner1() 2-481
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.
Figure 2-170 shows the effect of the type argument settings.
Figure 2-170 type Argument Example

CONVEX_ CONVEX_ CONVEX_ PARALLEL_


TO_CONVEX TO_CONCAVE TO_EDGE POINT_PROJECTION

layer1 Result Result

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

Chapter 2: Runset Functions: A - I


external_corner1() 2-482
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-171 shows the effect of the angle argument settings.


Figure 2-171 angle Argument Example

layer1

ALL RIGHT Result


(Default)

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-172 shows the effect of the region argument settings.
Figure 2-172 region Argument Example

layer1

RADIAL SQUARE Result


(Default)

Chapter 2: Runset Functions: A - I


external_corner1() 2-483
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.
Figure 2-173 shows the effect of the convex_to_concave_boundary argument settings.
Figure 2-173 convex_to_concave_boundary Argument Example

layer1

Result

EXCLUSIVE INCLUSIVE Result


(Default)

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.
Figure 2-174 shows the effect of the convex_to_convex_boundary argument settings.
Figure 2-174 convex_to_convex_boundary Argument Example

layer1

Result

EXCLUSIVE INCLUSIVE_PARALLEL Result


(Default)

Chapter 2: Runset Functions: A - I


external_corner1() 2-484
IC Validator Reference Manual Version N-2017.12-SP2

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when the input layer is an edge layer.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-175 shows the effect of the edge_endpoints argument settings.
Figure 2-175 edge_endpoints Argument Example

CORNER ALL CORNER ALL


(polygon input) (polygon input) (edge input) (edge input)
(Default)

layer1 Result Areas shown for illustration

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

Chapter 2: Runset Functions: A - I


external_corner1() 2-485
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-176 shows the effect of the connectivity argument settings.


Figure 2-176 connectivity Argument Example

ALL SAME_NET DIFFERENT_NET


(Default)
layer1 via Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

membership
Optional. Specifies how to check between corners that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is ALL.
❍ ALL. Checks all corners regardless of polygon membership.

❍ SAME_POLYGON. Checks only corners that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only corners that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.

Chapter 2: Runset Functions: A - I


external_corner1() 2-486
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-177 shows the effect of the membership argument settings.


Figure 2-177 membership Argument Example

ALL SAME_POLYGON DIFFERENT_POLYGON


(Default)
layer1 Result

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the external1() function for more
information.
Figure 2-178 shows the effect of the look_thru argument settings.
Figure 2-178 look_thru Argument Example

layer1

NONE ALL
Result
(Default)

Chapter 2: Runset Functions: A - I


external_corner1() 2-487
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner1_edge()
external_corner1_error()
internal_corner1()

Chapter 2: Runset Functions: A - I


external_corner1() 2-488
IC Validator Reference Manual Version N-2017.12-SP2

external_corner1_edge()
The external_corner1_edge() function creates edges that consist of pairs of violation
corners. It measures outside-to-outside spacing on layer1 based on the distance
specified. Other arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the external_corner1_edge() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
external_corner1_edge(
layer1 = data_layer,
distance = doubleconstraint,
type = {CONVEX_TO_CONCAVE, CONVEX_TO_CONVEX,
CONVEX_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-489
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

region = RADIAL | SQUARE, //optional


convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
look_thru = NONE | ALL, //optional
output_type = FAIL | POINT_TO_POINT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


convex_to_convex_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-490
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.
Figure 2-179 shows the effect of the type argument settings.
Figure 2-179 type Argument Examples

All CONVEX_ CONVEX_ CONVEX_ PARALLEL_


(Default) TO_CONVEX TO_CONCAVE TO_EDGE POINT_
PROJECTION

layer1 Result Areas shown for illustration

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.


Figure 2-180 shows the effect of the angle argument settings.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-491
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-180 angle Argument Examples

layer1

Result

ALL RIGHT Areas shown


(Default) for illustration

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-181 shows the effect of the region argument settings.
Figure 2-181 region Argument Example

layer1

Result

RADIAL SQUARE Areas shown


(Default) for illustration

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-492
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-182 shows the effect of the convex_to_concave_boundary argument settings.


Figure 2-182 convex_to_concave_boundary Argument Example

layer1

Result

EXCLUSIVE INCLUSIVE Areas shown


(Default) for illustration

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.
Figure 2-183 shows the effect of the convex_to_convex_boundary argument settings.
Figure 2-183 convex_to_convex_boundary Argument Example

layer1

Result

EXCLUSIVE INCLUSIVE_PARALLEL Areas shown


for illustration
(Default)

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when the input layer is an edge layer.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-493
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-184 shows the effect of the edge_endpoints argument settings.
Figure 2-184 edge_endpoints Argument Example

layer1

Result

CORNER ALL Areas shown


(Default) for illustration

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.


Figure 2-185 shows the effect of the connectivity argument settings.
Figure 2-185 connectivity Argument Example

ALL SAME_NET DIFFERENT_NET


(Default)

layer1 Result via Areas shown for illustration

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-494
IC Validator Reference Manual Version N-2017.12-SP2

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

membership
Optional. Specifies how to check between corners that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is ALL.
❍ ALL. Checks all corners regardless of polygon membership.

❍ SAME_POLYGON. Checks only corners that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only corners that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function can incorrectly report violations on the same polygon depending on the given
hierarchy and spacing distance.
Figure 2-186 shows the effect of the membership argument settings.
Figure 2-186 membership Argument Example

ALL SAME_POLYGON DIFFERENT_POLYGON


(Default)

layer1 Result Areas shown for illustration

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the external1() function for more
information.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-495
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-187 shows the effect of the look_thru argument settings.


Figure 2-187 look_thru Argument Example

layer1

Result

NONE ALL Areas shown


(Default) for illustration

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. The orientation of POINT_TO_POINT edges from a
layer1 check is arbitrary. POINT_TO_POINT creates an orphan edge layer.
Figure 2-188 shows the effect of the output_type argument settings.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-496
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-188 output_type Argument Example

layer1

Result

POINT_TO_POINT FAIL Areas shown


(Default) for illustration

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-497
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner1()
external_corner1_error()
internal_corner1_edge()

Chapter 2: Runset Functions: A - I


external_corner1_edge() 2-498
IC Validator Reference Manual Version N-2017.12-SP2

external_corner1_error()
The external_corner1_error() function measures outside-to-outside spacing on layer1
based on the distance specified. The arguments define various geometric conditions for
measuring the point-to-point distance between the corners.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the external_corner1() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.
Syntax
external_corner1_error(
layer1 = data_layer,
distance = doubleconstraint,
type = {CONVEX_TO_CONCAVE, CONVEX_TO_CONVEX,
CONVEX_TO_EDGE,

Chapter 2: Runset Functions: A - I


external_corner1_error() 2-499
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
look_thru = NONE | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


convex_to_convex_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection

Chapter 2: Runset Functions: A - I


external_corner1_error() 2-500
IC Validator Reference Manual Version N-2017.12-SP2

length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.

Chapter 2: Runset Functions: A - I


external_corner1_error() 2-501
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
This argument is used only when the input layer is an edge layer.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

membership
Optional. Specifies how to check between corners that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is ALL.
❍ ALL. Checks all corners regardless of polygon membership.

❍ SAME_POLYGON. Checks only corners that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only corners that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the external1() function for more
information.

Chapter 2: Runset Functions: A - I


external_corner1_error() 2-502
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner1()
external_corner1_edge()
external_corner2_error()
internal_corner1()

Chapter 2: Runset Functions: A - I


external_corner1_error() 2-503
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external_corner2()
The external_corner2() function creates polygons that are formed by pairs of violation
corners. It measures outside-to-outside spacing between two layers based on the distance
specified. Other arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
The output consists of rectangles that are the extents of the point-to-point violations. In the
case where the violation is horizontal or vertical, the output rectangle is generated by
expanding the violation three times the input library resolution on both sides.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. A portion of the edge must fall in the corner
projection zone, and neither of the edges forming the corner can be parallel to the edge.
For edge input, the external_corner2() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Chapter 2: Runset Functions: A - I


external_corner2() 2-504
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
external_corner2(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
type = {CONVEX_TO_CONVEX, CONVEX_TO_CONCAVE,
CONVEX_TO_EDGE, CONCAVE_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | INSIDE | ALL,
//optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; concave
corner check zone is exclusive.

Chapter 2: Runset Functions: A - I


external_corner2() 2-505
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the


convex_to_convex_boundary argument.

❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the


convex_to_concave_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.
Figure 2-189 shows the effect of the type argument settings.

Chapter 2: Runset Functions: A - I


external_corner2() 2-506
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-189 type Argument Example

CONVEX_ CONVEX_ PARALLEL_


TO_CONVEX TO_EDGE POINT_PROJECTION
CONVEX_ CONCAVE_
TO_CONCAVE TO_EDGE

layer1 layer2 Result Result Result Result

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.


Figure 2-190 shows the effect of the angle argument settings.

Chapter 2: Runset Functions: A - I


external_corner2() 2-507
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-190 angle Argument Example

layer1

layer2

ALL RIGHT
Result
(Default)

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-191 shows the effect of the region argument settings.
Figure 2-191 region Argument Example

layer1

layer2

RADIAL SQUARE
Result
(Default)

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

Chapter 2: Runset Functions: A - I


external_corner2() 2-508
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-192 shows the effect of the convex_to_concave_boundary argument settings.


Figure 2-192 convex_to_concave_boundary Argument Example

layer1

layer2

Result

EXCLUSIVE INCLUSIVE Result


(Default)

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.
Figure 2-193 shows the effect of the convex_to_convex_boundary argument settings.
Figure 2-193 convex_to_convex_boundary Argument Example

layer1

layer2

Result

EXCLUSIVE INCLUSIVE_PARALLEL Result


(Default)

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.

Chapter 2: Runset Functions: A - I


external_corner2() 2-509
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-194 shows the effect of the edge_endpoints argument settings.
Figure 2-194 edge_endpoints Argument Example

Input

Result

CORNER ALL Result


(Default)

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

Chapter 2: Runset Functions: A - I


external_corner2() 2-510
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-195 shows the effect of the connectivity argument settings.


Figure 2-195 connectivity Argument Example

ALL SAME_NET DIFFERENT_NET


(Default)

layer1 layer2 Via1 Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ INSIDE. Looks inside both layer1 and layer2.

❍ ALL. Looks through all edges.


Figure 2-196 shows the effect of the look_thru argument settings.
Figure 2-196 look_thru Argument Example

layer1

layer2

NONE ALL
Result
(Default)

Chapter 2: Runset Functions: A - I


external_corner2() 2-511
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner2_edge()
external_corner2_error()
internal2()

Chapter 2: Runset Functions: A - I


external_corner2() 2-512
IC Validator Reference Manual Version N-2017.12-SP2

external_corner2_edge()
The external_corner2_edge() function creates edges that consist of pairs of violation
corners. It measures outside-to-outside spacing between two layers based on the distance
specified. Other arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degree s) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the external_corner2_edge() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
external_corner2_edge(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
type = {CONVEX_TO_CONVEX, CONVEX_TO_CONCAVE,
CONVEX_TO_EDGE, CONCAVE_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-513
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

angle = ALL | RIGHT, //optional


region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database //optional
look_thru = NONE | COINCIDENT | INSIDE | ALL,
//optional
output_layer = LAYER1 | LAYER2, //optional
output_type = FAIL | POINT_TO_POINT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; concave
corner check zone is exclusive.
❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the
convex_to_convex_boundary argument.

❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the


convex_to_concave_boundary argument.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-514
IC Validator Reference Manual Version N-2017.12-SP2

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.
Figure 2-197 shows the effect of the type argument with the default setting.
Figure 2-197 type Argument Example

layer1

layer2

Result

Areas
shown for
illustration
All (default)

Figure 2-198 shows the effect of the type argument with the CONCAVE_TO_EDGE setting.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-515
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-198 type Argument Example With CONCAVE_TO_EDGE

layer1

layer2

Result

Areas
shown for
CONCAVE_TO_EDGE illustration
Figure 2-199 shows the effect of the type argument with the CONVEX_TO_CONVEX setting.
Figure 2-199 type Argument Example With CONVEX_TO_CONVEX
layer1

layer2

Result
CONVEX_TO_CONVEX
Areas
shown for
illustration

Figure 2-200 shows the effect of the type argument with the CONVEX_TO_CONCAVE
setting.
Figure 2-200 type Argument Example With CONVEX_TO_CONCAVE
layer1

layer2

Result

Areas
shown for
CONVEX_TO_CONCAVE illustration

Figure 2-201 shows the effect of the type argument with the CONVEX_TO_EDGE setting.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-516
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-201 type Argument Example With CONVEX_TO_EDGE


layer1

layer2

Result

Areas
CONVEX_TO_EDGE shown for
illustration
Figure 2-202 shows the effect of the type argument with the
PARALLEL_POINT_PROJECTION setting.

Figure 2-202 type Argument Example With PARALLEL_POINT_PROJECTION


layer1

layer2

PARALLEL_ Result
POINT_PARALLEL
Areas
shown for
illustration

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.


Figure 2-203 shows the effect of the angle argument settings.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-517
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-203 angle Argument Example

layer1

layer2

ALL RIGHT Result


(Default)

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-204 shows the effect of the region argument settings.
Figure 2-204 region Argument Example

layer1

layer2

Result

Areas
RADIAL SQUARE shown for
(Default) illustration

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-518
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-205 shows the effect of the convex_to_concave_boundary argument settings.


Figure 2-205 convex_to_concave_boundary Argument Example

layer1

layer2

Result

Areas
shown for
illustration
EXCLUSIVE INCLUSIVE
(Default)

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.
Figure 2-206 shows the effect of the convex_to_convex_boundary argument settings.
Figure 2-206 convex_to_convex_boundary Argument Example

layer1

layer2

Result

Areas
shown for
EXCLUSIVE INCLUSIVE_PARALLEL illustration
(Default)

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-519
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-207 shows the effect of the edge_endpoints argument settings.
Figure 2-207 edge_endpoints Argument Example

Input

Result

Areas
CORNER ALL shown for
(Default) illustration

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.


Figure 2-208 shows the effect of the connectivity argument settings.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-520
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-208 connectivity Argument Example

ALL SAME_NET DIFFERENT_NET


(Default)

layer1 layer2 Via1 Result Areas shown for illustration

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ INSIDE. Looks inside both layer1 and layer2.

❍ ALL. Looks through all edges.


Figure 2-209 shows the effect of the look_thru argument settings.
Figure 2-209 look_thru Argument Example

layer1

layer2

Result

NONE ALL Areas shown


(Default) for illustration

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-521
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

output_layer
Optional. Specifies the layer whose edges are output for the violations. The default is
LAYER1.

❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. Edge endpoints are ordered from layer1 to layer2.
POINT_TO_POINT creates an orphan edge layer.
Figure 2-210 shows the effect of the output_type argument settings.
Figure 2-210 output_type Argument Example

layer1

layer2

Result

Areas shown
for illustration
POINT_TO_POINT FAIL
(Default)

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-522
IC Validator Reference Manual Version N-2017.12-SP2

❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner2()
external_corner2_error()
internal_corner2_edge()

Chapter 2: Runset Functions: A - I


external_corner2_edge() 2-523
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external_corner2_error()
The external_corner2_error() measures outside-to-outside spacing between two layers
based on the distance specified. Other arguments define various geometric conditions for
measuring the point-to-point distance between the corners.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. A portion of the edge must fall in the corner
projection zone, and neither of the edges forming the corner can be parallel to the edge.
For edge input, the external_corner2() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.
Syntax
external_corner2_error(
layer1 = data_layer,
layer2 = data_layer,

Chapter 2: Runset Functions: A - I


external_corner2_error() 2-524
IC Validator Reference Manual Version N-2017.12-SP2

distance = doubleconstraint,
type = {CONVEX_TO_CONVEX, CONVEX_TO_CONCAVE,
CONVEX_TO_EDGE, CONCAVE_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
convex_to_convex_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | INSIDE | ALL,
//optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; concave
corner check zone is exclusive.
❍ CONVEX_TO_CONVEX. Specifies that the check-zone boundary is controlled by the
convex_to_convex_boundary argument.

Chapter 2: Runset Functions: A - I


external_corner2_error() 2-525
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the


convex_to_concave_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The convex_to_concave_boundary and convex_to_convex_boundary
arguments are ignored.
The edge endpoints and all angle corners are always measured;
edge_endpoints and angle arguments are ignored.
The region argument is not used for this corner type.

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

Chapter 2: Runset Functions: A - I


external_corner2_error() 2-526
IC Validator Reference Manual Version N-2017.12-SP2

convex_to_convex_boundary
Optional. For convex-to-convex measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ INSIDE. Looks inside both layer1 and layer2.

❍ ALL. Looks through all edges.

Chapter 2: Runset Functions: A - I


external_corner2_error() 2-527
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner2()
external_corner2_edge()
external_corner1_error()
internal2()

Chapter 2: Runset Functions: A - I


external_corner2_error() 2-528
IC Validator Reference Manual Version N-2017.12-SP2

external1()
The external1() function creates polygons that are formed by pairs of violation edges. It
measures outside-to-outside spacing on one layer based on the specified distance. The
arguments define geometric conditions for measuring the distance between the edges.

Syntax
external1(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
membership = ALL | SAME_POLYGON |
DIFFERENT_POLYGON, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | NOT_ADJACENT | ALL, //optional
look_thru_count = integerconstraint, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double, //optional
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label" //optional
);

Chapter 2: Runset Functions: A - I


external1() 2-529
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check

Chapter 2: Runset Functions: A - I


external1() 2-530
IC Validator Reference Manual Version N-2017.12-SP2

region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function.
In the conceptual diagram shown in Figure 2-211, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-211 Check Region Extension

For the following examples,

Input
0.996

0.2
0.7 0.8 1
1 0.95 0.996
1

In the following example,


green = external1(red, distance <= 1.0, extension = RADIAL);

Chapter 2: Runset Functions: A - I


external1() 2-531
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external1(red, distance <= 1.0, extension = SQUARE);

Output

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. For edge layers, polygon membership is determined by
layer ancestry. The default is ALL.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.

Chapter 2: Runset Functions: A - I


external1() 2-532
IC Validator Reference Manual Version N-2017.12-SP2

Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.
For the following examples,

Input

In the following example,


green = external1(red, distance <= 1.0,
extension = RADIAL, membership = SAME_POLYGON);

Chapter 2: Runset Functions: A - I


external1() 2-533
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external1(red, distance <= 1.0,
extension = RADIAL, membership = ALL);

Output

In the following example,


green = external1(red, distance <= 1.0, extension = RADIAL,
membership = DIFFERENT_POLYGON);

Chapter 2: Runset Functions: A - I


external1() 2-534
IC Validator Reference Manual Version N-2017.12-SP2

Output

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


For the following examples,

Chapter 2: Runset Functions: A - I


external1() 2-535
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

0.919
1.1

0.95 1.1
1

0.99

In the following example,


green = external1(red, distance < 1.0, extension = NONE,
orientation = {ACUTE, PARALLEL});

Output

In the following example,


green = external1(red, distance < 1.0, extension = NONE,
orientation = {PERPENDICULAR});

Chapter 2: Runset Functions: A - I


external1() 2-536
IC Validator Reference Manual Version N-2017.12-SP2

Output

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
For the following examples,

Input

1
1
1

Chapter 2: Runset Functions: A - I


external1() 2-537
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example,


green = external1(red, distance < 1.0, extension = NONE,
orientation = {}, intersecting = {ACUTE});

Output

In the following example,


green = external1(red, distance < 1.0, extension = NONE,
orientation = {}, intersecting = {PERPENDICULAR});

Output

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.

Chapter 2: Runset Functions: A - I


external1() 2-538
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
In Figure 2-212, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Figure 2-212 Projection Region for Edges

For the following examples,

Input

0.99
0.99

0.99 0.99

Chapter 2: Runset Functions: A - I


external1() 2-539
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example,


green = external1(red, <= 1.0, RADIAL, projection = {OUT});

Output

In the following example,


green = external1(red, <= 1.0, RADIAL, projection = {ON});

Output

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.

Chapter 2: Runset Functions: A - I


external1() 2-540
IC Validator Reference Manual Version N-2017.12-SP2

The restrictions are


❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


For the following examples,

Chapter 2: Runset Functions: A - I


external1() 2-541
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Input

0.919
1.1

0.95 1.1
1

0.99

In the following example,


green = external1(red, < 1.0, RADIAL, orthogonal = NEITHER);

Output

Chapter 2: Runset Functions: A - I


external1() 2-542
IC Validator Reference Manual Version N-2017.12-SP2

In the following example,


green = external1(red, < 1.0, RADIAL, orthogonal = ONE);

Output

In the following example,


green = external1(red, < 1.0, RADIAL, orthogonal = ALL);

Output

Chapter 2: Runset Functions: A - I


external1() 2-543
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example,


green = external1(red, < 1.0, RADIAL, orthogonal = BOTH);

Output

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


For the following examples,

Chapter 2: Runset Functions: A - I


external1() 2-544
IC Validator Reference Manual Version N-2017.12-SP2

Input

0.85 0.919
0.9 0.919

0.919
0.919

In the following example,


green = external1(red, distance <= 1.0, extension = NONE,
direction = HORIZONTAL);

Output

In the following example,


green = external1(red, distance <= 1.0, extension = NONE,
direction = ORTHOGONAL);

Chapter 2: Runset Functions: A - I


external1() 2-545
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external1(red, distance <= 1.0, extension = NONE,
direction = NEGATIVE_45);

Output

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.

Chapter 2: Runset Functions: A - I


external1() 2-546
IC Validator Reference Manual Version N-2017.12-SP2

❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See Figure 2-213 for an example of the corner_configuration argument.
Figure 2-213 corner_configuration Measurements

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
❍ ALL. Looks through all edges.

Chapter 2: Runset Functions: A - I


external1() 2-547
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-214 shows an example of the edges that a spacing check looks through for
various look_thru argument settings.

Projections look_thru argument setting

1 NONE

1, 2 ALL

Figure 2-214 Example of look_thru Projections

Figure 2-215 shows four violations, 1-4.


❍ NONE reports none of these violations.

❍ NOT_ADJACENT reports violation 4.

❍ ALL reports all four violations.

Figure 2-215 Example of NOT_ADJACENT

Violations 1 2 3 4

Chapter 2: Runset Functions: A - I


external1() 2-548
IC Validator Reference Manual Version N-2017.12-SP2

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-216 for an example of the extension_obstructions argument.

Chapter 2: Runset Functions: A - I


external1() 2-549
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-216 Example of extension_obstructions

POINT_TO_POINT

ALL

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity and membership are considered when generating these
violations. The default is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The format of the violation is determined by the point_touch_shape and
shape_size arguments. The POINT_TOUCH argument is not available for edge input.
Figure 2-217 shows the effect of the relational argument settings.
Figure 2-217 relational Argument Example

layer1

POINT_TOUCH Result

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the

Chapter 2: Runset Functions: A - I


external1() 2-550
IC Validator Reference Manual Version N-2017.12-SP2

internal resolution. The violation region is approximated with edges that are either
perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.
❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing
distance. This value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.
❍ CENTERLINE. Reports violations as an expanded line at the center of the projection
region. The midpoints of the sides of the violation region form a line that is expanded
in both directions by width/2. When the output_type argument is CENTERLINE, only
parallel spacing is supported.
❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when the extension argument is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width value. Violations are oriented along the line.

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.

Chapter 2: Runset Functions: A - I


external1() 2-551
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following examples,

Input

0.778
0.8

In the following example,


green = external1(red, distance <= 1.0,
extension = RADIAL, output_type = REGION);

Output

0.778
0.8

In the following example,


green = external1(red, <= 1.0, RADIAL,
orientation = {PARALLEL}, intersecting = {},
output_type = CENTERLINE);

Chapter 2: Runset Functions: A - I


external1() 2-552
IC Validator Reference Manual Version N-2017.12-SP2

Output

0.778
0.8

In the following example,


green = external1(red, <= 1.0, RADIAL,
output_type = EXTENTS);

Output

0.778
0.8

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is .001.

Chapter 2: Runset Functions: A - I


external1() 2-553
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following example,

Input

In the following example,


green = external1(red, <= 1.0, RADIAL, orientation = {},
intersecting = {PERPENDICULAR}, width = 0.5);

Output

Chapter 2: Runset Functions: A - I


external1() 2-554
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.
In the following example,
yellow = external1(pink, distance < minval, blocking_layer = blue);

Chapter 2: Runset Functions: A - I


external1() 2-555
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection

Chapter 2: Runset Functions: A - I


external1() 2-556
IC Validator Reference Manual Version N-2017.12-SP2

region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
See the intersection_angle argument of the external2() function for an example.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


external1() 2-557
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples

Distance
Error1 @= {@ "This is an example of an external1() function
min spacing 0.5";
external1( met1, distance <= 0.5, extension = RADIAL);
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
external1( met1, distance < 0.5, extension = NONE);
};

Membership
Error1 @= { @ "min spacing 0.5 for edges on two different polygons" +
"min spacing 0.6 for edges on the same polygon (notches)";
external1(met1, distance < 0.5, extension = RADIAL,
membership = DIFFERENT_POLYGON);
external1(met1, distance < 0.6, extension = RADIAL,
membership = SAME_POLYGON);
};

Connectivity
Error1 @= { @ "min spacing 0.5 for all polygons on the same net";
external1(met1, < 0.5, RADIAL, connectivity = SAME_NET);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1" + "measure only parallel edges";
external1(met1, < 0.5, RADIAL, orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1" +
@ "measure all parallel angled edges";
external1(met1, < 0.5, RADIAL, orthogonal = BOTH,
orientation = {PARALLEL});
};

Output_type
c1 = external1(met1, < 0.5, RADIAL, output_type = CENTERLINE);

See Also
external1_edge() and not_external1_edge()
external1_error()

Chapter 2: Runset Functions: A - I


external1() 2-558
IC Validator Reference Manual Version N-2017.12-SP2

external1_edge() and not_external1_edge()


The external1_edge() function selects the portion of layer1 edges that violates the
spacing constraints. It measures outside-to-outside spacing on one layer based on the
specified distance. The arguments define various geometric conditions for measuring the
distance between the edges. The complement of this function is the
not_external1_edge() function.

Syntax
external1_edge(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | NOT_ADJACENT | ALL, //optional
look_thru_count = integerconstraint, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
spacing_edge = ALL | PROJECTING, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
output_type = FAIL | CENTERLINE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
output_side = ALL | HIGH | LOW //optional

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-559
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

not_external1_edge(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | NOT_ADJACENT | ALL, //optional
look_thru_count = integerconstraint, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
spacing_edge = ALL | PROJECTING, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
output_side = ALL | HIGH | LOW //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-560
IC Validator Reference Manual Version N-2017.12-SP2

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked. The default is RADIAL.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-561
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function.
In the conceptual diagram shown in Figure 2-218, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-218 Check Region Extension

For the following examples,

Input
0.996

0.2
0.7 0.8 1
1 0.95 0.996
1

In the following example,


green = external1_edge(red, distance <= 1.0,
extension = RADIAL);

Output

In the following example,

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-562
IC Validator Reference Manual Version N-2017.12-SP2

green = external1_edge(red, distance <= 1.0,


extension = SQUARE);

Output

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. For edge layers, polygon membership is determined by
layer ancestry. The default is ALL.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-563
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following examples,

Input

In the following example,


green = external1_edge(red, distance <= 1.0,
membership = SAME_POLYGON);

Output

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-564
IC Validator Reference Manual Version N-2017.12-SP2

In the following example,


green = external1_edge(red, distance <= 1.0, membership = ALL);

Output

In the following example,


green = external1_edge(red, distance <= 1.0,
membership = DIFFERENT_POLYGON);

Output

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-565
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


For the following examples,

Input

0.919
1.1

0.95 1.1
1

0.99

In the following example,


green = external1_edge(red, distance < 1.0, extension = NONE,

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-566
IC Validator Reference Manual Version N-2017.12-SP2

orientation = {ACUTE, PARALLEL});

Output

In the following example,


green = external1_edge(red, distance < 1.0, extension = NONE,
orientation = {PERPENDICULAR});

Output

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-567
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
For the following examples,

1
1
1

In the following example,


green = external1_edge(red, distance < 1.0, extension = NONE,
orientation = {}, intersecting = {ACUTE});

Output

In the following example,


green = external1_edge(red, distance < 1.0, extension = NONE,
orientation = {},
intersecting = {PERPENDICULAR});

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-568
IC Validator Reference Manual Version N-2017.12-SP2

Output

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of edges that are outside of the projection
region.
❍ ON. Measures edges that fall exactly on the boundary of the projection region.
In Figure 2-219, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-569
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-219 Projection Region for Edges

For the following examples,

Input

0.99
0.99

0.99 0.99

In the following example,


green = external1_edge(red, distance <= 1.0, projection = {OUT});

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-570
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external1_edge(red, distance <= 1.0, projection = {ON});

Output

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-571
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ The extension argument must be NONE.


❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


For the following examples,

Input

0.919
1.1

0.95 1.1
1

0.99

In the following example,


green = external1_edge(red, distance < 1.0, orthogonal = NEITHER);

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-572
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external1_edge(red, distance < 1.0, orthogonal = ONE);

Output

In the following example,


green = external1_edge(red, distance < 1.0, orthogonal = ALL);

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-573
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external1_edge(red, distance < 1.0, orthogonal = BOTH);

Output

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-574
IC Validator Reference Manual Version N-2017.12-SP2

❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


For the following examples,

Input

0.85 0.919
0.9 0.919

0.919
0.919

In the following example,


green = external1_edge(red, distance <= 1.0, extension = NONE,
direction = HORIZONTAL);

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-575
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external1_edge(red, distance <= 1.0, extension = NONE,
direction = ORTHOGONAL);

Output

In the following example,


green = external1_edge(red, distance <= 1.0, extension = NONE,
direction = NEGATIVE_45);

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-576
IC Validator Reference Manual Version N-2017.12-SP2

Output

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-577
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Figure 2-220 for an example of the corner_configuration argument.


Figure 2-220 corner_configuration Measurements

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
❍ ALL. Looks through all edges.
See the example for the look_thru argument of the external1() function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-578
IC Validator Reference Manual Version N-2017.12-SP2

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-221 for an example of the extension_obstructions argument.
Figure 2-221 Example of extension_obstructions
POINT_TO_POINT

ALL

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-579
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity and membership are considered when generating these
violations. The default is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The length of the violation is equal to the maximum of the distance constraint, with
a minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution. The
POINT_TOUCH argument is not available for edge input.
Figure 2-222 shows the effect of the relational argument settings.
Figure 2-222 relational Argument Example

layer1

Result
POINT_TOUCH

spacing_edge
Optional. Specifies the violation edges that are selected from distance violations. Each
distance violation consists of one edge that creates a projection region, and another
edge that falls inside that region. The default is ALL.
❍ ALL. Outputs all violation edges.

❍ PROJECTING. Specifies that only the violation edge that created the projection region
is output. For nonparallel violations, the violation edge is the edge that is
perpendicular to the violation.
Note:
The projection region in parallel violations is commutative, therefore PROJECTING
has no effect on parallel violations.
Endpoint violations have no projecting edge, so they are not reported with this setting.
For the following examples,

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-580
IC Validator Reference Manual Version N-2017.12-SP2

Input

1
0.99

0.919
1

In the following example,


green = external1_edge(red, distance <= 1.0, spacing_edge = ALL);

Output

In the following example,


green = external1_edge(red, distance <= 1.0,
spacing_edge = PROJECTING);

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-581
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-582
IC Validator Reference Manual Version N-2017.12-SP2

See the cumulative_projection_length argument of the enclose() function for


more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

output_type
Optional. Specifies the type of output generated. The default is FAIL.
Note:
The output_type argument is not available for the not_external1_edge()
function.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Outputs spacing violations as lines at the center of the projection
region. A line is two points connected with no specific order. The midpoints of the
sides of the violation region are used to create the lines. When the output_type
argument is CENTERLINE, only parallel spacing is supported.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-583
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as


specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
See the intersection_angle argument of the external2_edge() and
not_external2_edge() functions for an example.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-584
IC Validator Reference Manual Version N-2017.12-SP2

output_side
Optional. Specifies to output only the check edges on the specified side of any violation
projected from an orthogonal edge. The default is ALL.
Note:
To use the HIGH or LOW options,
■ The direction argument needs to be HORIZONTAL or VERTICAL.
■ The extension argument needs to be NONE.
❍ ALL. Outputs all check edges

❍ HIGH. Outputs all check edges except:

■ For any violation projected from a horizontal edge, only the edge on the top side
is output.
■ For any violation projected from a vertical edge, only the edge on the right side is
output.
❍ LOW. Outputs all check edges.

■ For any violation projected from a horizontal edge, only the edge on the bottom
side is output.
■ For any violation projected from a vertical edge, only the edge on the left side is
output.
For examples, see the output_side argument of the enclose_edge() and
not_enclose_edge() functions.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-585
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples

Distance
Error1 @= {@ "This is an example of an external1_edge() function
min spacing 0.5";
external1_edge(met1, distance <= 0.5 );
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
external1_edge(met1, distance < 0.5, extension = NONE);
};

Membership
Error1 @= { @ "min spacing 0.5 for edges on two different polygons" +
"min spacing 0.6 for edges on the same polygon (notches)";
external1_edge(met1, distance < 0.5, membership = DIFFERENT_POLYGON);
external1_edge(met1, distance < 0.6, membership = SAME_POLYGON);
};

Connectivity
Error1 @= { @ "min spacing 0.5 for all polygons on the same net";
external1_edge(met1, distance < 0.5, connectivity = SAME_NET);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1"; +
"measure only parallel edges";
external1_edge(met1, distance < 0.5, orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1" +
"measure all parallel angled edges";
external1_edge(met1, distance < 0.5, orthogonal = BOTH,
orientation = {PARALLEL});
};

See Also
external1()
external1_error()
external2_edge() and not_external2_edge()

Chapter 2: Runset Functions: A - I


external1_edge() and not_external1_edge() 2-586
IC Validator Reference Manual Version N-2017.12-SP2

external1_error()
The external1_error() function measures outside-to-outside spacing between the edges
of one layer based on the specified distance. The arguments define various geometric
conditions for measuring the distance between the layer edges. The output is unmerged
errors.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Errors output to the error database consist of pairs of violation edges.

Syntax
external1_error(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | NOT_ADJACENT | ALL, //optional
look_thru_count = integerconstraint, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
voltage_filter = {delta_voltage = doubleconstraint,

Chapter 2: Runset Functions: A - I


external1_error() 2-587
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

delta_method = HIGH_LOW_MAX |
SAME_TYPE_MAX | SYNC_NET,
high_voltage_property_name = "string",
low_voltage_property_name = "string"},
//optional
relational = {POINT_TOUCH}, //optional
net_double_property_filter = {property_value = doubleconstraint,
property_name = "string"} //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


external1_error() 2-588
IC Validator Reference Manual Version N-2017.12-SP2

❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. For edge layers, polygon membership is determined by
layer ancestry. The default is ALL.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.
See the examples for the membership argument of the external1() function for more
information.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

Chapter 2: Runset Functions: A - I


external1_error() 2-589
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


See the examples for the orientation argument of the external1() function for more
information.

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
See the examples for the intersecting argument of the external1() function for more
information.

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

Chapter 2: Runset Functions: A - I


external1_error() 2-590
IC Validator Reference Manual Version N-2017.12-SP2

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
See the examples for the projection argument of the external1() function for more
information.

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


See the examples for the orthogonal argument of the external1() function for more
information.

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

Chapter 2: Runset Functions: A - I


external1_error() 2-591
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See the examples for the direction argument of the external1() function for more
information.

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See the examples for the corner_configuration argument of the external1()
function for more information.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look

Chapter 2: Runset Functions: A - I


external1_error() 2-592
IC Validator Reference Manual Version N-2017.12-SP2

through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
❍ ALL. Looks through all edges.
See the example for the look_thru argument of the external1() function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See the examples for the extension_obstructions argument of the external1()
function for more information.

Chapter 2: Runset Functions: A - I


external1_error() 2-593
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.
See the examples for the blocking_layer_look_thru argument of the external1()
function for more information.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.

Chapter 2: Runset Functions: A - I


external1_error() 2-594
IC Validator Reference Manual Version N-2017.12-SP2

❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as


specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
See the intersection_angle argument of the external2() and external2_edge()
and not_external2_edge() functions for examples.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


external1_error() 2-595
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

voltage_filter
Optional. Specifies that each spacing error is prefiltered to meet the voltage constraints.
The default is no constraint and no prefiltering.
❍ delta_voltage. Specifies with a nonnegative value that each spacing error must
have a delta voltage to satisfy the constraint. The default is <0, which means no
constraint.
❍ delta_method. Specifies how to calculate the delta voltage. The default is
HIGH_LOW_MAX.

■ HIGH_LOW_MAX. Specifies the maximum voltage of (VH1 - VL2, VH2 - VL1).

■ SAME_TYPE_MAX. Specifies the maximum voltage of (abs(VH1 - VH2), abs(VL1


- VL2)).

■ SYNC_NET. Specifies that if the two nets are in sync, use SAME_TYPE_MAX.
Otherwise, use HIGH_LOW_MAX.
❍ high_voltage_property_name. Specifies the property name that represents high
voltage.
❍ low_voltage_property_name. Specifies the property name that represents low
voltage.

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity and membership are considered when generating these
violations. The default is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The length of the violation is equal to the maximum of the distance constraint, with
a minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution. The
POINT_TOUCH argument is not available for edge input.
Figure 2-223 shows the effect of the relational argument settings.
Figure 2-223 relational Argument Example

layer1

Result
POINT_TOUCH

Chapter 2: Runset Functions: A - I


external1_error() 2-596
IC Validator Reference Manual Version N-2017.12-SP2

net_double_property_filter
Optional. Specifies that each spacing error is prefiltered to meet the property constraints.
The default is no constraint and no prefiltering.
❍ property_value: Specifies with a nonnegative value that each spacing error must
have either net with a property value to satisfy the constraint. The default is <0, which
means no constraint.
❍ property_name: Specifies the name of the property.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
To set a minimum spacing of 0.5:
ext1_errs = external1_error(layer1 = met1, distance <= 0.5,
extension = RADIAL);

See Also
drc_features()
external1()
external1_edge() and not_external1_edge()

Chapter 2: Runset Functions: A - I


external1_error() 2-597
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external2()
The external2() function creates polygons that are formed by pairs of violation edges. It
measures outside-to-outside spacing between two layers based on the specified distance.
The arguments define various geometric conditions for measuring the distance between the
layer edges.

Syntax
external2(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint,
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH | INSIDE | CUTTING |
OVERLAP | CROSS}, //optional
relational_type = EXPANDED_EDGE | POLYGON, //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double, //optional
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
line_touch_shape = OUTSIDE | INSIDE | BOTH, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional

Chapter 2: Runset Functions: A - I


external2() 2-598
IC Validator Reference Manual Version N-2017.12-SP2

projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |


ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = OUTSIDE | ALL, //optional
break_edges = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.

Chapter 2: Runset Functions: A - I


external2() 2-599
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.
In the conceptual diagram shown in Figure 2-224, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-224 Check Region Extension

For the following examples,

Input
0.996

0.2
0.7 0.8 1
1 0.95 0.996
1

Chapter 2: Runset Functions: A - I


external2() 2-600
IC Validator Reference Manual Version N-2017.12-SP2

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL);

Output

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = SQUARE);

Output

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

Chapter 2: Runset Functions: A - I


external2() 2-601
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This must
be a valid connect database when the connectivity argument is SAME_NET or
DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


For the following examples,

Input

0.99 1

0.99

0.99 1 1

0.99

In the following example,


green = external2(blue, red, distance < 1.0,
extension = NONE, orientation = {ACUTE, PARALLEL});

Chapter 2: Runset Functions: A - I


external2() 2-602
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external2(blue, red, distance < 1.0,
extension = NONE, orientation = {PERPENDICULAR});

Output

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.

Chapter 2: Runset Functions: A - I


external2() 2-603
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ TOUCH. Independent of the distance argument, reports an outside touch as a


violation.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
For the following examples,

Input 0.849

0.656

0.778
0.849

0.707

In the following example,


green = external2(blue, red, distance < 1.0,
extension = NONE, orientation = {},
intersecting = {ACUTE, TOUCH});

Chapter 2: Runset Functions: A - I


external2() 2-604
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external2(blue, red, distance < 1.0,
extension = NONE, orientation = {},
intersecting = {PERPENDICULAR});

Output

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each

Chapter 2: Runset Functions: A - I


external2() 2-605
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
argument specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
In Figure 2-225, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Figure 2-225 Projection Region for Edges

Chapter 2: Runset Functions: A - I


external2() 2-606
IC Validator Reference Manual Version N-2017.12-SP2

For the following examples,

Input

0.99
0.99

0.99 0.99

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL, projection = {OUT});

Output

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL, projection = {ON});

Chapter 2: Runset Functions: A - I


external2() 2-607
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

Chapter 2: Runset Functions: A - I


external2() 2-608
IC Validator Reference Manual Version N-2017.12-SP2

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


For the following examples,

Input

0.99 1

0.99

0.99 1 1

0.99

In the following example,


green = external2(blue, red, distance < 1.0,
extension = RADIAL, orthogonal = NEITHER);

Output

Chapter 2: Runset Functions: A - I


external2() 2-609
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example,


green = external2(blue, red, distance < 1.0,
extension = RADIAL, orthogonal = ONE);

Output

In the following example,


green = external2(blue, red, distance < 1.0,
extension = RADIAL, orthogonal = ALL);

Output

Chapter 2: Runset Functions: A - I


external2() 2-610
IC Validator Reference Manual Version N-2017.12-SP2

In the following example,


green = external2(blue, red, distance < 1.0,
extension = RADIAL, orthogonal = BOTH);

Output

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.

Chapter 2: Runset Functions: A - I


external2() 2-611
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following examples,

Input

0.919 1
0.919
1

In the following example,


green = external2(blue, red, distance <= 1.0, extension = NONE,
direction = HORIZONTAL);

Output

In the following example,


green = external2(blue, red, distance <= 1.0, extension = NONE,
direction = ORTHOGONAL);

Chapter 2: Runset Functions: A - I


external2() 2-612
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external2(blue, red, distance <= 1.0, extension = NONE,
direction = NEGATIVE_45);

Output

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.

Chapter 2: Runset Functions: A - I


external2() 2-613
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

For the following examples,

Input

0.919 1
0.919
1

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL, from_layer = LAYER1);

Output

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL, from_layer = LAYER2);

Chapter 2: Runset Functions: A - I


external2() 2-614
IC Validator Reference Manual Version N-2017.12-SP2

Output

In the following example,


green = external2(blue, red, distance <= 1.0,
extension = RADIAL, from_layer = ALL);

Output

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.

Chapter 2: Runset Functions: A - I


external2() 2-615
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
Figure 2-226 is an example of the corner_configuration argument.
Figure 2-226 corner_configuration Measurements

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges.

❍ COINCIDENT. Looks through inside coincident edges.

Chapter 2: Runset Functions: A - I


external2() 2-616
IC Validator Reference Manual Version N-2017.12-SP2

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, uses NONE.
❍ INSIDE. Looks inside both layer1 and layer2.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
Figure 2-227 and Figure 2-228 show examples of the look_thru argument set to
NOT_ADJACENT. The syntax for these examples is:
external2(red, blue, distance < dash_length, extension = RADIAL,
look_thru=NOT_ADJACENT, edge_containment=OUTSIDE)

Figure 2-227 shows an example where the tool reports two violations.
Figure 2-227 look_thru = NOT_ADJACENT Example With Violations

Figure 2-228 shows an example where the tool does not report violations.

Chapter 2: Runset Functions: A - I


external2() 2-617
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-228 look_thru = NOT_ADJACENT Example With No Violations

❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. A projection is contained when any of the following are true:
■ Edges of one layer are outside coincident with projecting edges of the other layer.
■ Polygons of one layer overlap projecting edges of the other layer. For edge layers,
this contain does not apply.
Figure 2-229 shows an example of using the NOT_CONTAINED option.
external2(gray, purple, look_thru = NOT_CONTAINED);

Figure 2-229 look_thru = NOT_CONTAINED Example

polygon layer edge layer


polygon layer reported violations

❍ ALL. Looks through all edges.

Chapter 2: Runset Functions: A - I


external2() 2-618
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-230 shows an example of the edges that a spacing check looks through for
various look_thru argument settings.

Projections look_thru argument setting

1 NONE

1, 2 COINCIDENT

1, 2, 3, 4 INSIDE

1, 2, 3, 4, 5 ALL

Figure 2-230 Example of look_thru Projections

1 2 3 4 5

Chapter 2: Runset Functions: A - I


external2() 2-619
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
In the following example,
green = external2(red, black, distance > x,
extension = RADIAL,
extension_look_past = POINT_TO_POINT);

Chapter 2: Runset Functions: A - I


external2() 2-620
IC Validator Reference Manual Version N-2017.12-SP2

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-231 for an example of the extension_obstructions argument.

Chapter 2: Runset Functions: A - I


external2() 2-621
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-231 Example of extension_obstructions


POINT_TO_POINT

ALL

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. INSIDE,
CUTTING, and CROSS are available only when both inputs are polygon layers. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The format of the violation is determined by the point_touch_shape and
shape_size arguments.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
❍ INSIDE. Creates a violation for polygons that are inside.

❍ CUTTING. Creates a violation for polygons that are cutting.

❍ OVERLAP. Creates a violation for material that is not outside the other layer.

■ When both inputs are polygon layers, any shared area between the two layers is
reported.
■ When one of the inputs is a polygon layer and the other is an edge layer, edge
portions that fall inside the polygon layer are reported.
■ When both inputs are edge layers, inside coincident portions are reported.

Chapter 2: Runset Functions: A - I


external2() 2-622
IC Validator Reference Manual Version N-2017.12-SP2

❍ CROSS. Creates a violation where layer1 and layer2 edges cross. The violation
reports the point where layer1 edges cross from inside to not inside of layer2
edges, and layer2 edges cross from inside to not inside of layer1 edges, where not
inside includes outside coincident.
The violations are created outside the polygons, as though the polygon edges are
being measured outside to outside regardless of the angle. The length of the violation
is equal to the spacing distance unless the edges outside of the cross are coincident,
then the entire coincident length is reported, like a touch violation.
Figure 2-232 and Figure 2-233 show the effect of the relational argument settings.
Figure 2-232 relational Argument Example

INSIDE CUTTING OVERLAP

layer1 layer2 Result

Figure 2-233 relational Argument Example

layer1

layer2

Result
POINT_TOUCH CROSS

Chapter 2: Runset Functions: A - I


external2() 2-623
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

relational_type
Optional. Specifies how INSIDE, CUTTING, and OVERLAP relational violations are
reported. The default is EXPANDED_EDGE.
❍ EXPANDED_EDGE. Reports violations as individual edges expanded to the outside by
width.

❍ POLYGON. Reports violations as closed polygons (applies only when both inputs are
polygons).
For the following examples,

Input

In the following example,


green = external2(blue, red, < 0, RADIAL,
relational = {INSIDE},
relational_type = EXPANDED_EDGE, width = 0.4);

Output

0.4

0.4
0.4

In the following example,

Chapter 2: Runset Functions: A - I


external2() 2-624
IC Validator Reference Manual Version N-2017.12-SP2

green = external2(blue, red, < 0, RADIAL,


relational = {CUTTING}, relational_type = POLYGON);

Output

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The violation region is approximated with edges that are either
perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.
❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing
distance. This value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.

Chapter 2: Runset Functions: A - I


external2() 2-625
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CENTERLINE. Reports violations as an expanded line at the center of the projection


region. The midpoints of the sides of the violation region form a line that is expanded
in both directions by width/2. When the output_type argument is CENTERLINE, only
parallel spacing is supported.
❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when the extension argument is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width value. Violations are oriented along the line.

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.
For the following examples,

Input

0.778
0.8

In the following example,


green = external2(red, blue, distance <= 1.0,
extension = RADIAL, output_type = REGION);

Chapter 2: Runset Functions: A - I


external2() 2-626
IC Validator Reference Manual Version N-2017.12-SP2

Output

0.778
0.8

In the following example,


green = external2(red, blue, <= 1.0, RADIAL,
orientation = {PARALLEL}, intersecting = {},
output_type = CENTERLINE);

Output

0.778
0.8

In the following example,


green = external2(red, blue, <= 1.0, RADIAL,
output_type = EXTENTS);

Chapter 2: Runset Functions: A - I


external2() 2-627
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

0.778
0.8

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is 0.001.
For the following example,

Input

In the following example,


green = external2(blue, red, < 0, RADIAL,
intersecting = {TOUCH}, width = 0.5);

Chapter 2: Runset Functions: A - I


external2() 2-628
IC Validator Reference Manual Version N-2017.12-SP2

Output

0.5

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

line_touch_shape
Optional. Specifies how to expand a line-touch edge violation into a polygon. The default
is OUTSIDE.
❍ OUTSIDE. Outputs a line-touch polygon outside of the dimensional function layer1
polygon. The output polygon size equals the value of the width option.
❍ INSIDE. Outputs a line-touch polygon inside of layer1. The output polygon size
equals the value of the width option.
❍ BOTH. Outputs a line touch polygon inside and outside of the layer1. The total output
size is 2*width option.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

Chapter 2: Runset Functions: A - I


external2() 2-629
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.
In the following example,
yellow = external2(green, pink, distance < minval, blocking_layer =
blue);

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.

Chapter 2: Runset Functions: A - I


external2() 2-630
IC Validator Reference Manual Version N-2017.12-SP2

❍ JOGGING_EDGE. Measures violations by accumulating a projection length for


interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

Chapter 2: Runset Functions: A - I


external2() 2-631
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. Polygon membership is determined by layer ancestry. The
default is ALL. The SAME_POLYGON and DIFFERENT_POLYGON options are valid only if the
two input layers have the same layer ancestry.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.
See the examples for the membership argument of the external1() function for more
information.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
Figure 2-234 shows an example of using the intersection_angle argument.
green = external2(blue, red, distance < 1.0, extension = RADIAL,
orientation = {}, intersecting = {},
intersection_angle < 180);

Chapter 2: Runset Functions: A - I


external2() 2-632
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-234 intersection_angle Argument Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.
❍ OUTSIDE.
If the other layer is a polygon layer, only those edges that are outside and inside
coincident with the other layer are included in the measurements.
If the other layer is an edge layer, those edges that are not outside coincident with the
other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
In Figure 2-235, the dash lines are filtered out before the measurement. The syntax is
external2(layer1 = orange, layer2 = blue, ...)

Chapter 2: Runset Functions: A - I


external2() 2-633
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-235 Example of Edge Containment for the external2 Functions


For polygons: For edges:

❍ ALL. Does not filter edges.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.
Figure 2-236 shows an example of intersecting = {}.

Chapter 2: Runset Functions: A - I


external2() 2-634
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-236 Example of Edge Breaking Behavior With intersecting Argument


e2 intersects e1 = no error e2b does not intersect e1 = error

break_edges = false break_edges = true

Figure 2-237 shows an example of projection_length > 8.


Figure 2-237 Example of Edge Breaking Behavior With the projection_length Argument
The broken edges do not add up

yes error no error

break_edges = false break_edges = true

Figure 2-238 shows an example of projection = {ON}.

Chapter 2: Runset Functions: A - I


external2() 2-635
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-238 Example of Edge Breaking Behavior With projection Argument


e2 projection to e1 is not ON = no error e2a projection to e1 is ON = error

break_edges = false break_edges = true

Figure 2-239 shows an example of the corner_to_edge argument.


Figure 2-239 Example of Edge Breaking Behavior With corner_to_edge Argument
e2 fits corner_to_edge from e1 e2a does not fit corner_to_edge from e1

break_edges = false break_edges = true

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.

Chapter 2: Runset Functions: A - I


external2() 2-636
IC Validator Reference Manual Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Distance
Error1 @= {@ "This is an example of an external2() function
min spacing 0.5";
externa12(met1, met2, <= 0.5, RADIAL);
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
external2(met1, met2, distance < 0.5, extension = NONE);
};

Connectivity
Error1 @= { @ "min spacing 0.5 for all polygons on the same net";
external2(met1, met2, distance < 0.5,
extension = RADIAL, connectivity = SAME_NET);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
measure only parallel edges";
external2(met1, met2, distance < 0.5,
extension = RADIAL, orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure all parallel angled edges";
external2(met1, met2, distance < 0.5, extension = RADIAL,
orthogonal = BOTH, orientation = {PARALLEL});
};

Output type
c1 = external2(met1, met2, distance < 0.5, extension = RADIAL,
output_type = CENTERLINE);

See Also
external2_edge() and not_external2_edge()

Chapter 2: Runset Functions: A - I


external2() 2-637
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external2_edge() and not_external2_edge()


The external2_edge() function selects the portion of layer1 or layer2 edges that
violates the spacing constraints. It measures outside-to-outside spacing between two layers
based on the specified distance. The arguments define various geometric conditions for
measuring the distance between the layer edges. The complement of this function is the
not_external2_edge() function.

Syntax
external2_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH | INSIDE | CUTTING |
OVERLAP | CROSS}, //optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
output_type = FAIL | CENTERLINE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-638
IC Validator Reference Manual Version N-2017.12-SP2

MUTUAL_NON_ORTHOGONAL, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = OUTSIDE | ALL, //optional
output_side = ALL | HIGH | LOW, //optional
break_edges = true | false //optional
);

not_external2_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH | INSIDE | CUTTING |
OVERLAP | CROSS}, //optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-639
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

intersection_angle = doubleconstraint, //optional


name = "layer_label", //optional
edge_containment = OUTSIDE | ALL, //optional
output_side = ALL | HIGH | LOW, //optional
break_edges = true | false //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Optional. Specifies the check distance. See “Constraints” on page A-4 for more
information. The default is 0.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked. The default is RADIAL.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-640
IC Validator Reference Manual Version N-2017.12-SP2

❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.
In the conceptual diagram shown in Figure 2-240, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-240 Check Region Extension

For the following examples,

Input
0.996

0.2
0.7 0.8 1
1 0.95 0.996
1

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-641
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
extension = RADIAL);

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
extension = SQUARE);

Output

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-642
IC Validator Reference Manual Version N-2017.12-SP2

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


For the following examples,

Input

0.99 1

0.99

0.99 1 1

0.99

In the following example,


green = external2_edge(blue, red, distance < 1.0,
extension = NONE,
orientation = {ACUTE, PARALLEL});

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-643
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external2_edge(blue, red, distance < 1.0,
extension = NONE,
orientation = {PERPENDICULAR});

Output

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-644
IC Validator Reference Manual Version N-2017.12-SP2

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Independent of the distance argument, reports an outside touch as a
violation.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
For the following examples,

Input
0.849

0.656

0.778
0.849

0.707

In the following example,


green = external2_edge(blue, red, distance < 1.0,
extension = NONE, orientation = {},
intersecting = {ACUTE, TOUCH});

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-645
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external2_edge(blue, red, distance < 1.0,
extension = NONE, orientation = {},
intersecting = {PERPENDICULAR});

Output

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-646
IC Validator Reference Manual Version N-2017.12-SP2

endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is (IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
In Figure 2-241, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Figure 2-241 Projection Region for Edges

For the following examples,

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-647
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Input

0.99
0.99

0.99 0.99

In the following example,


green = external2_edge(blue, red distance <= 1.0, projection = {OUT});

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0, projection = {ON});

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-648
IC Validator Reference Manual Version N-2017.12-SP2

Output

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-649
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


For the following examples,

Input

0.99 1

0.99

0.99 1 1

0.99

In the following example,


green = external2_edge(blue, red, distance < 1.0,
orthogonal = NEITHER);

Output

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-650
IC Validator Reference Manual Version N-2017.12-SP2

In the following example,


green = external2_edge(blue, red, distance < 1.0, orthogonal = ONE);

Output

In the following example,


green = external2_edge(blue, red, distance < 1.0, orthogonal = ALL);

Output

In the following example,


green = external2_edge(blue, red, distance < 1.0, orthogonal = BOTH);

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-651
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


For the following examples,

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-652
IC Validator Reference Manual Version N-2017.12-SP2

Input

0.919 1
0.919
1

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
extension = NONE, direction = HORIZONTAL);

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
extension = NONE, direction = ORTHOGONAL);

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-653
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
extension = NONE, direction = NEGATIVE_45);

Output

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-654
IC Validator Reference Manual Version N-2017.12-SP2

For the following examples,

Input

0.919 1
0.919
1

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
from_layer = LAYER1);

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
from_layer = LAYER2);

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-655
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
from_layer = ALL);

Output

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-656
IC Validator Reference Manual Version N-2017.12-SP2

❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See Figure 2-242 for an example of the corner_configuration argument.
Figure 2-242 corner_configuration Measurements

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ INSIDE. Looks inside both layer1 and layer2.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-657
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
external2() function for exceptions and an example.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the external2() function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-658
IC Validator Reference Manual Version N-2017.12-SP2

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-243 for an example of the extension_obstructions argument.
Figure 2-243 Example of extension_obstructions
POINT_TO_POINT

ALL

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-659
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. INSIDE,
CUTTING, and CROSS are available only when both inputs are polygon layers. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The length of the violation is equal to the maximum of the distance constraint, with
a minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
❍ INSIDE. Creates a violation for polygons that are inside.

❍ CUTTING. Creates a violation for polygons that are cutting.

❍ OVERLAP. Creates a violation for material that is not outside the other layer.

■ When both inputs are polygon layers, any shared area between the two layers is
reported.
■ When one of the inputs is an edge layer, edge portions that fall inside the polygon
layer are reported.
■ When both inputs are edge layers, inside coincident portions are reported.
❍ CROSS. Creates a violation where layer1 and layer2 edges cross. The violation
reports the point where layer1 edges cross from inside to not inside of layer2
edges, and layer2 edges cross from inside to not inside of layer1 edges, where not
inside includes outside coincident.
The violations are created outside the polygons, as though the polygon edges are
being measured outside to outside regardless of the angle. The length of the violation
is equal to the spacing distance unless the edges outside of the cross are coincident,
then the entire coincident length is reported, like a touch violation.
Figure 2-244 and Figure 2-245 show the effect of the relational argument settings.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-660
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-244 relational Argument Example

INSIDE CUTTING OVERLAP

layer1 layer2 Result

Figure 2-245 relational Argument Example

layer1

layer2

Result
POINT_TOUCH CROSS

output_layer
Optional. Specifies the layer that is output for the violations. The default is LAYER1.
❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.


For the following examples,

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-661
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Input

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
output_layer = LAYER1);

Output

In the following example,


green = external2_edge(blue, red, distance <= 1.0,
output_layer = LAYER2);

Output

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-662
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

output_type
Optional. Specifies the type of output generated. The default is FAIL.
Note:
The output_type argument is not available for the not_external2_edge()
function.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-663
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Outputs spacing violations as lines at the center of the projection
region. A line is two points connected with no specific order. The midpoints of the
sides of the violation region are used to create the lines. When the output_type
argument is CENTERLINE, only parallel spacing is supported.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-664
IC Validator Reference Manual Version N-2017.12-SP2

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. For edge layers, polygon membership is determined by
layer ancestry. The default is ALL. The SAME_POLYGON and DIFFERENT_POLYGON options
are valid only if the two input layers have the same layer ancestry.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.
See the examples for the membership argument of the external1() function for more
information.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
Figure 2-246 shows an example of using the intersection_angle argument.
green = external2_edge(blue, red, distance < 1.0, extension = RADIAL,
orientation = {}, intersecting = {},
intersection_angle < 180);

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-665
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-246 intersection_angle Argument Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.
❍ OUTSIDE.
If the other layer is a polygon layer, only those edges that are outside and inside
coincident with the other layer are included in the measurements.
If the other layer is an edge layer, those edges that are not outside coincident with the
other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
See Figure 2-235 for an example.
❍ ALL. Does not filter edges.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-666
IC Validator Reference Manual Version N-2017.12-SP2

output_side
Optional. Specifies to output only the check edges on the specified side of any violation
projected from an orthogonal edge. The default is ALL.
Note:
To use the HIGH or LOW options,
■ The direction argument needs to be HORIZONTAL or VERTICAL.
■ The extension argument needs to be NONE.
❍ ALL. Outputs all check edges

❍ HIGH. Outputs all check edges except:

■ For any violation projected from a horizontal edge, only the edge on the top side
is output.
■ For any violation projected from a vertical edge, only the edge on the right side is
output.
❍ LOW. Outputs all check edges.

■ For any violation projected from a horizontal edge, only the edge on the bottom
side is output.
■ For any violation projected from a vertical edge, only the edge on the left side is
output.
For examples, see the output_side argument of the enclose_edge() and
not_enclose_edge() functions.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-667
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Distance
Error1 @= {@ "This is an example of an external2_edge() function
min spacing 0.5";
externa12_edge(met1, met2, distance <= 0.5 );
};

Extension
Error1 @= {@ "min spacing 0.5 opposite edges only";
external2_edge(met1, met2, distance < 0.5, extension = NONE);
};

Connectivity
Error1 @= {@ "min spacing 0.5 for all polygons on the same net";
external2_edge(met1, met2, distance < 0.5, connectivity = SAME_NET);
};

Orientation
Error1 @= {@ "min spacing 0.5 for met1 to met2" +
"measure only parallel edges";
external2_edge(met1, met2, distance < 0.5, orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure all parallel angled edges";
external2_edge(met1, met2, distance < 0.5, orthogonal = BOTH,
orientation = {PARALLEL});
};

See Also
external1_edge() and not_external1_edge()

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-668
IC Validator Reference Manual Version N-2017.12-SP2

external2()

Chapter 2: Runset Functions: A - I


external2_edge() and not_external2_edge() 2-669
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

external2_error()
The external2_error() function measures outside-to-outside spacing between two layers
based on the specified distance. The arguments define various geometric conditions for
measuring the distance between the layer edges. The output is unmerged errors.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Errors output to the error database consist of pairs of violation edges.

Syntax
external2_error(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR},//optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
INSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
blocking_layer = data_layer, //optional
blocking_layer_look_thru = COINCIDENT | NONE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,

Chapter 2: Runset Functions: A - I


external2_error() 2-670
IC Validator Reference Manual Version N-2017.12-SP2

//optional
intersection_angle =
doubleconstraint, //optional
name =
"layer_label", //optional
edge_containment =
OUTSIDE | ALL, //optional
relational =
{POINT_TOUCH | INSIDE | CUTTING |
OVERLAP | CROSS}, //optional
break_edges = true | false, //optional
voltage_filter = {delta_voltage = doubleconstraint,
delta_method = HIGH_LOW_MAX |
SAME_TYPE_MAX | SYNC_NET
HIGH_LOW,
high_voltage_property_name = "string",
low_voltage_property_name = "string"},
//optional
net_double_property_filter = {property_value = doubleconstraint,
property_name = "string"} //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are

Chapter 2: Runset Functions: A - I


external2_error() 2-671
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

Chapter 2: Runset Functions: A - I


external2_error() 2-672
IC Validator Reference Manual Version N-2017.12-SP2

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


See the examples for the orientation argument of the external2() function for more
information.

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Independent of the distance argument, reports an outside touch as a
violation.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
See the examples for the intersecting argument of the external2() function for more
information.

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
argument specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
See the examples for the projection argument of the external2() function for more
information.

Chapter 2: Runset Functions: A - I


external2_error() 2-673
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


See the examples for the orthogonal argument of the external2() function for more
information.

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

Chapter 2: Runset Functions: A - I


external2_error() 2-674
IC Validator Reference Manual Version N-2017.12-SP2

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See the examples for the direction argument of the external2() function for more
information.

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.


See the examples for the from_layer argument of the external2() function for more
information.

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
convex, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
convex, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See the examples for the corner_configuration argument of the external2()
function for more information.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.

Chapter 2: Runset Functions: A - I


external2_error() 2-675
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NONE. Does not look through any edges.

❍ COINCIDENT. Looks through inside coincident edges.

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ INSIDE. Looks inside both layer1 and layer2.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
external2() function for exceptions and an example.
❍ ALL. Looks through all edges.
See the example for the look_thru argument of the external2() function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

Chapter 2: Runset Functions: A - I


external2_error() 2-676
IC Validator Reference Manual Version N-2017.12-SP2

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
See the examples for the extension_look_past argument of the external2() function
for more information.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See the examples for the extension_obstructions argument of the external2()
function for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.

Chapter 2: Runset Functions: A - I


external2_error() 2-677
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ HIERARCHICAL. Processes all data within the context of the top cell.

blocking_layer
Optional. Specifies the edge or polygon layer that provides an obstruction for the spacing
measurement in accordance with the blocking_layer_look_thru argument. The
blocking_layer has no effect on and does not interfere with the blocking provided by
the input layers. By default, this argument is not used.

blocking_layer_look_thru
Optional. Specifies the edges of the blocking_layer that the spacing check looks
through when measuring. The default is NONE.
❍ NONE. Does not look through any edges of the blocking_layer, including edge
endpoints.
❍ COINCIDENT. Looks through inside coincident edges of the blocking layer.
See the examples for the blocking_layer_look_thru argument of the external2()
function for more information.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

Chapter 2: Runset Functions: A - I


external2_error() 2-678
IC Validator Reference Manual Version N-2017.12-SP2

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon or different polygons. For edge layers, polygon membership is determined by
layer ancestry. The default is ALL. The SAME_POLYGON and DIFFERENT_POLYGON options
are valid only if the two input layers have the same layer ancestry.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.


Note:
When membership = DIFFERENT_POLYGON and connectivity = SAME_NET, this
function might incorrectly report violations on the same polygon depending on the
given hierarchy and spacing distance.
See the examples for the membership argument of the external1() function for more
information.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.

Chapter 2: Runset Functions: A - I


external2_error() 2-679
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the intersection_angle argument of the external2() and external2_edge()


and not_external2_edge() functions for examples.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.
❍ OUTSIDE.
If the other layer is a polygon layer, only those edges that are outside and inside
coincident with the other layer are included in the measurements.
If the other layer is an edge layer, those edges that are not outside coincident with the
other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
See Figure 2-235 for an example.
❍ ALL. Does not filter edges.

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. INSIDE,
CUTTING, and CROSS are available only when both inputs are polygon layers. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.

Chapter 2: Runset Functions: A - I


external2_error() 2-680
IC Validator Reference Manual Version N-2017.12-SP2

❍ INSIDE. Creates a violation for polygons that are inside.

❍ CUTTING. Creates a violation for polygons that are cutting.

❍ OVERLAP. Creates a violation for material that is not outside the other layer.

■ When both inputs are polygon layers, the edges of any shared area between the
two layers are reported.
■ When one of the inputs is an edge layer, edge portions that fall inside the polygon
layer are reported.
■ When both inputs are edge layers, inside coincident portions are reported.
❍ CROSS. Creates a violation where layer1 and layer2 edges cross. The violation
reports the point where layer1 edges cross from inside to not inside of layer2
edges, and layer2 edges cross from inside to not inside of layer1 edges, where not
inside includes outside coincident.
The violations are created outside the polygons, as though the polygon edges are
being measured outside to outside regardless of the angle. The length of the violation
is equal to the spacing distance unless the edges outside of the cross are coincident;
then the entire coincident length is reported, like a touch violation.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

voltage_filter
Optional. Specifies that each spacing error is prefiltered to meet the voltage constraints.
The default is no constraint and no prefiltering.
❍ delta_voltage. Specifies with a nonnegative value that each spacing error must
have a delta voltage to satisfy the constraint. The default is <0, which means no
constraint.
❍ delta_method. Specifies how to calculate the delta voltage.

Chapter 2: Runset Functions: A - I


external2_error() 2-681
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ HIGH_LOW_MAX. Specifies the maximum voltage of (VH1 - VL2, VH2 - VL1).

■ SAME_TYPE_MAX. Specifies the maximum voltage of (abs(VH1 - VH2), abs(VL1


- VL2)).

■ SYNC_NET. Specifies that if the two nets are sync, use SAME_TYPE_MAX. Otherwise,
use HIGH_LOW_MAX.
■ HIGH_LOW. Specifies the voltage of VH1 - VL2, where 1 means layer1 and 2
means layer2.
❍ high_voltage_property_name. Specifies the property name that represents high
voltage.
❍ low_voltage_property_name. Specifies the property name that represents low
voltage.

net_double_property_filter
Optional. Specifies that each spacing error is prefiltered to meet the property constraints.
The default is no constraint and no prefiltering.
❍ property_value: Specifies with a nonnegative value that each spacing error must
have either net with a property value to satisfy the constraint. The default is <0, which
means no constraint.
❍ property_name: Specifies the name of the property.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
To set a minimum spacing of 0.5:
ext2_errs = external2_error(layer1 = met1, layer2 = met2,
distance <= 0.5, extension = RADIAL);

Touch interactions are allowed.

Chapter 2: Runset Functions: A - I


external2_error() 2-682
IC Validator Reference Manual Version N-2017.12-SP2

See Also
drc_features()
external2()
external2_edge() and not_external2_edge()

Chapter 2: Runset Functions: A - I


external2_error() 2-683
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extract_devices()
The extract_devices() function extracts the device information defined in the device
matrix into a device database. The extract_devices() function modifies the connect
database by creating ports and dummy instance nets.
Call this function after all device configuration functions are called and before the netlisting
functions are called.

Syntax
extract_devices(
matrix = device_matrix,
remove_dangling_ports = ALL | UNTEXTED //optional
);

Returns
device database

Arguments
matrix
Required. Specifies the device matrix where device extraction data is stored by the
device configuration functions.

remove_dangling_ports
Optional. Specifies if the device information is preprocessed to find all cases where a
port is considered to be dangling; that is, when no devices or instances in the cell
connect to the port. The default is UNTEXTED.
❍ UNTEXTED. Removes only untexted dangling ports.

❍ ALL. Removes all dangling ports.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.

Chapter 2: Runset Functions: A - I


extract_devices() 2-684
IC Validator Reference Manual Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
get_netlist_connect_database()
init_device_matrix()
netlist()

Chapter 2: Runset Functions: A - I


extract_devices() 2-685
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fill_pattern()
The fill_pattern() function creates a set of fill rectangles within a layer. The rectangles
are placed within layer1 polygons either on a uniform grid or staggered in the x- or
y-direction.
A remote function calls various utility functions that operate on the current polygon to create
new polygons and to write these polygons to the output layer.

Syntax
fill_pattern(
layer1 = polygon_layer,
fill_function = function,
grid_mode = LOCAL | GLOBAL //optional
output_aref = {output_aref = true | false,
cell_prefix = "string"}, //optional
grid = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
min_space = double, //optional
name = "layer_label", //optional
context_layer = polygon_layer, //optional
color = NO_COLOR | COLOR_1 | COLOR_2 | COLOR_3, //optional
color_space = double, //optional
min_space_x = double, //optional
min_space_y = double, //optional
min_space_corner = double, //optional
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer.

fill_function
Required. Specifies the remote function containing the programmable density equations.
See “Fill Pattern Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define a function.

grid_mode
Optional. Specifies the origin used for the placement of fill. The default is LOCAL.
❍ GLOBAL. Sets the origin for the placement of fill to the bottom left corner of the top cell.

Chapter 2: Runset Functions: A - I


fill_pattern() 2-686
IC Validator Reference Manual Version N-2017.12-SP2

❍ LOCAL. Sets the origin for the placement of fill to the bottom left of the extents of a
given layer1 polygon.

output_aref
Optional. Specifies whether to output fill as AREFs (array references).
Note:
Do not manipulate the output generated by the fill_pattern() function. If you do,
you will likely modify specific instances of the AREFs, and as a result the AREF data
can get exploded into individual polygons. The exploded data can create hierarchy
problems and cause performance issues.
❍ output_aref. The default is false.

■ true: Outputs polygons in AREFs. To limit the size of the output files, use this
setting.
■ false: Outputs individual polygons.

❍ cell_prefix. Specifies the prefix for all cell names created when fill is added. The
default is "$FA".

grid
Optional. Specifies a user-defined grid. This grid applies to spacings, such as width;
height; x-direction space, shift and stagger; and y-direction space, shift and stagger,
specified in the fp_generate_fill() utility function. The default is 0.0

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

min_space
Optional. Specifies the minimum spacing between fill patterns. The default is 0.0.
Note:
The result of the fill_pattern() function when using the min_space argument
depends on the input order of the polygons.
The minimum spacing must be less than or equal to the internal distance derived
according to the following Minimum Spacing Calculation section. When the min_space
argument is used, the patterns are placed under the top cell, even if the grid_mode
argument is LOCAL.

Chapter 2: Runset Functions: A - I


fill_pattern() 2-687
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Use of the min_space argument overrides any specified min_space_x,
min_space_y, min_space_corner, and extension argument values.
Figure 2-247 shows a spacing violation.
Figure 2-247 Spacing Violation

Polygon 1
Spacing violation

Fill thrown away


because of
spacing violation
Polygon 2

Minimum Spacing Calculation


Use the formulas described in this section to calculate the minimum spacing between
polygons. Check that the minimum spacing satisfies your requirements.
1. Determine the initial values to use in the fp_generate_fill() utility function within
your fill_function remote function.
fp_generate_fill(
...
width = double,
height = double,
space_x = double,
space_y = double,
stagger_x = double,
stagger_y = double,
...
);

2. Verify that the stagger_x and stagger_y values to are reasonable.


3. Derive the minimum spacing. See Figure 2-248 for an example.
internal distance = min{d_BU, d_BR, d_RU}

Chapter 2: Runset Functions: A - I


fill_pattern() 2-688
IC Validator Reference Manual Version N-2017.12-SP2

where
■ d_BU = the minimum allowable distance between base and up polygons
■ d_BR = the minimum allowable distance between base and right polygons
■ d_RU = the minimum allowable distance between right and up polygons
and
■ If stagger_x <= width: d_BU = space_y
2 2
■ If stagger_x > width: d_BU = sqrt(space_y + (stagger_x – width) )
■ If stagger_y <= height: d_BR = space_x
2 2
■ If stagger_y > height: d_BR = sqrt(space_x + (stagger_y – height) )
■ If stagger_x < space_x and stagger_y < space_y:
2 2
d_RU = sqrt((space_x – stagger_x) + (space_y-stagger_y) )
■ If stagger_x >= space_x or stagger_y >= space_y: Patterns collide and a
warning message is output and the output layer is empty.
Figure 2-248 Deriving the Minimum Spacing

U
d_RU

d_BU
R

d_BR
B

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

context_layer
Optional. Specifies an optional polygon layer that is used to align fill based on a pitch
rule.

Chapter 2: Runset Functions: A - I


fill_pattern() 2-689
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This layer changes three insertion parameters, based on its individual polygons:
❍ The context of the grid is changed from the origin to the lower left of the extents of a
given context_layer polygon.
❍ The fillable regions are the result of layer1 ANDed with a given context_layer
polygon.
❍ The origin for fill insertion is forced to the lower left of the extents of a given
context_layer polygon; therefore, the grid mode is ignored.

color
Optional. Assigns alternating colors to fill shapes in a regular fill pattern. There is a
choice of three colors: COLOR_1, COLOR_2, and COLOR_3. The default is NO_COLOR.
To assign colors to the fill, you must call the fill_pattern() function twice in the
runset. For example,
layer_1 = fill_pattern(..., color = COLOR_1);
layer_2 = fill_pattern(..., color = COLOR_2);
layer_3 = fill_pattern(..., color = COLOR_3);

The IC Validator tool tries to evenly split the fill shapes between the two colors and gives
higher priority to alternating colors along the line ends, as shown in Figure 2-249.
Figure 2-249 Coloring Example

Preferred color Avoided color


assignments assignments

color_space
Optional. Specifies the minimum spacing allowed between fills for two regions. This is
the interregion coloring constraint. The default is 0.0; that is, there is no interregion
coloring constraint. This spacing is specific to the fill_pattern() function call, not
between two fill_pattern() function calls.

Chapter 2: Runset Functions: A - I


fill_pattern() 2-690
IC Validator Reference Manual Version N-2017.12-SP2

min_space_x
Optional. Specifies the minimum spacing in the x-direction between fills. The default
is 0.0.

min_space_y
Optional. Specifies the minimum spacing in the y-direction between fills. The default
is 0.0.

min_space_corner
Optional. Specifies the minimum corner spacing. This value is used when the extension
argument is RADIAL or RADIAL_INTERSECTION. A value of 0 means there is no minimum
spacing. The default is the maximum of the min_space_x and min_space_y argument
values.

extension
Optional. Specifies the corner spacing requirement between fill regions, as shown in
Figure 2-250. The default is ELLIPTICAL.
Figure 2-250 Extensions Between Fill Regions

ELLIPTICAL RADIAL INTERSECTION RADIAL_INTERSECTION

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
fill_layer = fill_pattern(layer1 = mylayer1,
fill_function = my_func );

where
my_func: function ( void ) returning void{
strike : polygon = fp_get_current_polygon();
fp_generate_fill(
polygon = strike,
width = 1.0,

Chapter 2: Runset Functions: A - I


fill_pattern() 2-691
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

height = 1.0,
space_x = 2.0,
space_y = 2.0,
stagger_x = 0.0,
stagger_y = 0.0,
grid_shift = {1.0, 1.0}
);
};

See Also
fill_pattern_rings()
polygon_extents()
polygon_features()
polygons()
remove_fill()

Chapter 2: Runset Functions: A - I


fill_pattern() 2-692
IC Validator Reference Manual Version N-2017.12-SP2

fill_pattern_rings()
The fill_pattern_rings() function creates a pattern of fill rectangles around layer1
polygons. This pattern follows the orientation of the layer1 shapes. You can specify whether
to stagger successive rows of rectangles and the number of rows to insert.
The fill pattern consists of multiple protection rings, starting with an inner ring of fill
rectangles, which are highlighted in red in Figure 2-251, followed by multiple, successive
rings, and ending with an outer ring. The fill pattern is divided at each corner by a 45-degree
line.
Figure 2-251 fill_pattern_rings() Function Example

4th ring 1st ring

Syntax
fill_pattern_rings(
layer1 = polygon_layer,
ring_count = integer,
width = double,
height = double,
space_x = double,
space_y = double,
space_to_signal = double,
min_space_corner = double, //optional
stagger_x = double, //optional
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION //optional
color = NO_COLOR | COLOR_1 | COLOR_2 | COLOR_3, //optional
color_space = double, //optional

Chapter 2: Runset Functions: A - I


fill_pattern_rings() 2-693
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

grid = double, //optional


name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer. The polygons on this layer are the signal
polygons.

ring_count
Required. Specifies the number of rings of fill to be generated around the signal
polygons.

width
Required. Specifies the width of the fill rectangle.

height
Required. Specifies the height of the fill rectangle.

space_x
Required. Specifies the space in the x-direction between fills.

space_y
Required. Specifies the space in the y-direction between fills.

space_to_signal
Required. Specifies the minimum required space between the signal and the closest fill
polygon.

min_space_corner
Optional. Specifies the minimum corner spacing. This value is used when the extension
argument is RADIAL or RADIAL_INTERSECTION. A value of 0 means that there are no
minimum spacing corner checks. The default is 0.0.

stagger_x
Optional. Specifies the stagger distance between fill shapes in the x-direction. The
default is 0.

Chapter 2: Runset Functions: A - I


fill_pattern_rings() 2-694
IC Validator Reference Manual Version N-2017.12-SP2

extension
Optional. Specifies the corner spacing requirement between fill regions, as shown in
Figure 2-252. The default is INTERSECTION.
Figure 2-252 Extensions Between Fill Regions

ELLIPTICAL RADIAL INTERSECTION RADIAL_INTERSECTION

color
Optional. Assigns alternating colors to fill shapes in a regular fill pattern. There is a
choice of three colors: COLOR_1, COLOR_2, and COLOR_3. The default is NO_COLOR.
To assign colors to the fill, you must call the fill_pattern_rings() function twice in
the runset. For example,
layer_1 = fill_pattern_rings(..., color = COLOR_1);
layer_2 = fill_pattern_rings(..., color = COLOR_2);
layer_3 = fill_pattern_rings(..., color = COLOR_3);

The IC Validator tool tries to evenly split the fill shapes between the two colors and gives
higher priority to alternating colors along the line ends, as shown in Figure 2-249.

color_space
Optional. Specifies the minimum space allowed between fills for two regions. This is the
interregion coloring constraint. The default is 0.0; that is, there is no interregion coloring
constraint.
Note:
This spacing is specific to the fill_pattern_rings() function call, not between two
fill_pattern_rings() function calls.

grid
Optional. Specifies a user-defined grid. This grid applies to spacings, such as width,
height, x-direction space, shift and stagger, and y-direction space, shift and stagger,
specified in the fp_generate_fill() utility function. The default is 0.0.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


fill_pattern_rings() 2-695
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
M1 = assign({{11,0}});
m1_signal_oriented = fill_pattern_rings(
layer1 = M1,
ring_count = 6,
width = 0.24,
height = 0.06,
space_x = 0.09,
space_y = 0.08,
space_to_signal = 0.1,
min_space_corner = 0.081,
stagger_x = 0.165
);

Figure 2-253 fill_pattern_rings() Function Example

M1

fill

See Also
fill_pattern()

Chapter 2: Runset Functions: A - I


fill_pattern_rings() 2-696
IC Validator Reference Manual Version N-2017.12-SP2

filter()
The filter() function filters devices based on:
• Predefined filter options
• Filter functions

Candidate devices for filtering can be specified based on:


• Device names
• Device types
• Equivalence cell pairs

This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
filter(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
filter_options = {option, ...}, //optional
filter_function = "string", //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...}, //optional
schematic_filter_options = {option, ...}, //optional
layout_filter_options = {option, ...}, //optional
short_pins = {"string" ...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The filter() function
information is added.

device_type
Required. Specifies the device type.

Chapter 2: Runset Functions: A - I


filter() 2-697
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device_names
Optional. Specifies the layout devices that have filter options applied. Each device must
match a device specified in a device_name argument of a device configuration function.
By default, all devices of the type specified in the device_type argument are filtered.

filter_options
Optional. Specifies the list of filtering options for device types, which are shown in
Table 2-23. The option type must match the device_type argument, and it applies to the
devices specified by the device_names argument. The default is no filter option ({}),
which unsets all filtering options.
These options apply to the layout and schematic netlists. The net names are specified in
the layout_power and layout_ground arguments of the text_options() function and
the schematic_power and schematic_ground arguments of the net_options()
function. In addition, you can use the schematic_filter_options argument to filter
schematic devices and the layout_filter_options argument to filter layout devices.
Note:
You must use the filter_function argument or at least one of the filter options
arguments: filter_options, schematic_filter_options, or
layout_filter_options. The IC Validator tool filters devices by first checking the
filter options arguments and then using the remote filter function.
Table 2-23 Filtering Options

Option Description

CAP_0 Filters all capacitors.

CAP_1 Filters devices when both pins are shorted.

CAP_2 Filters devices when both pins are floating.

CAP_3 Filters devices when either pin is floating.

GEN_0 Filters all generic devices.

GEN_1 Filters devices when all pins are shorted.

IND_0 Filters all inductors.

IND_1 Filters devices when both pins are shorted.

IND_2 Filters devices when both pins are floating.

IND_3 Filters devices when either pin is floating.

Chapter 2: Runset Functions: A - I


filter() 2-698
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-23 Filtering Options (Continued)

Option Description

NMOS_0 Filters all NMOS devices.

NMOS_1 Filters devices when gate, source, and drain pins are shorted.

NMOS_2 Filters devices when gate, source, and drain pins are floating.

NMOS_3 Filters devices when the gate pin is tied to ground.

NMOS_4 Filters devices when source and drain pins are tied to ground.

NMOS_5 Filters devices when source and drain pins are shorted.

NMOS_6 Filters devices when source or drain pins are floating.

NMOS_7 Filters devices when the gate pin and either the source or drain pin are floating.

NMOS_8 Filters devices when gate, source, or drain pin is floating.

NMOS_9 Filters devices when the gate pin is tied to power and source and drain pins are
tied to ground.

NMOS_10 Filters devices when source or drain is floating, and the gate net is tied only to the
gate pin.

NMOS_11 Filters devices when the gate pin is tied to ground, and source and drain pins are
tied together.

NMOS_12 Filters devices when the gate pin is tied to ground, and either the source or drain
pin is floating.

NMOS_13 Filters devices when gate, source, drain, and first bulk pins are shorted.

NMOS_14 Filters devices when the gate pin is floating.

NMOS_15 Filters devices when the gate pin and either the source or drain pin are floating,
and the other source or drain pin is tied to a power or ground net.

NMOS_16 Filters devices when gate and first bulk pins are tied to the same net.

NMOS_17 Filters devices when the gate pin is floating, and either the source or drain pin has
a path to ground.

NMOS_19 Filters devices when the gate pin is floating, and source and drain pins are
shorted.

Chapter 2: Runset Functions: A - I


filter() 2-699
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-23 Filtering Options (Continued)

Option Description

NMOS_20 Filters devices when source and drain pins are floating.

NMOS_21 Filters devices when gate and first bulk pins are tied to the same ground.

NMOS_22 Filters devices when the gate pin is floating and source and drain pins are tied to
a single power net.

NMOS_23 Filters devices when the gate pin is floating and source and drain pins are tied to
a single ground net.

NMOS_24 Filters devices when all pins are shorted including, bulk and optional pins.

NMOS_25 Filters devices when gate is tied to either power or ground and source and drain
are shorted.

NP_0 Filters all NP devices.

NP_1 Filters devices when both pins are shorted.

NP_2 Filters devices when both pins are floating.

NP_3 Filters devices when either pin is floating.

NPN_0 Filters all NPN devices.

NPN_1 Filters devices when emitter, base, and collector pins are shorted.

NPN_2 Filters devices when emitter, base, and collector pins are floating.

NPN_4 Filters devices when the base pin is tied to ground.

NPN_5 Filters devices when the base pin is floating, and collector is tied to power (filters
multiple-emitter devices).
This filter applies only to multiple-emitter NPN devices extracted as individual
3-terminal devices with parallel connections to the base and collector terminals.

NPN_6 Filters devices when emitter and base pins are floating.

NPN_7 Filters devices when all emitters are floating (filters multiple-emitter devices).
This filter applies only to multiple-emitter NPN devices extracted as individual
3-terminal devices with parallel connections to the base and collector terminals.

NPN_8 Filters devices when base and emitter are shorted.

Chapter 2: Runset Functions: A - I


filter() 2-700
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-23 Filtering Options (Continued)

Option Description

PMOS_0 Filters all PMOS devices.

PMOS_1 Filters devices when gate, source, and drain pins are shorted.

PMOS_2 Filters devices when gate, source, and drain pins are floating.

PMOS_3 Filters devices when the gate pin is tied to power.

PMOS_4 Filters devices when source and drain pins are tied to power.

PMOS_5 Filters devices when source and drain pins are shorted.

PMOS_6 Filters devices when source or drain pins are floating.

PMOS_7 Filters devices when the gate pin and either the source or drain pin are floating.

PMOS_8 Filters devices when the gate, source, or drain pin is floating.

PMOS_9 Filters devices when the gate pin is tied to ground and source and drain pins are
tied to power.

PMOS_10 Filters devices when source or drain is floating, and the gate net is tied only to the
gate pin.

PMOS_11 Filters devices when the gate is tied to power, and source and drain are tied
together.

PMOS_12 Filters devices when the gate is tied to power, and either source or drain is
floating.

PMOS_13 Filters devices when gate, source, drain, and first bulk pins are shorted.

PMOS_14 Filters devices when the gate pin is floating.

PMOS_15 Filters devices when the gate pin and either source or drain pin are floating, and
the other source or drain pin is tied to a power or ground net.

PMOS_16 Filters devices when gate and first bulk pins are tied to the same net.

PMOS_17 Filters devices when the gate pin is floating, and either the source or drain pin has
a path to power.

PMOS_19 Filters devices when the gate pin is floating, and source and drain pins are
shorted.

Chapter 2: Runset Functions: A - I


filter() 2-701
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-23 Filtering Options (Continued)

Option Description

PMOS_20 Filters devices when source and drain pins are floating.

PMOS_21 Filters devices when gate and the first bulk pins are tied to the same power.

PMOS_22 Filters devices when the gate pin is floating and source and drain pins are tied to
a single power net.

PMOS_23 Filters devices when the gate pin is floating and source and drain pins are tied to
a single ground net.

PMOS_24 Filters devices when all pins are shorted, including bulk and optional pins.

PMOS_25 Filters devices when gate is tied to either power or ground and source and drain
are shorted.

PN_0 Filters all PN devices.

PN_1 Filters devices when both pins are shorted.

PN_2 Filters devices when both pins are floating.

PN_3 Filters devices when either pin is floating.

PNP_0 Filters all PNP devices.

PNP_1 Filters devices when emitter, base, and collector pins are shorted.

PNP_2 Filters devices when emitter, base, and collector pins are floating.

PNP_3 Filters devices when the base pin is tied to power.

PNP_4 Filters devices when all pins are floating (filters multiple-collector devices).
This filter applies only to multiple-collector PNP devices extracted as individual
3-terminal devices with parallel connections to the base and emitter terminals.

PNP_5 Filters devices when all collectors are floating (filters multiple-collector devices).
This filter applies only to multiple-collector PNP devices extracted as individual
3-terminal devices with parallel connections to the base and emitter terminals.

PNP_8 Filters devices when base and emitter are shorted.

RES_0 Filters all resistors.

Chapter 2: Runset Functions: A - I


filter() 2-702
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-23 Filtering Options (Continued)

Option Description

RES_1 Filters devices when both pins are shorted.

RES_2 Filters devices when both pins are floating.

RES_3 Filters devices when either pin is floating.

filter_function
Optional. Specifies the remote function that defines filtering conditions. If the function is
satisfied, the devices listed in the device_names argument are removed. See “Compare
Utility Functions” in Chapter 4 for more information about the utility functions you can use
to define a remote function.
Note:
You must use the filter_function argument or at least one of the filter options
arguments: filter_options, schematic_filter_options, or
layout_filter_options. The IC Validator tool filters devices by first checking the
filter options arguments and then using the remote filter function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which the filter() function
applies. You must specify the equiv_cells pairs in the equiv_options() function
before calling the filter() function. If only one cell name in the pair is specified, the
names are assumed to be the same.
Note:
The filter() instruction is observed only when comparing each listed equivalence
cell pair. If an equivalence cell pair is exploded into the parent equivalence cell pair
while comparing the parent, the filter() instruction is discarded for the content of
the exploded cell.

schematic_filter_options
Optional. Specifies the filtering options for each device type, as shown in Table 2-23. The
option type must match the type specified by the device_type argument, and it applies
to the devices specified by the device_names argument.
These options apply only to the schematic netlists. The net names are specified in the
schematic_power and schematic_ground arguments of the net_options() function.
In addition, you can use the filter_options argument to filter all devices and the
layout_filter_options argument to filter layout devices.

Chapter 2: Runset Functions: A - I


filter() 2-703
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
You must use the filter_function argument or at least one of the filter options
arguments: filter_options, schematic_filter_options, or
layout_filter_options. The IC Validator tool filters devices by first checking the
filter options arguments and then using the remote filter function.

layout_filter_options
Optional. Specifies the filtering options for each device type, as shown in Table 2-23. The
option type must match the type specified by the device_type argument, and it applies
to the devices specified by the device_names argument.
These options apply to the layout netlists. The net names are specified in the
layout_power and layout_ground arguments of the text_options() function. In
addition, you can use the filter_options argument to filter all devices and the
schematic_filter_options argument to filter schematic devices.
Note:
You must use the filter_function argument or at least one of the filter options
arguments: filter_options, schematic_filter_options, or
layout_filter_options. The IC Validator tool filters devices by first checking the
filter options arguments and then using the remote filter function.

short_pins
Optional. Specifies the pins that are shorted after filtering rather than being left as
floating. Pins that are not listed are kept as floating after filtering. When listed in the
short_pins argument,

❍ The pins of devices that are filtered by the options listed in the filter_options,
schematic_filter_options, or layout_filter_options arguments are shorted.

❍ The pins of devices that are filtered by the lvs_remove_device() function are
shorted.
At least two pin names must be listed, and all pin names must belong to a device
specified in the device_names argument.
Note:
A short between two or more port and static nets is not allowed. If the filtering of a
group of one or more devices results in a short between two or more port nets, all
devices in the group are not filtered and an error is reported.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 2: Runset Functions: A - I


filter() 2-704
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following example uses predefined filter options that specify device names:
my_compare_settings : compare_state = init_compare_matrix();
filter(my_compare_state, NMOS, {"nm1", "nm2"}, {NMOS_3})
filter(my_compare_state, PMOS, {"pm1", "pm2"}, {PMOS_1, PMOS_2});

The following example uses predefined filter options that specify device types:
filter(my_compare_state, device_type = NMOS,
filter_options = {NMOS_1, NMOS_2} );

The following example uses filter functions to process the pin connectivity information. It
filters out devices that have their gates only connected to other gates.
Note:
Use the entry point qualifier to designate as remote functions all functions in the user
functions file that are directly referenced in the main runset file.
You can control whether to filter on the layout or schematic side using the
lvs_is_schematic_device() and lvs_is_layout_device() functions.
filter(my_compare_state, PMOS, {"pm1", "pm2"},
filter_function = "filter_gates_conn_to_gates");

filter_gates_conn_to_gates: entrypoint function(void) returning void


{
filter_switch: boolean = true;
current_id = lvs_current_device();
pinA = lvs_get_device_nets_by_pin_name(current_id, "GATE");
pinA_conn_num = lvs_count_pins_on_net(pinA);
for (i = 0 to pinA_conn_num-1) {
if (lvs_get_pin_name_on_net(pinA, i) != "GATE")
{filter_switch = false}
}
if (filter_switch) { lvs_remove_device(); }
}

The following example uses filter functions to process properties of devices. It filters out
resistors that have a value less than 0.001.
filter(my_compare_state, PMOS, {"pm1", "pm2"},
filter_function = "filter_small_resistors");

filter_small_resistors: entrypoint function(void) returning void


{
rval_value : double;

Chapter 2: Runset Functions: A - I


filter() 2-705
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

current_id = lvs_current_device();
found_property =
lvs_get_double_property(current_id, "rval", rval_value);
if (found_property == true && dbllt(rval_value, 0.001))
{lvs_remove_device();}
}

See Also
fopen()

Chapter 2: Runset Functions: A - I


filter() 2-706
IC Validator Reference Manual Version N-2017.12-SP2

filter_off()
The filter_off() function disables filtering of the specified devices.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
filter_off(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. Information from the
filter_off() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices that do not have filter options applied. Each device
must match a device specified in a device_name argument of a device configuration
function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which the filter_off()
function applies. You must specify the equiv_cells pairs in the equiv_options()
function before calling the filter_off() function. If only one cell name in the pair is
specified, the names are assumed to be the same.

Chapter 2: Runset Functions: A - I


filter_off() 2-707
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
The filter_off() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the filter_off() instruction is
discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
filter()

Chapter 2: Runset Functions: A - I


filter_off() 2-708
IC Validator Reference Manual Version N-2017.12-SP2

flatten_by_cells()
The flatten_by_cells() function flattens data in the hierarchy under the specified cells
into the specified cells. The output layer is a copy of the input layer with data moved by the
flatten operation for the specified cells.
Important:
This is a methodology check function. See disclaimers 1 (Preserving Cells) and 2
(Hierarchy) in “Methodology Check Functions” on page 1-4.

Syntax
flatten_by_cells(
layer1 = polygon_layer,
cells = {"string", ...}, //optional
name = "layer_label", //optional
keep_cells = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the layer that is flattened.

cells
Optional. Specifies the cells that are flattened. If the list is empty, the
flatten_by_cells() function returns a copy. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information. By default, the
IC Validator tool flattens all cells.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

keep_cells
Optional. Specifies the exploding of cells in the select_cells list. The default is true.
❍ true. Does not explode cells during hierarchy optimization.

Chapter 2: Runset Functions: A - I


flatten_by_cells() 2-709
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ false. The selected cells are allowed to explode during hierarchy optimization. If a
selected cell does get exploded, the selected data (the cell’s extents in this case) are
placed in the parent cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
flat_gate = flatten_by_cells (gate, {"*"});

See Also
level()

Chapter 2: Runset Functions: A - I


flatten_by_cells() 2-710
IC Validator Reference Manual Version N-2017.12-SP2

fopen()
The fopen() function generates a handle for the file to be written by the df_fnote() and
pf_fnote() utility functions.

Syntax
fopen(
file = "string",
mode = OVERWRITE | APPEND //optional
);

Returns
ascii_file_handle

Arguments
file
Required. Specifies the file name.

mode
Optional. If the file existed before the IC Validator run, specifies if the content of the file
is either overwritten or appended. (The content of the file is not overwritten or appended
for every call to the df_fnote() and pf_fnote() functions.) The default is OVERWRITE.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
df_fnote()
pf_fnote()

Chapter 2: Runset Functions: A - I


fopen() 2-711
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

four_color()
The four_color() function is used in multi-patterning flows to decompose the input layer
into four colors. Optional precoloring assignments are used during graph coloring.

Syntax
Note: The definitions for the arguments are after the Returns section.
four_color(
nodes = polygon_layer,
links = geometry_layer,
pre_color2 = polygon_layer, //optional
pre_color2 = polygon_layer, //optional
pre_color3 = polygon_layer, //optional
pre_color4 = polygon_layer, //optional
stitch_nodes = polygon_layer, //optional
optional_links = {geometry_layer, ...}, //optional
effort_level = integer, //optional
shift_min_length = double, //optional
shift_ratio = double, //optional
shift_mode = {SHORTEST, CENTER, CENTER_ALL_ANGLE,
OPPOSITE, ERROR_CENTER, ...}, //optional
color_preference = NONE | BALANCED, //optional
same_color_links = geometry_layer //optional
);

Returns
The output is a structure of polygons:
four_color_result_s : newtype struct of {
color1 : polygon_layer;
color2 : polygon_layer;
color3 : polygon_layer;
color4 : polygon_layer;
color_conflicts : polygon_layer;
intersecting_links : polygon_layer;
pre_color_errors : polygon_layer;
color_conflict_extended_fix_guidance : polygon_layer;
color_conflict_fix_guidance : polygon_layer;
};

color1
Input polygons colored with color 1.

color2
Input polygons colored with color 2.

Chapter 2: Runset Functions: A - I


four_color() 2-712
IC Validator Reference Manual Version N-2017.12-SP2

color3
Input polygons colored with color 3.

color4
Input polygons colored with color 4.

color_conflicts
Conflict links, where a conflict link has the same color assigned to the polygons
connected by this link. This layer is empty if the input layer is successfully decomposed.

intersecting_links
Merged or intersecting links.

pre_color_errors
Input polygons with precolor conflicts. There are three types of precolor conflicts: nodes
that are precolored with more than one color, required different-color links that are
connected to two nodes with the same precolors, and same-color links that are
connected to two nodes with different precolors.

color_conflict_extended_fix_guidance
Part of the error visualization outputs, this contains nodes and links interacting with
color_conflict_fix_guidance output to provide more context for the areas of the
layout that contain errors.

color_conflict_fix_guidance
One of the error visualization outputs that is used if the input is not 4-colorable. It
contains the alternative minimum conflict link configurations and nodes interacting with
them. That is, the color_conflicts output contains one set of minimum conflict links,
whereas color_conflict_fix_guidance output contains a superset of those and
nodes interacting with them to give you more choices to make the layout 4-colorable.

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

links
Required. Specifies the input geometry layer that contains polygons that connect nodes
polygons to complete the graph description. Each polygon in the links geometry layer
must interact, either by edge touch or polygon overlap, with at most four nodes polygons
to achieve correct coloring. If a links polygon is connected to four nodes polygons, all
three connected nodes polygons must be assigned to different colors.

Chapter 2: Runset Functions: A - I


four_color() 2-713
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The links geometry layer is commonly generated using dimensional commands on the
nodes polygon layer. For example, it is generated using an external spacing check on the
nodes polygon layer that captures multi-patterning critical spacing relationships.

pre_color1
Optional. Specifies the marker layers representing color 1 precoloring of the polygons.
All the polygons must be included in the nodes layer. The precolors are markers on the
nodes. If a precolor marker does not intersect with any node, the marker is ignored.

pre_color2
Optional. Specifies the marker layers representing color 2 precoloring of the polygons.
See pre_color1 for more information.

pre_color3
Optional. Specifies the marker layers representing color 3 precoloring of the polygons.
See pre_color1 for more information.

pre_color4
Optional. Specifies the marker layers representing color 4 precoloring of the polygons.
See pre_color1 for more information.

stitch_nodes
Optional. Specifies a marker layer representing stitches.

optional_links
Optional. Specifies a list of geometry layers. Each layer is a link layer and has an implied
weight associated with it. The first layer has weight 1 and has the highest priority after
the required link layer. The second layer has weight 2 and has the next highest priority,
and so on. The tool uses these weights in optimization, for example, density balancing.
You can specify up to seven layers. The default is empty.
Note:
All the link layers, including the required link layer and layers defined in the
optional_links argument, must be the same type, that is, they all must be either
polygon layers, edge layers, or error layers.
Color conflicts that involve only optional links are not output.

effort_level
Optional. Specifies the coloring effort level. The minimum value is 1, and the maximum
value is 6. Using a higher effort level in more complicated designs can increase accuracy
(fewer color conflicts) but might increase the runtime. The default is 4.

Chapter 2: Runset Functions: A - I


four_color() 2-714
IC Validator Reference Manual Version N-2017.12-SP2

shift_min_length
Optional. Specifies the link shifting threshold. A link is shifted only when its length is
equal to or greater than this value. The default is 0 (zero).

shift_ratio
Optional. Defines the ratio of the shift segment to the overlap segment. For example, if
the overlap segment for an error pair is 100 microns and this value is set to 0.1, the shift
segment is 10 microns. The shifted link is within this segment. The default is 1.

shift_mode
Optional. Specifies the mode used to generate the link, which can be a subset of all
modes. The default is SHORTEST.
❍ SHORTEST. Uses the shortest distance between error pairs to generate a link.

❍ CENTER. Uses center points of the error pair to generate a link. This mode is
applicable only when the run length is less than or equal to 0 (zero) and the link
derived by the default shift mode is orthogonal.
❍ CENTER_ALL_ANGLE. Uses center points of the error pair to generate a link. This mode
is applicable only when the error pair run length is less than or equal to 0 (zero).
❍ OPPOSITE. Shifts two endpoints of the generated link in opposite directions with
respect to the shift ratio. This mode is applicable only when the shift range is positive,
which means the run length is greater than 0 (zero), the link length is greater than or
equal to the shift threshold, and the shift ratio is greater than 0 (zero).
❍ ERROR_CENTER. Uses center points of the error pair to generate a link.
Note:
When you select the ERROR_CENTER option to generate a link, all of the other
modes are disabled.

color_preference
Optional. Specifies if the IC Validator tool balances the coloration on low-degree nodes.
Balancing is based on the area of the nodes. The default is NONE.
❍ NONE. Does not balance coloration. Color selection on low-degree nodes is random.

❍ BALANCED. Balances coloration. When multiple color choices are available, color
selection on low-degree nodes is based on the minimal node area.

same_color_links
Optional. Specifies a geometry layer that contains links that connect same-color nodes.
Same-color links have a higher priority than different-color links because two nodes
connected by a same-color link are treated as one node during the coloring process.

Chapter 2: Runset Functions: A - I


four_color() 2-715
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Additional color conflicts can be introduced on a required different-color link, even when
the links have no shared nodes, as shown in Figure 2-254.
Figure 2-254 Extra Color Conflict From Same-Color Link
Same-color link

Required
different-color link

Color conflict introduced


by same-color link

When two nodes are connected with both a same-color link and a different-color link at
the same time, the following priorities apply:
❍ If two nodes are connected by a same-color link and a required different-color link,
the required link has priority and the same-color link is ignored.
❍ If two nodes are connected by a same-color link and an optional different-color link,
the optional link is ignored and the two polygons are assigned the same color.
❍ If two nodes connected by a same-color link are precolored with different colors, the
same-color link is ignored.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

See Also
two_color()
three_color()

Chapter 2: Runset Functions: A - I


four_color() 2-716
IC Validator Reference Manual Version N-2017.12-SP2

gds_library()
The gds_library() function defines a GDSII file name and returns a handle to be used by
the output_library argument of the write_gds() function.
Limitation:
The gds_library() function cannot be called more than one time with the same file
argument. The result, however, can be used in more than one write_gds() function, in
which case the file is overwritten.

Syntax
gds_library(
file = "string"
);

Returns
gds_library_handle

Arguments
file
Required. Specifies the GDSII file name. See the write_gds() function for more
information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
outlib = gds_library(file = "drc_err.gds");

The outlib variable can now be specified in the output_library argument of the
write_gds() function.

See Also
write_gds()

Chapter 2: Runset Functions: A - I


gds_library() 2-717
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

gds_options()
The gds_options() function specifies the behavior of the IC Validator tool when reading a
GDSII file.

Syntax
gds_options(
box = DROP | CONVERT_TO_RECT, //optional
cell_name_map = {{search_string = "string",
replace_string = "string"}, ...},
//optional
force_cell_name_case = UPPER | LOWER | MIXED, //optional
path_type_1 = ABORT | ACCEPT, //optional
path_type_4 = ABORT | ACCEPT, //optional
missing_end_construct = ABORT | CONTINUE, //optional
generate_property_text = NONE | TOP | ALL, //optional
text = {objects = {PROPERTY_TEXT, TEXT},
properties = {integer, ...}}, //optional
duplicate_cell = REPLACE | DROP | MERGE, //optional
merge_references = true | false, //optional
replace_instance_name_characters = {{search_string = "string",
replace_string = "string"},
...} //optional

);

Returns
void

Arguments
box
Optional. Specifies the action taken when reading in a GDSII box structure. The default
is DROP.
❍ DROP. Drops the box structures.

❍ CONVERT_TO_RECT. Converts the box structures to rectangles.

cell_name_map
Optional. Specifies a list that tells how cell names are remapped as data is read in. By
default, the IC Validator tool does not remap cell names.
❍ search_string. Required. Specifies the existing cell name in the input stream.

❍ replace_string. Required. Specifies the cell name as it exists within the


IC Validator tool after the input stream is read.

Chapter 2: Runset Functions: A - I


gds_options() 2-718
IC Validator Reference Manual Version N-2017.12-SP2

force_cell_name_case
Optional. Forces the character case of cell names. The default is MIXED.
❍ UPPER. Converts all cell names to uppercase characters when the GDSII file is read.

❍ LOWER. Converts all cell names to lowercase characters when the GDSII file is read.

❍ MIXED. Maintains the character case that cell names have in the GDSII file.

path_type_1
Optional. Specifies if the run stops when PathType=1 is encountered while reading the
GDSII file. When set to ABORT, the run stops. The default is ACCEPT.

path_type_4
Optional. Specifies if the run stops when PathType=4 is encountered while reading the
GDSII file. When set to ABORT, the run stops. The default is ACCEPT.

missing_end_construct
Optional. Specifies if the run stops when ENDSTRUCT or ENDLIB is missing. When set
to ABORT, the run stops. The default is CONTINUE.

generate_property_text
Optional. Specifies if text points are generated from polygon properties in the input
library. The default is NONE.
❍ NONE. Does not generate text from properties in the input library.

❍ TOP. Generates property text only for the top cell of the design.

❍ ALL. Generates property text for all cells in the hierarchy.

text
Optional. Controls the reading of text from a GDSII file for each assigned text layer. If the
generate_property_text argument is TOP or ALL, text points are generated for
polygons with associated properties. The text is located on the polygon and has the
same layer and datatype.
Note:
This global option is overwritten by selections made in the gds argument of the
assign_text() function.

❍ objects. Optional. Assigns the specified text types to a layer when reading a GDSII
file. The default is TEXT.
■ PROPERTY_TEXT. Assigns automatically generated text for polygons.

■ TEXT. Assigns GDSII file points from the input database.

Chapter 2: Runset Functions: A - I


gds_options() 2-719
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ properties. Optional. Specifies the property numbers to use when the objects
argument contains PROPERTY_TEXT. The property numbers must be in the range of
0–255, inclusive. If this list is empty, no property text is assigned.

duplicate_cell
Optional. Specifies how the duplicate cells are processed when reading multiple GDSII
files. The default is MERGE.
❍ REPLACE. For any duplicate cells, replaces any previously read cells of the same
name with the last cell read.
❍ DROP. Does not replace the first cell read with any subsequently read cells of the
same name.
❍ MERGE. Merges all geometric data into a single cell. References, however, are further
controlled by the merge_references argument.
Note:
IC Validator tool behavior is arbitrary when multiple definitions of a cell exist in a
single GDSII file. The duplicate_cell argument only applies to duplicate cells in
different GDSII files.

merge_references
Optional. Specifies the merging of cell references when duplicate cells are found in
multiple GDSII files.
The merge_references argument applies only when the duplicate_cell argument is
MERGE. If the duplicate_cell argument is REPLACE, the references in the last cell read
replace any previously read cells of the same name. If the duplicate_cell argument is
DROP, the references of the first cell read are used. The default is true.

❍ true. Merges cell references into existing cells when duplicate cells are found.

❍ false. Does not merge cell references into duplicate cells.

replace_instance_name_characters
Optional. Lists the strings to be replaced in instance names. Neither string can use string
matching. By default, the IC Validator tool does not replace any characters.
❍ search_string. Required. Specifies the string to replace.

❍ replace_string. Required. Specifies the replacement string. An empty string ("")


results in the removal of the specified search string.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


gds_options() 2-720
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
gds_options (
cell_name_map = {{search_string="A", replace_string="B"},
{search_string="C", replace_string="D"}},
path_type_1 = ABORT,
path_type_4 = ABORT,
missing_end_construct = ABORT
);

See Also
assign()
assign_edge()
assign_text()
milkyway_options()
oasis_options()
openaccess_options()

Chapter 2: Runset Functions: A - I


gds_options() 2-721
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

gendev()
The gendev() function collects extraction configuration information about generic devices.
The configuration information, which contains device body and terminal layers, property
extraction information, schematic device mappings, and pin handling instructions, is stored
in the device matrix that is passed to the extract_devices() function.
Use the gendev() function to represent generic devices that cannot be handled by one of
the standard device configuration functions: capacitor(), inductor(), nmos(), pmos(),
np(), pn(), npn(), pnp(), or resistor().
Note:
See “Device Names” in Appendix A for the device_name argument restrictions.

Syntax
gendev(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
device_layers = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...},
mapped_device_pin = "string",
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminals = {"string", ...},

Chapter 2: Runset Functions: A - I


gendev() 2-722
IC Validator Reference Manual Version N-2017.12-SP2

ignore_pins = {"string", ...}},


...}, //optional
spice_netlist_function = "string", //optional
connectivity = {{layers = {polygon_layer, ...},
by_layer = polygon_layer}, ...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
extract_shorted_device = true | false, //optional
mapped_device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the generic device. A device name can be reused across multiple
calls of the gendev() function if all calls have
❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.

device_body
Required. Specifies the body layer of the device.

device_layers
Required. Specifies a list that defines new terminal layers, including pin names and pin
types. You can specify up to 20 pins.

Chapter 2: Runset Functions: A - I


gendev() 2-723
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Do not apply a layer to two device terminals when pin_type = BULK and pin_type =
TERMINAL, or the tool will ignore the setting of pin_type = BULK in the first terminal
and report a warning message. For example:
device_layers = { { aLAYER2, "A" }, { aLAYER2, "B", BULK } }

❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Required. Specifies the pin.

❍ pin_type. Optional. Specifies the pin type. The default is TERMINAL.


Note:
When the layer created from the cell_extent() or buildsub() function is a
substrate, specify the pin_type as BULK (default is TERMINAL) to improve
performance.
❍ pin_compared. Optional. Specifies whether the pin connectivity is compared
between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.
❍ mapped_device_pin. Optional. Specifies the default pin name that a specific pin is
mapped to. Each device type has its own predefined default pin names, which are
summarized below:
Table 2-24 Default Pin Names

Device type Required default pin names

NMOS, PMOS GATE, SRC, DRN

RESISTOR, CAPACITOR, INDUCTOR A, B

NPN, PNP EMITTER, BASE, COLLECTOR

NP, PN ANODE, CATHODE

The layout pin names that are defined or mapped in the gendev() function must
contain all required default pin types of the mapped_device_type argument, unless
the type is GENERIC. You can explicitly specify the pin mapping using this argument
or define its pin name as the default pin name.

Chapter 2: Runset Functions: A - I


gendev() 2-724
IC Validator Reference Manual Version N-2017.12-SP2

When any required default pins are not specified, the tool searches for pins that have
a default pin name. An error occurs if no default pin name is found.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() function for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. By default, the IC Validator tool
does not extract any properties.

Chapter 2: Runset Functions: A - I


gendev() 2-725
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ name. Required. Specifies the property name. See “Predefined Name Matches” in
Chapter 7, “Compare Functions Basics” of the IC Validator LVS User Guide for the
names and associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Optional. Specifies the data type of the property. The default is DOUBLE.
Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.
❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.

Chapter 2: Runset Functions: A - I


gendev() 2-726
IC Validator Reference Manual Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.

Chapter 2: Runset Functions: A - I


gendev() 2-727
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).

Chapter 2: Runset Functions: A - I


gendev() 2-728
IC Validator Reference Manual Version N-2017.12-SP2

This behavior is summarized in Table 2-25.


Table 2-25 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).

Chapter 2: Runset Functions: A - I


gendev() 2-729
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This behavior is summarized in Table 2-26.


Table 2-26 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted device. There is no default calculation. The default
calc_gendev_properties() function is defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for more information about the utility
functions you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon. The default is ENCLOSE.

Chapter 2: Runset Functions: A - I


gendev() 2-730
IC Validator Reference Manual Version N-2017.12-SP2

❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Specifies the corresponding schematic devices and terminals used for
comparison. By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the pin names provided in the
device_layers argument of the gendev() function.

❍ device_name. Required. Specifies the schematic device.

❍ terminals. Optional. Specifies the terminals.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the terminals list, that pin is ignored both in the layout and
schematic. This behavior is similar to the pin_compared option of the
device_layers argument of the gendev() function.
If the schematic device has an optional pin that does not correspond to any pin in the
gendev() function, that pin can be specified with the ignore_pins. Otherwise, this
optional pin produces an error during the compare operation.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” in Chapter 4 for more information.

Chapter 2: Runset Functions: A - I


gendev() 2-731
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

connectivity
Optional. Lists the connections for different layers that make up the body of an inductor.
This information is used by the dev_coil_path_length() utility function.
❍ layers. Required. Specifies the layers that make up the inductor.

❍ by_layer. Required. Specifies the polygon layer by which specified layers are
connected.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the string is valid and
unique because the IC Validator tool does not check the value. The default is an empty
string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Specifies the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

Chapter 2: Runset Functions: A - I


gendev() 2-732
IC Validator Reference Manual Version N-2017.12-SP2

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” in Chapter 4 for more information.

extract_shorted_device
Optional. Specifies whether shorted devices, that is, devices with only one terminal, are
extracted. The default is true.
❍ true. Extracts shorted devices.

❍ false. Reports shorted devices as error devices.

mapped_device_type
Optional. Specifies the target device type that the specified devices are mapped to. The
default is GENERIC. The target device types are:
❍ NMOS, PMOS, RESISTOR, CAPACITOR, INDUCTOR, NP, PN, NPN, PNP, GENERIC

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.

Chapter 2: Runset Functions: A - I


gendev() 2-733
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This behavior is summarized in Table 2-27.


Table 2-27 top_simulation_properties Combinations

-dvp top_simulation_properties -dhe Result

ALL false true Dual-hierarchy flow:


Compare pass (layout netlist file)
extraction is hierarchical.
Simulation pass (annotation file)
properties are extracted
hierarchically (but given the nature of
simulation properties, the hierarchy is
still mostly flat).

ALL false false Single pass flow:


Properties for both simulation and
compare are extracted hierarchically
in the layout netlist file (given the
nature of simulation properties, the
hierarchy is still mostly flat).

ALL true true Dual-hierarchy flow:


Compare pass (layout netlist file)
extraction is hierarchical.
Simulation pass (annotation file)
properties are extracted flat in the top
cell.

ALL true false Single pass flow:


Properties for both simulation and
compare are extracted flat in the
layout netlist file.

LVS “don’t care” “don’t care” Single pass flow:


The device_properties = LVS
option forces only the properties
being used for LVS compare to be
netlisted. Because no simulation
properties are output, properties for
compare are extracted hierarchically
in the layout netlist file.

Chapter 2: Runset Functions: A - I


gendev() 2-734
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
library(library_name = "hierxtract.gds",
cell = "gate2bulk",
format = GDSII
);

ndiff = assign({{== 2}});


bulk = assign({{== 4}});
poly = assign({{== 5}});

ngate = poly and ndiff;


nsd = ndiff not ngate;
ngate2 = copy(ngate);

cdb1 = connect({{{ngate, ngate2}, by_layer = poly},


{{nsd}, by_layer = nsd},
{{bulk}, by_layer = bulk}}
);

gendev_auto_prop_func : function (void) returning void


{
dev_save_double_properties({{"abc", 123.456}});
dev_save_string_properties({{"def", "def456"}});
}

my_device = init_device_matrix(cdb1);

gendev(my_device, device_name="g2", device_body = ngate2,


device_layers = {{nsd, "D"}, {ngate2, "G"},
nsd, "S"}, {bulk, "B"}},
properties = {{"abc", DOUBLE}, {"def", STRING}},
property_function = gendev_auto_prop_func
);

device_db = extract_devices(my_device);

layout_netlist = netlist(device_db);

gdsout = gds_library("graphics.gds");
write_gds(output_library = gdsout,
holding_cell = "top",
layers = {{ngate, {1}}, {nsd, {2}}}
);

Chapter 2: Runset Functions: A - I


gendev() 2-735
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
extract_devices()
init_device_matrix()

Chapter 2: Runset Functions: A - I


gendev() 2-736
IC Validator Reference Manual Version N-2017.12-SP2

gendev_select()
The gendev_select() function selects device polygons from generic devices on the
specified layers that fit the specified criteria. A remote function specifies arithmetic
conditions relative to generic device parameters.

Syntax
gendev_select(
device_body = polygon_layer,
device_layers = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...},
mapped_device_pin = "string",
gendev_func = function,
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
recognition_layer = polygon_layer, //optional
connect_sequence = connect_database,
connectivity = {{layer = {polygon_layer, ...}
by_layer = polygon_layer}, ...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
extract_shorted_device = true | false //optional
);

Returns
polygon layer or error result

Arguments
device_body
Required. Specifies the body layer of the device.

device_layers
Required. Specifies a list that defines new terminal layers, including pin names and pin
types. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Required. Specifies the pin.

❍ pin_type. Optional. Specifies the pin type. The default is TERMINAL.

Chapter 2: Runset Functions: A - I


gendev_select() 2-737
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
When the layer created from the cell_extent() or buildsub() function is a
substrate, specify the pin_type as BULK (default is TERMINAL) to improve
performance.
❍ pin_compared. Optional. Specifies whether the pin connectivity is compared
between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.
❍ mapped_device_pin. Optional. Specifies the default pin name that a specific pin is
mapped to. Each device type has its own predefined default pin names, which are
summarized below:
Table 2-28 Default Pin Names

Device type Required default pin names

NMOS, PMOS GATE, SRC, DRN

RESISTOR, CAPACITOR, INDUCTOR A, B

NPN, PNP EMITTER, BASE, COLLECTOR

NP, PN ANODE, CATHODE

The layout pin names that are defined or mapped in the gendev() function must
contain all required default pin types of the mapped_device_type argument, unless
the type is GENERIC. You can explicitly specify the pin mapping using this argument
or define its pin name as the default pin name.
When any required default pins are not specified, the tool searches for pins that have
a default pin name. An error occurs if no default pin name is found.

gendev_func
Required. Specifies the remote function that selects devices based on geometric criteria.
See Chapter 4, “Utility Functions,” for more information about the utility functions you can
use to define a remote function.

Chapter 2: Runset Functions: A - I


gendev_select() 2-738
IC Validator Reference Manual Version N-2017.12-SP2

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

connect_sequence
Optional. Specifies the connect database. If specified, the connection is considered in
the device checking process.

connectivity
Optional. Lists the connections for different layers that make up the body of an inductor.
This information is used by the dev_coil_path_length() utility function.
❍ layers. Required. Specifies the layers that make up the inductor.

❍ by_layer. Required. Specifies the polygon layer by which specified layers are
connected.

Chapter 2: Runset Functions: A - I


gendev_select() 2-739
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

extract_shorted_device
Optional. Specifies whether shorted devices, that is, devices with only one terminal, are
extracted. The default is true.
❍ true. Extracts shorted devices.

❍ false. Reports shorted devices as error devices.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
calc_nf_prop_func: published function (void) returning void
{
nf = dev_parallel_device_count();

dev_save_polygon_double_property("nf", nf);
}

// create a property layer including the number of devices connected \


in parallel //
GATE_with_nf = gendev_select
(device_body = GATE,
device_layers = {{GATE,"GATE"}, {DIFF, "SRC"}, {DIFF, "DRN"}},
gendev_func = calc_nf_prop_func,
connect_sequence = cdb);

See Also
mos_select()

Chapter 2: Runset Functions: A - I


gendev_select() 2-740
IC Validator Reference Manual Version N-2017.12-SP2

res_select()

Chapter 2: Runset Functions: A - I


gendev_select() 2-741
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_layout_drawn_violation()
The get_layout_drawn_violation() function returns the violation that layout drawn
errors (such as self-intersection) are written to during preprocessing. This violation can be
used as an argument to the write_gds(), write_milkyway(), and write_oasis()
functions to output polygons for the violation.
Note:
Because layout grid errors consist of a single point, the layer output from this violation
contains a generated polygon for each violation. The generated polygon is an X, and the
polygon is identical to what is displayed in VUE. When a self-intersection polygon
disappears a vanishing polygon error is reported. This polygon error is the bounding box
of the original boundary.

Syntax
get_layout_drawn_violation();

Returns
violation

Arguments
This function has no arguments.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
drawn_errs = get_layout_drawn_violation();
write_gds("./error_results.gds",
errors = {{drawn_errs, {100,1}}}
);

See Also
layout_drawn_options()

Chapter 2: Runset Functions: A - I


get_layout_drawn_violation() 2-742
IC Validator Reference Manual Version N-2017.12-SP2

get_layout_grid_violation()
The get_layout_grid_violation() function returns the violation that layout grid errors
are written to during preprocessing. This violation can be used as an argument to the
write_gds(), write_milkyway(), and write_oasis() functions to output polygons for
the violation.
Note:
Because layout grid errors consist of a single point, the layer output from this violation
contains a generated polygon for each violation. The generated polygon is an X, and the
polygon is identical to what is displayed in VUE.

Syntax
get_layout_grid_violation();

Returns
violation

Arguments
This function has no arguments.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
grid_errs = get_layout_grid_violation();
write_gds("./error_results.gds",
errors = {{grid_errs, {100,1}}}
);

See Also
layout_grid_options()

Chapter 2: Runset Functions: A - I


get_layout_grid_violation() 2-743
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_netlist_connect_database()
The get_netlist_connect_database() function allows you to access the connect
database from which the layout netlist is generated from the given device database.
The extract_devices() function modifies the input connect database with hierarchy
preprocessing, such as leveling and merging. In your write function, you can use the same
connect database from which the layout netlist is generated so that the net names in the
output layout match the netlist.
Call this function after the extract_devices() function.

Syntax
get_netlist_connect_database(
device_db = device_database
);

Returns
connect database

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
If you want the results of a write function to match the netlist, define the connect_sequence
argument with the result of the get_netlist_connect_database() function. For example,
write_gds (
output_library = my_gds_outlib,
connect_sequence = get_netlist_connect_database(my_device_db),
layers = {{M1, {1}}, {M2, {2}}, {M3,{3}}}, properties =
{instance_name = 112,
net_name = 4
}

Chapter 2: Runset Functions: A - I


get_netlist_connect_database() 2-744
IC Validator Reference Manual Version N-2017.12-SP2

);

See Also
extract_devices()

Chapter 2: Runset Functions: A - I


get_netlist_connect_database() 2-745
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_substrate()
The get_substrate() function returns a hierarchical layer representing the substrate that
is typically used for device extraction and connection. The returned substrate layer contains
a single rectangle in each cell of the hierarchy. The rectangle in each cell is the size of the
extents for that cell.

Syntax
get_substrate();

Returns
polygon layer

Arguments
This function has no arguments.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
buildsub()
chip_extent()

Chapter 2: Runset Functions: A - I


get_substrate() 2-746
IC Validator Reference Manual Version N-2017.12-SP2

get_text_merged()
The get_text_merged() function returns a new violation that contains only the merged text
opens from the input violation.

Syntax
get_text_merged(
violation1 = violation
);

Returns
violation

Arguments
violation1
Required. Specifies the violation from which the output is derived. The violation is usually
the left side of an @= assignment. For more information about violations, see the Violation
Block section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Examples section of the text_net() function for more information.

See Also
get_text_reassign_shorted()
get_text_renamed()
get_text_shorted()
get_text_unused()
text_net()

Chapter 2: Runset Functions: A - I


get_text_merged() 2-747
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_text_reassign_shorted()
The get_text_reassign_shorted() function returns a new violation that contains only the
reassigned text shorts from the input violation.

Syntax
get_text_reassign_shorted(
violation1 = violation
);

Returns
violation

Arguments
violation1
Required. Specifies the violation from which the output is derived. The violation is usually
the left side of an @= assignment. For more information about violations, see the Violation
Block section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Examples section of the text_net() function for more information.

See Also
get_text_merged()
get_text_renamed()
get_text_shorted()
get_text_unused()
text_net()

Chapter 2: Runset Functions: A - I


get_text_reassign_shorted() 2-748
IC Validator Reference Manual Version N-2017.12-SP2

get_text_renamed()
The get_text_renamed() function returns a new violation that contains only the renamed
text opens from the input violation.

Syntax
get_text_renamed(
violation1 = violation
);

Returns
violation

Arguments
violation1
Required. Specifies the violation from which the output is derived. The violation is usually
the left side of an @= assignment. For more information about violations, see the Violation
Block section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Examples section of the text_net() function for more information.

See Also
get_text_merged()
get_text_reassign_shorted()
get_text_shorted()
get_text_unused()
text_net()

Chapter 2: Runset Functions: A - I


get_text_renamed() 2-749
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_text_shorted()
The get_text_shorted() function returns a new violation that contains only the text shorts
from the input violation.

Syntax
get_text_shorted(
violation1 = violation
);

Returns
violation

Arguments
violation1
Required. Specifies the violation from which the output is derived. The violation is usually
the left side of an @= assignment. For more information about violations, see the Violation
Block section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Examples section of the text_net() function for more information.

See Also
get_text_merged()
get_text_reassign_shorted()
get_text_renamed()
get_text_unused()
text_net()

Chapter 2: Runset Functions: A - I


get_text_shorted() 2-750
IC Validator Reference Manual Version N-2017.12-SP2

get_text_unused()
The get_text_unused() function returns a new violation that contains only the unused text
errors from the input violation.

Syntax
get_text_unused(
violation1 = violation
);

Returns
violation

Arguments
violation1
Required. Specifies the violation from which the output is derived. The violation is usually
the left side of an @= assignment. For more information about violations, see the Violation
Block section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Examples section of the text_net() function for more information.

See Also
get_text_merged()
get_text_reassign_shorted()
get_text_renamed()
get_text_shorted()
text_net()

Chapter 2: Runset Functions: A - I


get_text_unused() 2-751
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

get_top_cell()
The get_top_cell() function returns the top cell name. The top cell name is obtained from
the cell argument of the library() function or from the -c command-line option. The -c
command-line option overrides the top cell name. See the Command-Line Options section
in the “IC Validator Basics” chapter of the IC Validator User Guide for more information.

Syntax
get_top_cell();

Returns
string

Arguments
This function has no arguments.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
top_cell = get_top_cell();
m1_extent = cell_extent_layer(m1, cell_list = {top_cell});

See Also
library()

Chapter 2: Runset Functions: A - I


get_top_cell() 2-752
IC Validator Reference Manual Version N-2017.12-SP2

gradient_density()
The gradient_density() function checks layout density changes (gradients) between
neighboring the delta_window subwindow based on user-programmable density
equations.
The gradient_density() function calls a remote density function for each subwindow. The
remote function calls various utility functions that operate on the current subwindow or
neighboring subwindow to produce error output and density statistics.

Syntax
gradient_density(
window_layer = polygon_layer,
layer_hash = {"string" => polygon_layer, ...},
window_function = function,
delta_window = {width = double, height = double},
//optional
rows = integer, //optional
columns = integer, //optional
x_edge_process_amount = double, //optional
y_edge_process_amount = double, //optional
area_clip_delta_percent = double //optional
statistics_files = {density_statistics_file_handle, ...},
//optional
statistics_file_modes = {OVERWRITE | APPEND, ...}, //optional
centered_square_size = double, //optional
boundary = CLIP | ALIGN | IGNORE |
REPLICATE_WINDOW | BACKUP //optional
output_type = DELTA_WINDOW | CLIPPED_DELTA_WINDOW |
CENTER | CLIPPED_CENTER, //optional
output_center_dimensions = {width = double, height = double},
//optional
process_delta_windows = OVERLAPPING | ALL, //optional
name = "layer_label", //optional
delta_x = double, //optional
delta_y = double //optional
);

Returns
polygon layer or error result

Arguments
window_layer
Required. Specifies the polygon layer containing one or more polygons that define the
boundaries where layers are processed for density calculations.

Chapter 2: Runset Functions: A - I


gradient_density() 2-753
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The chip_extent() and layer_extent() functions can be used to create a window


layer. Call these functions before the gradient_density() function.
❍ The chip_extent() function returns a layer containing a single rectangle equal to
the extents of the chip. Use this function to create a single full-chip check window.
See the chip_extent() function for more information.
❍ The layer_extent() function returns a layer containing a single rectangle equal to
the extents of the input layer. Use this function to create a single-layer check window.
See the layer_extent() function for more information.

layer_hash
Required. Specifies the hash of string to polygon layer that is processed for density
calculations. Data in this hash is accessible via the hash key within the remote window
function. When referencing data from within the window function, only the portion of the
layer within the current delta_window subwindow or the current window_layer polygon
is seen.

window_function
Required. Specifies the remote function that calculates the gradient density. See
“Gradient Density Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define a remote function.

delta_window
Optional. Specifies the subwindow stepped across each window_layer polygon. The
density equations are evaluated within each subwindow. The default is calculated based
on the number of rows and columns, specified using the rows and columns arguments,
and the extents of each window_layer polygon.

rows
Optional. Specifies the number of rows each window_layer polygon is divided into. The
default is 1.

columns
Optional. Specifies the number of columns each window_layer polygon is divided into.
The default is 1.

x_edge_process_amount
Optional. If the delta_window subwindow overhangs the right edge of the boundary by
the specified value or more, specifies to shift the current subwindow left to make it flush
with the right edge of the current boundary.

Chapter 2: Runset Functions: A - I


gradient_density() 2-754
IC Validator Reference Manual Version N-2017.12-SP2

y_edge_process_amount
Optional. If the delta_window subwindow overhangs the top edge of the boundary by
the specified value or more, specifies to shift the current subwindow down to make it
flush with the top edge of the current boundary.

area_clip_delta_percent
Optional. Ignores the current delta_window subwindow if the density ratio of the
window_layer material inside the current subwindow is less than the specified value. By
default, the IC Validator tool ignores any subwindow with a window_layer density of 0.

statistics_files
Optional. Specifies the handles of the files written to by gden_window_statistics()
utility functions included in the specified remote window function. Do not specify the
same file more than one time. These files are defined using the
density_statistics_file() function.

statistics_file_modes
Optional. Specifies the action taken when the file already exists for each statistics file of
the gradient_density() function. If only one mode is specified, it is used for all files.
The default is OVERWRITE.
❍ OVERWRITE. Overwrites the previous statistics file. That is, the statistics file contains
only statistics from this function.
❍ APPEND. Appends the new data to the previous statistics file. That is, the statistics file
contains the statistics from previous density functions along with the new statistics
from this function.

centered_square_size
Optional. Specifies that squares centered on polygons inside the window layer are used
as the windows for density calculations. The default is 0.0.
❍ The value must be greater than or equal to 0.
❍ If the value is 0, the gradient_density() function does not output centered
squares.
If the value is greater than 0, then the IC Validator tool performs the following steps:
1. For each polygon of the window layer, find the rectangular extent.
2. Find the center point of the rectangular extent, whose coordinates are (x,y).
3. Set
■ X1 = x - centered_square_size/2

Chapter 2: Runset Functions: A - I


gradient_density() 2-755
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ Y1 = y - centered_square_size/2
■ X2 = x + centered_square_size/2
■ Y2 = y + centered_square_size/2
Note:
If the values are not on grid, they are rounded up to the next grid value.
4. Perform all normal density operations with X1, Y1, X2, Y2 defining the window layer.
For example,
gradient_density(
window_layer = metal1_extent,
layer_hash = { "layer1" => metal1 },
window_function = my_density_function,
centered_square_size = 15
);

The window is defined by


X1 = x - 15/2
Y1 = y - 15/2
X2 = x + 15/2
Y2 = y + 15/2
Performing the normal density operations the generated window layer is defined as
shown in Figure 2-255.
Figure 2-255 Generation of Centered Square

Chapter 2: Runset Functions: A - I


gradient_density() 2-756
IC Validator Reference Manual Version N-2017.12-SP2

boundary
Optional. Specifies how to process a delta_window subwindow that overlaps the
boundary of the extents of a window layer polygon. The default is CLIP.
❍ CLIP. Truncates the subwindow at the limits of the window layer.
if the x_edge_process_amount or y_edge_process_amount argument is not equal
to -1 when the boundary argument is CLIP, then
■ If the overhang is less than the x_edge_process_amount or
y_edge_process_amount value, a clip is performed.

■ If the overhang is equal to or greater than the x_edge_process_amount or


y_edge_process_amount value, an align is performed.

■ If the overhang in the horizontal direction is less than the


x_edge_process_amount value, then clip the subwindow along the window layer.

■ If the overhang in the horizontal direction is equal to or greater than the


x_edge_process_amount value, then align the subwindow with the window layer

■ If the overhang in the vertical direction is less than y_edge_process_amount


value, then clip the u along the window layer
■ If the overhang in the vertical direction is equal or more than
y_edge_process_amount value, then align the subwindow with the window layer
Figure 2-76 shows how a subwindow is clipped.
❍ ALIGN. If a subwindow overlaps the right side or top edge of the window layer, shifts
the window left or down until it no longer overlaps the window layer. The density
calculation is performed after the window is shifted.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is ALIGN.
Figure 2-77 shows how a subwindow is aligned.
❍ IGNORE. If a subwindow overlaps the right or top edges of the window layer boundary,
ignores the subwindow and does not output data for that subwindow location.
Note:
Both x_edge_process_amount and y_edge_process_amount arguments must
be -1 when the boundary argument is IGNORE.
Figure 2-78 shows when the subwindow is ignored.
❍ REPLICATE_WINDOW. To simulate density measurements on a die, replicates the input
layers to properly measure density at the boundary of the chip. if a window overlaps
the right or top edges of the window layer polygons, the window layer extent and its

Chapter 2: Runset Functions: A - I


gradient_density() 2-757
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

data are duplicated and added to the right or top side of the original bounding box.
The density measurement on the boundary subwindow is calculated considering the
original data and the duplicated data.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is REPLICATE_WINDOW.
Figure 2-79 shows a replicated subwindow.
❍ BACKUP. Shifts the overlapping subwindow the same way the ALIGN option shifts it.
See ALIGN for more details.
In addition, BACKUP prevents gradient evaluation between the center subwindow
and any adjacent subwindows that overlap the row or column of the center
subwindow.
Figure 2-256 shows examples comparing the gradient evaluation between the center
subwindow and adjacent subwindows by the ALIGN and BACKUP options.
Figure 2-256 Gradient Evaluation Between the Center Subwindow and Adjacent Subwindows

ALIGN BACKUP ALIGN BACKUP

output_type
Optional. Specifies the type of output generated. The default is DELTA_WINDOW.
❍ DELTA_WINDOW. Outputs the delta_window subwindow saved by the
gden_save_window() utility function.

❍ CLIPPED_DELTA_WINDOW. Outputs the intersection between the subwindow and the


window_layer polygon. This intersection is performed after the remote window
function calculations are completed. This option ensures all output subwindows are
inside the boundaries of nonrectangular window_layer polygons.
❍ CENTER. Outputs the rectangle placed at the center of the subwindow saved by the
gden_save_window() utility function. The dimensions of the rectangle are specified
by the output_center_dimensions argument. An error is given when the
output_type argument is CENTER and the output_center_dimensions argument is
{0, 0}.

❍ CLIPPED_CENTER. Output the intersection between the rectangle placed at the center
of the subwindow and the window_layer polygon. This intersection is performed

Chapter 2: Runset Functions: A - I


gradient_density() 2-758
IC Validator Reference Manual Version N-2017.12-SP2

after the remote window function calculations are completed. This option ensures all
center subwindows are inside the boundaries of the window_layer polygons.

output_center_dimensions
Optional. Specifies the dimensions of the rectangle output when the output_type
argument is CENTER.

process_delta_windows
Optional. Controls the handling of delta_window subwindow processing within the
extents of a window layer polygon. The default is OVERLAPPING.
❍ OVERLAPPING. Specifies to process only subwindows that overlap the window layer
polygon.
❍ ALL. Specifies to process all subwindows that fall within the extent of the window layer
polygon.
When using the ALL option,
■ Do not set the output_type argument to CLIPPED_DELTA_WINDOW or
CLIPPED_CENTER.

■ Do not use the area_clip_delta_percent argument.


See Figure 2-80 in the density() function for more information.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

delta_x
Optional. Specifies the delta_window subwindow step distance in the x-direction. The
delta_x value must evenly divide into the width option of the delta_window argument.
The default is the width option of the delta_window argument.

delta_y
Optional. Specifies the delta_window subwindow step distance in the y-direction. The
delta_y value must evenly divide into the height option of the delta_window
argument. The default is the height option of the delta_window argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


gradient_density() 2-759
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Error Output Example


Gradient errors are reported in the LAYOUT_ERRORS file in groups consisting of a center
delta_window subwindow followed by a list of neighboring subwindows. The center
subwindow and each neighboring subwindow can report density and gradient statistics with
the error_names and values options. Only the center subwindow in a gradient error-group
is output to an error layer. In the following example, the first window is the center subwindow
and the next two windows are the neighboring subwindow gradient violations:
### DENSITY ###
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Window (x1,y1) (x2,y2)
Report = Value
Gradient Window (x1,y1) (x2,y2)
Report = Value
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
den2 (10.000, 2.000) (12.000, 4.000)
Ratio = 0.062
Area = 0.250
(12.000, 4.000) (14.000, 6.000)
Signed Gradient = -0.312
(12.000, 0.000) (14.000, 2.000)
Signed Gradient = -0.312

Example of Single-layer Density Ratio and Gradient Check


This example performs a single-layer density ratio and gradient check with delta_window
subwindow defined. The window layer consists of a single rectangle representing the
extents of the input layer, and the hash consists of the input layer. The
densityEQ_check_gradient() function calculates the density ratio of the current subwindow
by dividing the input layer area with the subwindow area. If the ratio of the current
subwindow is in violation, a gradient function is called which loops through all neighboring
subwindows. The density ratio of each neighboring subwindow is computed and compared
against the current (center) subwindow. If violations are found, the center subwindow is
written one time, followed by the neighboring subwindow violations.
layer1 : string = "layer1";

Chapter 2: Runset Functions: A - I


gradient_density() 2-760
IC Validator Reference Manual Version N-2017.12-SP2

neighborhood : list of window_offset_e = {


UPPER_LEFT, UP, UPPER_RIGHT, LEFT,
RIGHT, LOWER_LEFT, DOWN, LOWER_RIGHT
};

densityEQ_check_gradient : function(
areaL_center : double,
ratio_center : double,
layer_name : string
)
returning void
{
areaL_neighbor : double;
areaW_neighbor : double;
ratio_neighbor : double;
gradient : double;

num_errors : integer = 0;

foreach (neighbor in neighborhood)


{
if (gden_window_valid(neighbor))
{
areaL_neighbor = gden_polygon_area(layer_name, neighbor);
areaW_neighbor = gden_window_area(neighbor);
ratio_neighbor = areaL_neighbor / areaW_neighbor;

gradient = ratio_center - ratio_neighbor;


if (abs(gradient) > 0.300)
{
/* write center window one time */
num_errors = num_errors + 1;
if (num_errors == 1)
gden_save_window(error_names = {"Ratio", "Area"},
values = {ratio_center, areaL_center});

/* report gradient window */


gden_save_window(error_names = {"Signed Gradient"},
values = {gradient},
offset = neighbor);
}
}
}
}

densityEQ_single_layer_ratio_and_gradient : function(void)
returning void
{
areaL_center : double = gden_polygon_area(layer1);
areaW_center : double = gden_window_area();
ratio_center : double = areaL_center / areaW_center;

Chapter 2: Runset Functions: A - I


gradient_density() 2-761
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

if (ratio_center < 0.1)


densityEQ_check_gradient(areaL_center, ratio_center, layer1);
}

L1_extent = layer_extent(Layer1);
{ @"ERR102";
gradient_density(
window_layer = L1_extent,
layer_hash = {"layer1" => Layer1},
window_function = densityEQ_single_layer_ratio_and_gradient,
delta_window = {2, 2}
);
}

See Also
density()

Chapter 2: Runset Functions: A - I


gradient_density() 2-762
IC Validator Reference Manual Version N-2017.12-SP2

grid_pattern_edge()
The grid_pattern_edge() function outputs the imaginary grid lines that are inside or
coincident with the layer extent of the union of the bounding layer and reference layer.

Syntax
grid_pattern_edge(
bounding_layer = polygon_layer,
reference_layer = polygon_layer,
grid_pattern = list of double,
offset = double,
orientation = VERTICAL | HORIZONTAL,
name = "layer_label" //optional
);

Returns
edge layer

Arguments
bounding_layer
Required. Specifies the input polygon layer to limit the edges that can be snapped. Both
the data to be snapped and the snapped result should be inside or coincident with the
bounding layer.

reference_layer
Required. Specifies the input polygon layer to use (left, bottom) of its layer extents as the
reference point to define the grid pattern.

grid_pattern
Required. Specifies different distance values to form the repeated pattern.

offset
Required. Specifies the distance before the repeated pattern, measured from the
reference point, which depends on the orientation argument:
❍ orientation=VERTICAL. Uses the left of the layer extents of the reference layer.

❍ orientation=HORIZONTAL. Uses the bottom of the layer extents of the reference


layer.

orientation
Required. Specifies the orientation used to snap to the grids.
❍ VERTICAL. Snaps the x-coordinate of vertices from vertical edges.

Chapter 2: Runset Functions: A - I


grid_pattern_edge() 2-763
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ HORIZONTAL. Snaps the y-coordinate of vertices from horizontal edges.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 2-257 grid_pattern_edge() Function

reference layer

bounding layer

grid pattern output

layer extent of the


union of the bounding
and reference layers

See Also
resolution_options()
snap()
snap_edge()
snap_to_pattern()
snap_to_pattern_edge()

Chapter 2: Runset Functions: A - I


grid_pattern_edge() 2-764
IC Validator Reference Manual Version N-2017.12-SP2

group_library()
The group_library() function defines a group library path and returns a handle to be used
by the output_library argument of the write_group() function and the input_library
argument of the read_group() and read_group_edge() functions.
Note:
The group_library() function cannot be called more than one time with the same path
value. Multiple read_group() and read_group_edge() functions can use the same
handle within a run; however, these functions cannot have the same handle as a
write_group() function within that run.

Syntax
group_library(
path = "string"
);

Returns
group_library_handle

Arguments
path
Required. Specifies the library path.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
handle = group_library("./save1");

See Also
read_group()
read_group_edge()
write_group()

Chapter 2: Runset Functions: A - I


group_library() 2-765
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

grouped_by()
The grouped_by() function selects polygons from layer1 layer that interact with the
layer2 layer and satisfy the specified filter. The filter is applied to groups of layer1
polygons that are formed by gathering any layer1 and layer2 polygons that interact. Only
one polygon is selected from each group. Because the filter is not a unique characteristic,
the polygon selection is arbitrary.
Note:
Interaction includes overlap and edge touch but not point touch.

Syntax
grouped_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
filter = MAX_AREA | MIN_AREA,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer defining grouping of layer1.

filter
Required. Specifies the criteria for polygon selection.
❍ MAX_AREA. Selects a layer1 polygon with maximum area from each group.

❍ MIN_AREA. Selects a layer1 polygon with minimum area from each group.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


grouped_by() 2-766
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 2-258, all data from layer1 is grouped by layer2. For each group, the polygon from
layer1 with the specified area, minimum or maximum, is selected, and the result is output to
Result.
Figure 2-258 grouped_by() Function Examples

layer1

layer2

Result

filter = MAX_AREA filter = MIN_AREA

See Also
area() and not_area()

Chapter 2: Runset Functions: A - I


grouped_by() 2-767
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

grow()
The grow() function creates polygons from the input layer that are oversized in the specified
directions by the specified distances. If the north, south, east, and west arguments are all
0 (zero) then the output is the original layer. See the prototype_options() function for
more information about defining the criteria for the creation of prototype cells during
hierarchical preprocessing.

Syntax
grow(
layer1 = polygon_layer,
north = double, //optional
south = double, //optional
east = double, //optional
west = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

north
Optional. Specifies the oversize distance in the northern direction, or the top of the
polygons. The default is 0.

south
Optional. Specifies the oversize distance in the southern direction, or the bottom of the
polygons. The default is 0.

east
Optional. Specifies the oversize distance in the eastern direction, or right of the polygons.
The default is 0.

west
Optional. Specifies the oversize distance in the western direction, or left of the polygons.
The default is 0.

Chapter 2: Runset Functions: A - I


grow() 2-768
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 2-259 shows using the direction arguments.

Chapter 2: Runset Functions: A - I


grow() 2-769
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-259 grow() Function Examples

north = 0.2 west = 0.1 north = 0.2


west = 0.1

layer1 result

See Also
edge_grow()
edge_shrink()
move()
shrink()
size()
size_inside()
size_outside()

Chapter 2: Runset Functions: A - I


grow() 2-770
IC Validator Reference Manual Version N-2017.12-SP2

hierarchy_auto_options()
The hierarchy_auto_options() function specifies the hierarchy optimizations that are
automatically performed on the input design hierarchy. These optimizations maximize
performance. This function can be called only one time in a runset.

Syntax
hierarchy_auto_options(
application = AUTO_DETECT | DRC | LVS | FILL, //optional
flow = NONE | ERROR_CLASSIFICATION, //optional
optimizations = {REDUCTION, INSERTION}, //optional
no_explode_with_text = true | false //optional
);

Returns
void

Arguments
application
Optional. Specifies the type of run being performed so that the IC Validator tool can
optimally set the hierarchy. The default is AUTO_DETECT.
❍ AUTO_DETECT. Determines the type of run based on the functions within the runset.

❍ DRC. Optimizes the hierarchy for performance when generating DRC violations.

❍ LVS. Optimizes the hierarchy for netlist generation, device extraction, LVS
performance, and LVS debugging.
❍ FILL. Optimizes the hierarchy for performance when generating fill.

flow
Optional. Restricts automatic hierarchy optimizations to increase consistency of error
output between subsequent IC Validator runs. The default is NONE.
Note:
This option is typically set to ERROR_CLASSIFICATION when you run error
classification in CELL_LEVEL mode, including for the initial IC Validator run. However,
HIERARCHICAL mode is the recommended mode for error classification, and the flow
argument must be NONE. See the partially_exploded_cells argument of the
error_options() function for more information on HIERARCHICAL mode.

❍ NONE. Makes normal automatic hierarchy optimizations.

❍ ERROR_CLASSIFICATION. Restricts automatic hierarchy optimizations to make the


hierarchy more consistent between IC Validator runs.

Chapter 2: Runset Functions: A - I


hierarchy_auto_options() 2-771
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

optimizations
Optional. Specifies optimizations to occur during hierarchy preprocessing. The default is
{REDUCTION, INSERTION}.

❍ REDUCTION. Explodes cells to reduce ineffective hierarchy. Virtual cells, vcells, are not
created.
❍ INSERTION. Inserts virtual cells to provide more effective hierarchy.

no_explode_with_text
Optional. Specifies the exploding of cells with text. The default is false.
❍ true. Does not explode cells with text.

❍ false. Explodes cells with text and text might be lost.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
To disable all optimizations, use this setting of the optimizations argument:
hierarchy_auto_options (optimizations = {});

See Also
hierarchy_options()

Chapter 2: Runset Functions: A - I


hierarchy_auto_options() 2-772
IC Validator Reference Manual Version N-2017.12-SP2

hierarchy_options()
The hierarchy_options() function modifies the hierarchy in the input layout. See the
hierarchy_auto_options() function for arguments related to the automatic optimization
of the hierarchy.

Syntax
hierarchy_options(
delete =
{"string", ...}, //optional
explode =
{"string", ...}, //optional
explode_all =
{"string", ...}, //optional
flatten =
{"string", ...}, //optional
no_explode =
{"string", ...}, //optional
arefs_to_srefs =
{"string", ...}, //optional
pairs =
{{pair_cells = {"string", ...},
iterate_max = integer,
explode_into_vcell = ON | OFF | AUTO,
x_pairing = true | false,
y_pairing = true | false},
... }, //optional
sets = {{base_cells = {"string", ...},
programming_cells = {"string", ...},
iterate_max = integer,
explode_into_vcell = ON | OFF | AUTO,
flatten_sets = true | false,
min_cell_overlap = integer,
share_base_cells = true | false},
...}, //optional
flatten_by_layer = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint},
...}, //optional
flatten_by_layer_purpose = {{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...} //optional
);

Returns
void

Arguments
delete
Optional. Specifies the cells that are deleted from the hierarchy. Therefore, these cells
are not checked. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information. By default, the IC Validator tool does not delete cells.

Chapter 2: Runset Functions: A - I


hierarchy_options() 2-773
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

explode
Optional. Specifies the cells that are exploded into their parent cells. All data placements
within an exploded cell are translated and stored in the parent cell. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information. By
default, the IC Validator tool does not explode cells other than those cells that meet the
automatic explode criteria, for example, placed only one time.

explode_all
Optional. Specifies the cells that are hierarchically exploded, along with all cells beneath
the specified cells, into the parent of the specified cells. (This argument is, therefore, a
combination of the flatten and explode arguments for the specified cells.) The result
is flat data in the parent cell. String matching using metacharacters is allowed. See
“String Matching” on page A-11 for more information. By default, the IC Validator tool
does not explode cells and their children other than those cells, and all of their
descendants, that meet the automatic explode criteria.

flatten
Optional. Specifies the cells that are beneath where the specified cells are exploded up
so that the specified cells contain only flat data. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information. By default, the
IC Validator tool does not flatten cells other than those cells that get flattened as a by
product of the automatic explode criteria.

no_explode
Optional. Specifies cells that are not exploded. This list takes precedence over any
explode argument for a specified cell or any automatic optimization. String matching
using metacharacters is allowed. See “String Matching” on page A-11 for more
information. By default, the IC Validator tool does not protect cells from exploding during
preprocessing.
Note:
Arguments to other functions in the OPTIONS section can also prevent the explosion
of specifically named cells during preprocessing. For example, the cells specified in
the select_cells argument of the assign() function are not exploded even if they
are listed in the explode or explode_all arguments.
The no_explode argument takes precedence over the explode and explode_all
arguments, but it does not prevent a cell from being flattened. If a cell is in the
no_explode and flatten lists, then it is preserved (not exploded into its parent
cells), but it is still flattened. That is, all of its children are exploded up into it, so that
it has no children; it is a flat cell.
Disabling or limiting automatic hierarchy optimization can have a significant negative
impact on performance and is discouraged.

Chapter 2: Runset Functions: A - I


hierarchy_options() 2-774
IC Validator Reference Manual Version N-2017.12-SP2

arefs_to_srefs
Optional. Specifies the cells for which the AREFs (array references) are broken into their
component SREFs (structured references). String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information. The default is only
those AREFs that meet the default conversion criteria are converted to SREFs.

pairs
Optional. Lists the structures that determine the criteria for creating pairs. Pairing creates
new virtual cells from pairs of child cells that interact, often across the chip. The entries
in the list are processed in order. Sets are processed before pairs. By default, there is no
pairing.
❍ pair_cells. Required. Specifies the cells that can be paired. Cells not in this list are
not paired. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information.
❍ iterate_max. Optional. Specifies the maximum number of iterations for the pairing
feature. The default is 15.
❍ explode_into_vcell. Optional. Specifies the options for the exploding of paired
cells. The default is AUTO.
■ OFF. Does not explode paired cells.

■ ON. Explodes paired cells.

■ AUTO. Optimizes exploded paired cells for performance.

❍ x_pairing. Optional. Specifies pairing in the x-direction. The default is true.

■ true. Specifies pairing in the x-direction.

■ false. Does not specify pairing in the x-direction.

❍ y_pairing. Optional. Specifies pairing in the y-direction. The default is true.

■ true. Specifies pairing in the y-direction.

■ false. Does not specify pairing in the y-direction.

sets
Optional. Lists the structures that determine the criteria for creating sets. Sets are
created by combining instances of programming and base cells in design styles such as
gate arrays and programmed ROMs.
Important:
Do not use this feature unless sets are applicable to the design style.

Chapter 2: Runset Functions: A - I


hierarchy_options() 2-775
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The entries in the list are processed in order. Sets are processed before pairs. By default,
the IC Validator tool does not create sets.
❍ base_cells. Required. Specifies the base cells that are considered for set creation.
A base cell should be a cell consisting of layers that will be programmed because of
the interaction with layers in the programming cell. Cells not in this list are ignored.
String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information.
❍ programming_cells. Optional. Specifies the programming cells that are considered
for set creation. Programming cells are cells that hierarchically overlap sibling cells or
other cells across the hierarchy and have layers in them that program base cells to
be a logical function or type of programmed memory cell. Cells not in this list are
ignored. An empty list specifies that no cells are considered. By default, the
IC Validator tool considers all cells to be programming cells.
String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information.
❍ iterate_max. Optional. Specifies the maximum number of iterations for creating
sets. The default is 4.
❍ explode_into_vcell. Optional. Specifies the options for the exploding of
placements that form sets. The default is AUTO.
■ OFF. Does not explode cells instances that form sets.

■ ON. Explodes cell instances that form sets.

■ AUTO. Optimizes explosion of cell instances that form sets for performance.

❍ flatten_sets. Optional. Specifies if the newly created sets are flattened. When set
to true, the sets are flattened. The default is false.
❍ min_cell_overlap. Optional. Specifies the minimum base cell percentage of
overlap required to create a set. The default is 60.
❍ share_base_cells. Optional. Specifies if a single placement of a base cell can be
shared in different sets. When set to true, a single placement of a base cell can be
shared in different sets. The default is true.

flatten_by_layer

Optional. Lists layer range and datatype range pairs that are flattened. Cells that contain
at least one polygon on the specified layers and datatypes are not flattened. By default,
there is no flattening of cells by layer. The data_type_range value for each pair is
optional, with a default of all datatypes. See Layout Layer and Datatype Ranges for
information about the limits of the values.

Chapter 2: Runset Functions: A - I


hierarchy_options() 2-776
IC Validator Reference Manual Version N-2017.12-SP2

flatten_by_layer_purpose

Optional. Lists layer range and purpose name pairs that are flattened. Cells in an
OpenAccess layout that contain at least one polygon on the specified layers and
purposes are flattened. The purpose name for each pair is optional, with a default of all
purpose names. By default, there is no flattening of cells by layer.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
This example first pairs filler cells, and then pairs all cells:
hierarchy_options (pairs = {{pair_cells = {"fill1", "fill2", "fill3"}},
{pair_cells = {"*"}}});

This example forms sets with base cells that start with “arr”:
hierarchy_options ( sets = {{base_cells = {"arr*"}}});

See Also
hierarchy_auto_options()

Chapter 2: Runset Functions: A - I


hierarchy_options() 2-777
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

icvread()
The icvread() function runs the ICVread application.
Note:
If this function is in the runset, you do not need to use the -icvread command-line
option.
The compare result does not need to be clean in order for the ICVread application to start.
If the compare result is not clean, then the ICVread application only reports the matched
nets and devices, and it ignores the unmatched ones. A warning message is written when
compare is not clean:
Warning: This design did not compare clean. Only matched nets and devices
will be available for icvread.

Syntax
icvread(
compare_result =
xref_database_handle,
icvread_result =
icvread_database,
output_data =
{NETS, INSTANCES}, //optional
output_per_net =
ONE_POLYGON_PER_LAYER | ALL_POLYGONS,
//optional
slash_in_instance_name = true | false //optional
);

Returns
void

Arguments
compare_result
Required. Specifies the handle of the database from which cross-reference information
is generated. The handle must be previously defined by the compare() function.

icvread_result
Required. Specifies the handle of the ICVread database generated by the
icvread_generate_results() function.

output_data
Optional. Specifies the types of output data that are generated. By default, the
IC Validator tool generates both net and instance data.
❍ NET. Generates net polygon data.

❍ INSTANCE. Generates instance coordinate data.

Chapter 2: Runset Functions: A - I


icvread() 2-778
IC Validator Reference Manual Version N-2017.12-SP2

output_per_net
Optional. Specifies the count of polygons to be written into the net polygon database.
The default is ALL_POLYGONS.
❍ ALL_POLYGONS. Writes data for all polygons into net polygon database.

❍ ONE_POLYGON_PER_LAYER. Writes data for only one polygon in each net on each layer
into net polygon database.

slash_in_instance_name
Optional. Specifies if names containing the slash character (/) are in the layout database.
The default is false.
❍ true. Specifies that the instance names might contain a slash character. Because the
IC Validator default hierarchical delimiter is the slash character, there can be conflicts
with the instance names. With the true setting, the ICVread application takes into
consideration the possible conflicts.
❍ false. Specifies that the instance names in layout database do not contain a slash.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
icvread_generate_results()
icvread_layer_map()
icvread_spec_file()
init_icvread_matrix()

Chapter 2: Runset Functions: A - I


icvread() 2-779
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

icvread_generate_results()
The icvread_generate_results() function generates all outputs used by the ICVread
application. The outputs are
• The ICVread specification file. The icvread_spec_file() function specifies the name
of this file.
• An internal layout database that contains the layers mapped by icvread_layer_map()
function calls. This internal database is used by the ICVread application to generate
individual layer databases that can be used by third-party tools.

After the icvread_generate_results() function generates those outputs, you can use the
icvread() function to run the ICVread application. Or, you can run the ICVread application
from the command line after the IC Validator tool completes the run.

Syntax
icvread_generate_results(
icvread_matrix = icvread_matrix,
icvread_spec_file = icvread_spec_file_handle,
schematic_top = "string",
selected_nets = {"string", ...}, //optional
skip_nets = {"string", ...} //optional
);

Returns
ICVread database or void

Arguments
icvread_matrix
Required. Specifies the data structure that stores mapping information from
icvread_layer_map() function calls.

icvread_spec_file
Required. Specifies the handle for the ICVread specification file. The file handle is
defined using the icvread_spec_file() function.

schematic_top
Required. Specifies the top cell in the schematic used during LVS compare.

selected_nets
Optional. Specifies the net names for which polygon information is written into the
ICVread np files. For the specified nets, the entry SELECTED_NETS is added to the

Chapter 2: Runset Functions: A - I


icvread_generate_results() 2-780
IC Validator Reference Manual Version N-2017.12-SP2

ICVread specification file. When the ICVread application is run, it writes the polygons
connecting to these nets. For example, if your runset has:
icvread_generate_results(
...
selected_nets = {a, b}
)

The entry created in the ICVread specification file is:


SELECTED_NETS {a, b}

Warning:
When you use this argument, the output database will be incomplete. Therefore, only
use this argument when you are debugging a net that seems incorrect. For example,
when you find that the result generated by the ICVread application seems incorrect,
use the selected_nets argument to narrow the output to a specific net.
The default ({}) is no selected net names, and as a result, no SELECTED_NETS entries
are created in the ICVread specification file. If there are no SKIPPED_NETS entries, the
ICVread application generates np files for all nets.
Note:
Do not use the selected_nets argument when you use the skip_nets argument.

skip_nets
Optional. Specifies the net names for which polygon information is not written into the
ICVread np files. For the specified nets, the entry SKIPPED_NETS is added to the
ICVread specification file. When the ICVread application is run, it bypasses the polygons
connecting to these nets. For example, if your runset has:
icvread_generate_results(
...
skip_nets = {a, b}
)

The entry created in the ICVread specification file is:


SKIPPED_NETS {a, b}

Warning:
When you use this argument, the output database will be incomplete. Therefore, only
use this argument when you are debugging a net that seems incorrect. For example,
use the skip_nets argument to filter out correct nets connecting to huge amount of
polygons, such as VSS and VDD.
The default ({}) is no selected net names, and as a result, no SKIPPED_NETS entries
are created in the ICVread specification file. If there are no SELECTED_NETS entries,
the ICVread application generates np files for all nets.

Chapter 2: Runset Functions: A - I


icvread_generate_results() 2-781
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Do not use the skip_nets argument when you use the selected_nets argument.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
icvread()
icvread_layer_map()
icvread_spec_file()
init_icvread_matrix()

Chapter 2: Runset Functions: A - I


icvread_generate_results() 2-782
IC Validator Reference Manual Version N-2017.12-SP2

icvread_layer_map()
The icvread_layer_map() function stores the mapping between PXL layer objects and
ICVread layer parameter in the ICVread matrix. This mapping allows you to use familiar
layer names and numbers for layer data that are saved by IC Validator. These layer
mappings are used in the ICVread specification file. The specification file is read by the
ICVread application. You must call this function for every layer you want to output to the
ICVread application.
Note:
The name of the ICVread specification file is used by the icvread_spec_file()
function.

Syntax
icvread_layer_map(
matrix = icvread_matrix,
layer1 = polygon_layer,
tagname = "string",
layer_number = integer //optional
);

Returns
void

Arguments
matrix
Required. Specifies the ICVread matrix for the ICVread application. The matrix must be
previously defined by the init_icvread_matrix() function, where ICVread matrix is
the result of the init_icvread_matrix() function.

layer1
Required. Specifies the polygon layer written to the layout database that is used by the
ICVread application.

tagname
Required. Associates a user-defined name with the layer1 polygon layer. This tag name
is used to represent the layer in all files that require a layer identity, including the
database generated by the ICVread application for that layer. Each specified tag name
must be unique and cannot be reused in other icvread_layer_map() function calls.

layer_number
Optional. Specifies a layer number to assign to the layer during device extraction. The
value can be from 0 to 255. If this argument is not used, the layer number is derived from

Chapter 2: Runset Functions: A - I


icvread_layer_map() 2-783
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

the extract devices output library. The ICVread application outputs the layer_number.np
files.
Note:
If you specify duplicate layer numbers, an error message is given. If a layer number
you provide conflicts with an internal layer number, the specified layer number is used
and the internal layer is given a different number.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
icvread()
icvread_generate_results()
icvread_spec_file()
init_icvread_matrix()

Chapter 2: Runset Functions: A - I


icvread_layer_map() 2-784
IC Validator Reference Manual Version N-2017.12-SP2

icvread_spec_file()
The icvread_spec_file() function generates a handle for the ICVread specification file
read by the ICVread application. This file is used by the icvread_generate_results()
and icvread_layer_map() functions.
The ICVread specification file contains the following sections. After each section identifier,
the value for that setting is written. See the Example section for more information.
• RUN_DETAILS_PATH. Path to the run_details directory. This path is specified in the
run_details_path argument of the run_options() function.

• COMPARE_PATH. Path to the compare directory. This path is the location of the
compare directory (run_directory/run_details/compare).
• LAYOUTTOP. Layout top cell name. This cell is the top cell of the layout.
• SCHEMATICTOP. Schematic top cell name. This path is specified in the
schematic_top_cell argument of the compare() function.

• LAYER. List of layer numbers and tag names that are used by the ICVread application to
generate the polygon database of each layer. Every layer that is mapped with an
icvread_layer_map() function has an entry in the LAYER section. The layer IDs used
in the LAYER section correspond to the file names of the layer_number.np files (layer
databases) that are generated by the ICVread application.

Syntax
icvread_spec_file(
file = "string"
);

Returns
icvread_spec_file_handle

Arguments
file
Optional. Specifies the output file name for the ICVread specification file. The default is
"icvread.spec".

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 2: Runset Functions: A - I


icvread_spec_file() 2-785
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
Here is an example ICVread specification file.
LAYOUT <- This is the section keyword/identifier
MWLIB <- This is the value associated with "LAYOUT"
RUN_DETAILS_PATH
./run_details
COMPARE_PATH
./run_details/compare
LAYOUTTOP
Top
SCHEMATICTOP
Top
LAYER
1 poly <- Layer #1 in the OUTLIB maps to the tagname 'poly'
2-2 ngate <- Layer #2 datatype 2 maps to the tagname 'ngate'
3 pgate
4 M1

See Also
icvread()
icvread_generate_results()
icvread_layer_map()
init_icvread_matrix()

Chapter 2: Runset Functions: A - I


icvread_spec_file() 2-786
IC Validator Reference Manual Version N-2017.12-SP2

identify_fill()
The identify_fill() function identifies floating fill in layer1 by layer2. After the floating fill
is identified, it is optimized in the connect database.
Note:
All commands that check floating fill do so as usual and do the same work as without this
optimization.
To optimize floating fill for all layers, use the optimize_floating_fills argument of
the run_options() function.

Syntax
identify_fill(
layer1 = polygon_layer,
layer2 = polygon_layer,
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer. These polygons usually are a subset of the layer1
polygons.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 2: Runset Functions: A - I


identify_fill() 2-787
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
In the following example, dummy metal is part of the corresponding metal layer: {1,45} is part
of layer {1}, and {3,45} is part of layer {2}.
metal1 = assign({{1}});
dummy1 = assign({{1,45}});
metal2 = assign({{3}});
dummy2 = assign({{3,45}});
via1 = assign({{2,1}});

/* Floating shapes must be identified and produce metal before


being used in connect(). Use the identify_fill() function on
input layers to the connect() function.*/

metal1 = identify_fill(metal1,dummy1);
metal2 = identify_fill(metal2,dummy2);
connect(
{metal1, metal2}, via1}
. . .
);

In the following example, dummy metal is not part of the metal layers.
metal1 = assign({{1}});
metal2 = assign({{3}});
via1 = assign({{2,1}});
dummy1 = assign({{10}});
dummy2 = assign({{11}});
. . .
metal1 = metal1 or dummy1;
metal2 = metal2 or dummy2;

/* Floating shapes must be identified and produce metal before
being used in connect(). Use the identify_fill() function on
input layers to the connect() function.*/

metal1 = identify_fill(metal1,dummy1);
metal2 = identify_fill(metal2,dummy2);
connect(
{metal1, metal2}, via1}
. . .
);

In the following example, the identify_fill() function is used to identify floating data in a
set of layer data. This usage prevents the inclusion of floating polygons in the connect
database.
metal1 = assign({{1}});
metal2 = assign({{3}});
via1 = assign({{2,1}});

/* Floating shapes must be identified and produce metal before

Chapter 2: Runset Functions: A - I


identify_fill() 2-788
IC Validator Reference Manual Version N-2017.12-SP2

being used in connect(). Use the identify_fill() function on


input layers to the connect() function.*/

metal1 = identify_fill(metal1,metal1);
metal2 = identify_fill(metal2,metal2);
connect(
{metal1, metal2}, via1}
. . .
);

See Also
connect()

Chapter 2: Runset Functions: A - I


identify_fill() 2-789
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

import_gds_cell()
The import_gds_cell() function reads the hierarchy tree of a cell from the specified GDSII
library.
Using the result of the import_gds_cell() function as input to the cell option of the
place_cells argument of a write function, you can place the cell based on shapes in a
marker layer.
Note:
A GDSII file can be gzipped. The IC Validator tool automatically detects if a GDSII file is
gzipped.

Syntax
import_gds_cell(
input_library = gds_library_handle,
cell = "string"
);

Returns
cell_handle

Arguments
input_library
Required. Specifies the library that has the cell to be placed. See the gds_library()
function for information about defining the gds_library_handle.

cell
Required. Specifies the top cell name of the cell to be placed.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 2: Runset Functions: A - I


import_gds_cell() 2-790
IC Validator Reference Manual Version N-2017.12-SP2

Example
The following example shows using the import_gds_cell() function to specify a cell to be
imported and then written out using the write_gds() function.
fill_lib = gds_library("fill_library.gds");
c1 = import_gds_cell(fill_lib, "C1");
c2 = import_gds_cell(fill_lib, "C2");

// Output to GDSII
g = gds_library("fill.gds");
write_gds(
output_library = g,
place_cells = {
{ fill_marker_1, c1 },
{ fill_marker_2, c2, compress = AUTO }
}
);

See Also
write_gds()

Chapter 2: Runset Functions: A - I


import_gds_cell() 2-791
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

import_oasis_cell()
The import_oasis_cell() function reads the hierarchy tree of a cell from the specified
OASIS library.
Using the result of the import_oasis_cell() function as input to the cell option of the
place_cells argument of a write function, you can place the cell based on shapes in a
marker layer.
Note:
An OASIS file can be gzipped. The IC Validator tool automatically detects if an OASIS file
is gzipped.

Syntax
import_oasis_cell(
input_library = oasis_library_handle,
cell = "string"
);

Returns
cell_handle

Arguments
input_library
Required. Specifies the library that has the cell to be placed. See the oasis_library()
function for information about defining the oasis_library_handle.

cell
Required. Specifies the top cell name of the cell to be placed.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the import_gds_cell() function for an example of using an import cell function.

See Also
write_oasis()

Chapter 2: Runset Functions: A - I


import_oasis_cell() 2-792
IC Validator Reference Manual Version N-2017.12-SP2

incremental_connect()
The incremental_connect() function creates a new connect database by adding
electrical connectivity for the specified layers to a previously created connect database. For
each entry within the connect_items argument, connectivity is independently established
from each layer in the layers list to the layer specified with the by_layer option. The
resulting connect database is untexted.

Syntax
incremental_connect(
connect_sequence = connect_database,
connect_items = {{layers = {polygon_layer, ...},
by_layer = polygon_layer,
include_touch = NONE | EDGE,
by_layer_connection = ALL | SHIELDED_OVERLAP},
...}
);

Returns
connect database

Arguments
connect_sequence
Required. Specifies the connect database.

connect_items
Required. Lists the connection specifications.
❍ layers. Required. Specifies a list of the polygon layers to connect.

❍ by_layer. Optional. Specifies the polygon layer by which the layers specified in the
layers argument are connected. By default, these layers connect directly with each
other; they are not connected through a by layer.
In the following example, the layers are all connected to each other without a by layer.
Figure 2-260 illustrates this example.
incremental_connect(connect_database, connect_items = {{{layer1,
layer2, layer3, layer4}}} );

Chapter 2: Runset Functions: A - I


incremental_connect() 2-793
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-260 Layers Connected Without a By Layer

❍ include_touch. Optional. Specifies whether polygons with only an outside touch


interaction form an electrical connection. The default is EDGE.
■ NONE. Specifies that outside touch does not form an electrical connection.

■ EDGE. Specifies that outside edge touch forms an electrical connection.

❍ by_layer_connection. Optional. Specifies whether polygons must share an overlap


touch interaction in a common area with the by layer to form an electrical connection.
The default is ALL.
■ ALL. Specifies that a common overlap touch between all three layers is not
required to form an electrical connection and that shielding is not taken into
account. All the layers specified in the layers argument connect to the by layer.
■ SHIELDED_OVERLAP. Specifies that a common overlap touch between all three
layers is required to form an electrical connection and that shielding is taken into
account. Both the first layer specified in the layers argument and the by layer
must be present to form the three-layer connection.
In the following example, a by layer connects layer1 to layer2, and layer1 is not
connected to layer3 or layer4 because they are shielded by layer2. Figure 2-261
illustrates this example.
incremental_connect(connect_database, connect_items = {{{layer1,
layer2, layer3,layer4},by_layer = by_layer, include_touch = NONE,
by_layer_connection = SHIELDED_OVERLAP }} );

Alternatively, if by_layer_connection = ALL, then layer1, layer2, layer3, and


layer4 are connected to the by layer.

Chapter 2: Runset Functions: A - I


incremental_connect() 2-794
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-261 Layers Shielded by Overlaps

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
cdb2 = incremental_connect(cdb1, {{{metal1, metal2}, via2}});

See the connect() function for an example of the connect_items argument.

See Also
connect()
create_ports()
stamp()
text_net()

Chapter 2: Runset Functions: A - I


incremental_connect() 2-795
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

incremental_options()
The incremental_options() function specifies a subset of the input layout to be
processed. Window selection is performed first followed by the punching of holes with the
exclude windows.This function can be called only one time in a runset.

Syntax
incremental_options(
exclude_window = {{left = double, bottom = double,
right = double, top = double}, ...},
//optional
exclude_window_by_cells = {"string", ...}, //optional
exclude_window_by_cells_delta = double, //optional
select_window = {{left = double, bottom = double,
right = double, top = double}, ...},
//optional
clip_window = false | true, //optional
window_error_filter = KEEP_ALL | KEEP_INTERACTING |
KEEP_ENCLOSED, //optional
window_ambit = double, //optional
apply_window = {INPUT_LAYOUT, OUTPUT_ERRORS}, //optional
select_window_by_cells = {"string", ...} //optional
);

Returns
void

Arguments
exclude_window
Optional. Lists the windows in the coordinate system of the top cell that defines areas
excluded from processing. See the clip_window argument to define the action for data
that crosses the window boundaries. The default is an empty list ({}).

exclude_window_by_cells
Optional. Specifies the cells excluded from processing. This is achieved by clipping and
removing any shapes within the bounding boxes of placements of the specified cells, and
is performed in the top cell. Any shape originating from any cell is removed if it is within
a specified cell's bounding box from a flat view in the top cell. There is no support for
excluding a rectilinear shape within specified cells; the rectangular extents are used
instead. The default is an empty list ({}).
Note:
When using the exclude_window_by_cells argument, the clip_window argument
must be true.

Chapter 2: Runset Functions: A - I


incremental_options() 2-796
IC Validator Reference Manual Version N-2017.12-SP2

exclude_window_by_cells_delta
Optional. Specifies the minimum spacing between cells. A positive delta shrinks the cells
and a negative delta expands the cells. The default is 0.

select_window
Optional. Lists the windows in the coordinate system of the top cell that defines areas
selected for processing. All areas outside of these windows are excluded from
processing. See the clip_window argument to define the action for data that crosses the
window boundaries. The default is an empty list ({}).

clip_window
Optional. Specifies whether polygons overlapping window boundaries are clipped. The
default is false.
❍ true. Clips overlapping polygons at the window boundary.

❍ false. Retains overlapping polygons in their entirety.

window_error_filter
Optional. Specifies how top cell errors are filtered when writing to the error database. The
default is KEEP_ALL.
Note:
Only errors reported in the top cell are filtered. Errors reported in other cells are not
filtered.
❍ KEEP_ALL. Specifies that no error filtering occurs. All errors are written to the error
database.
❍ KEEP_INTERACTING. Specifies that only errors that touch or overlap the selected area
are written to the error database.
❍ KEEP_ENCLOSED. Specifies that only errors that are completely enclosed by the
selected areas are written to the error database.

window_ambit
Optional. Oversizes the selected windows when filtering layout data to be read. The
filtering of errors based on select window values is not be affected.
Oversizes the windows specified with the select_window argument by the specified
amount when reading layout data, but not when filtering errors. Any windows specified
with the exclude_window argument are undersized by the specified amount. The default
is 0.0.

Chapter 2: Runset Functions: A - I


incremental_options() 2-797
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

apply_window
Optional. Chooses the type of data to be filtered: input layout data, error output data, both
types of data, or neither type, when you use the select_window, exclude_window, and
exclude_window_by_cells arguments of the incremental_options() function. The
default is filtering, that is selection or exclusion from the specified windows, of input
layout and error output data, {INPUT_LAYOUT, OUTPUT_ERRORS}.
Note:
The window_error_filter argument affects filtering only when it is
KEEP_INTERACTING or KEEP_ENCLOSED and the apply_window argument specifies
the OUTPUT_ERRORS option.
The clip_window argument affects filtering only when the apply_window argument
specifies the INPUT_LAYOUT option.
❍ INPUT_LAYOUT. Filters input layout data.

❍ OUTPUT_ERRORS. Filters error output data.

select_window_by_cells
Optional. Specifies a list of cells to be included for processing. All areas outside of these
cells are excluded from processing. See the clip_window argument for more
information about how to define the action for data that crosses the window boundaries.
The default is an empty list ({}).

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
incremental_options (
select_window = {{2, 2, 4, 4}, {8, 8, 10, 10}}
);

See Also
hierarchy_options()

Chapter 2: Runset Functions: A - I


incremental_options() 2-798
IC Validator Reference Manual Version N-2017.12-SP2

inductor()
The inductor() function collects extraction configuration information about designed
inductors that have a device layer and two terminal layers. One or more optional pin layers
can also be specified. The configuration information, which contains device body and
terminal layers, property extraction information, schematic device mappings, and pin
handling instructions, is stored in the device matrix that is passed to the
extract_devices() function.

To recognize inductor devices, the device body layer polygons must interact with one
polygon from each terminal layer and from each specified optional pins layer. Multiple
polygons from one terminal layer can be treated as a single pin if those terminal layer
polygons belong to the same net. If an optional pin layer with the pin_type option set to
BULK is specified, the required relationship between the pin layer polygon and the device
body layer polygon is defined by the bulk_relationship argument. If an optional pin layer
with the pin_type option set to TERMINAL is specified, the optional pin layer polygon must
interact with the device body layer polygon but is not required to enclose the device body
layer polygon.
The device layer is usually generated by an and() function call between an inductor
recognition layer and the inductor material. The device layer is then used to cut the inductor
material using a not() function call to form the inductor terminals.
Note:
See “Device Names” in Appendix A for the device_name argument restrictions.

Syntax
inductor(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
terminal_a = polygon_layer,
terminal_b = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional

Chapter 2: Runset Functions: A - I


inductor() 2-799
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
connectivity = {{layer = {polygon_layer, ...}
by_layer = polygon_layer}, ...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
extract_shorted_device = true | false, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the inductor. A device name can be reused across multiple calls of
the inductor() function if all calls have

Chapter 2: Runset Functions: A - I


inductor() 2-800
IC Validator Reference Manual Version N-2017.12-SP2

❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.
❍ Equivalent settings for x_card argument.

device_body
Required. Specifies the body layer of the inductor.

terminal_a
Required. Specifies the device layer that contains the first terminal of the inductor. The
pin name generated by the IC Validator tool is “A”.

terminal_b
Required. Specifies the device layer that contains the second terminal of the inductor.
The pin name generated by the IC Validator tool is “B”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is BULK.


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named BULK.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must

Chapter 2: Runset Functions: A - I


inductor() 2-801
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. The default is
properties = {{"l", DOUBLE, NONE}},

❍ name. Required. Specifies the property name.


Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Optional. Specifies the data type of the property. The default is DOUBLE.

Chapter 2: Runset Functions: A - I


inductor() 2-802
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.
❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.

Chapter 2: Runset Functions: A - I


inductor() 2-803
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The property is not written to


- The output netlist (cell.net) by the netlist() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.

Chapter 2: Runset Functions: A - I


inductor() 2-804
IC Validator Reference Manual Version N-2017.12-SP2

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 2-29.
Table 2-29 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

Chapter 2: Runset Functions: A - I


inductor() 2-805
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 2-29 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument (Continued)

write_property_to value Dual-hierarchy phase Treatment of processing layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 2-30.
Table 2-30 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

Chapter 2: Runset Functions: A - I


inductor() 2-806
IC Validator Reference Manual Version N-2017.12-SP2

Table 2-30 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted inductor. The default calculations are for the inductance, the length from one
end of the polygon path to another end, the width of the polygon path, turns of the spiral
inductor, the space of the closest polygon path, the area of the bounding box, the height
of the bounding box, and the width of the bounding box. The default
calc_inductor_properties() function is defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for information about the utility functions
you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Parallel devices enclosed by the same recognition layer polygon are not
merged.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon. The default is ENCLOSE. The bulk polygon is defined as the first member of the
optional_pins argument list for which the pin_type option is BULK.

❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

Chapter 2: Runset Functions: A - I


inductor() 2-807
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the standard “A”, “B”, and “BULK” pin
names, in addition to optional pin names provided in the optional_pins list of
structures argument of the device configuration function.
❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default
is "B".
❍ optional_pins. Optional. Specifies the schematic pins that correspond to the
pin_name option in the optional_pins argument.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the inductor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
inductor() function, that pin can be specified with the ignore_pins. Otherwise, this
optional pin produces an error during the compare operation.

x_card
Optional. Specifies if the instance name prefix is replaced. The default is false.

Chapter 2: Runset Functions: A - I


inductor() 2-808
IC Validator Reference Manual Version N-2017.12-SP2

❍ true. Replaces the default instance name prefix for the layout extracted device with
an X-card. This option facilitates the use of SPICE SUBCKT models to represent
devices in simulation.
❍ false. The default instance name prefix for the layout extracted device is not
replaced.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” in Chapter 4 for more information.

connectivity
Optional. Lists the connections for different layers that make up the body of an inductor.
This information is used by the dev_coil_path_length() utility function.
❍ layers. Specifies the layers that make up the inductor.

❍ by_layer. Specifies the polygon layer by which specified layers are connected.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Optional. Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the string is valid and
unique because the IC Validator tool does not check the value. The default is an empty
string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

Chapter 2: Runset Functions: A - I


inductor() 2-809
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” in Chapter 4 for more information.

extract_shorted_device
Optional. Specifies whether shorted devices, that is, devices with only one terminal, are
extracted. The default is true.
❍ true. Extracts shorted devices.

❍ false. Reports shorted devices as error devices.

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Chapter 2: Runset Functions: A - I


inductor() 2-810
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for information.

Example
matrix = init_device_matrix(cdb1);

inductor(
matrix,
device_name = "IND",
device_body = dev,
terminal_a = term,
terminal_b = term
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

See Also
capacitor()
resistor()

Chapter 2: Runset Functions: A - I


inductor() 2-811
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

init_compare_matrix()
The init_compare_matrix() function creates a compare matrix. Invoke this function
before the compare functions. You can call this function only one time in a runset.
The compare functions add data to the matrix by collecting information from settings.

Syntax
init_compare_matrix(
netlist_vs_netlist = FULL_RUNSET | PARTIAL_RUNSET
);

Returns
compare state

Arguments
netlist_vs_netlist
Optional. Specifies if automatic device mappings are performed for netlist-versus-netlist
flows. Netlist-versus-netlist flows differ from layout-versus-schematic flows in that
netlist-versus-netlist flows do not perform device extraction from layout. Instead, two
standalone netlists are imported into the IC Validator tool and compared. IC Validator
netlist-versus-netlist runsets optionally include calls to the following functions to map
device names in the imported netlists to IC Validator device types:
map_capacitor()
map_gendev()
map_inductor()
map_nmos() and map_pmos()
map_np() and map_pn()
map_npn() and map_pnp()
map_resistor()
The netlist_vs_netlist argument of the compare() function regulates whether
netlist-versus-netlist mapping function calls are required for every device instance in
each imported netlist, or whether the mapping of device instance to device type is
inferred from the netlist without an explicit mapping function call for each instance.
The default is FULL_RUNSET.
❍ FULL_RUNSET. Does not perform automatic device mappings. A full
netlist-versus-netlist runset containing netlist-versus-netlist mapping function calls for
every device instance in each imported netlist is required. Otherwise, an error results
for any imported device instance that is not mapped to an IC Validator device type by
a mapping function.

Chapter 2: Runset Functions: A - I


init_compare_matrix() 2-812
IC Validator Reference Manual Version N-2017.12-SP2

❍ PARTIAL_RUNSET. Performs automatic device mappings. The netlist-versus-netlist


runset is not required to contain netlist-versus-netlist mapping function calls for every
device instance in each imported netlist. If an explicit device type mapping function
call exists for a particular device name, then instances corresponding to the device
name are handled according to the mapping function call. However, if an explicit
device type mapping function call does not exist for a particular device name, then
instances corresponding to the device name is implicitly mapped to a device type as
follows:
■ The device type is implicitly determined by the TYPE field in the IC Validator
format netlist input. The TYPE field is derived from the leading character in
instance names read from SPICE netlists.
■ However, because the TYPE field does not differentiate n-type from p-type
devices, the device type of doped devices like MOS, bipolar transistors, and
diodes cannot be uniquely determined based on the TYPE field alone. For these
devices, the type is implicitly determined by the device_type argument to any
compare-related function call that also specifies a non-empty list of the
device_names argument.
The compare-related functions are: check_property(),
check_property_off(), filter(), fopen(), merge_parallel(),
merge_parallel_off(), merge_series(), merge_series_off(), and
recalculate_property().
When the netlist_vs_netlist argument is PARTIAL_RUNSET, a compare-related
function call that specifies a device_type argument value equal to NMOS, PMOS, NP,
PN, NPN, or PNP must also specify a non-empty list value for the device_names
argument. This list of device names enables the netlist-versus-netlist flow to
differentiate n-type and p-type devices. An error results if an empty list value is
specified for the device_names argument in this situation.
Implicit type mappings must not conflict. That is, the mapping of device name to
device type must be consistent across all calls to compare-related functions. A
conflict causes an error.
Note:
This restriction for calling compare-related functions only exists for the partial
netlist-versus-netlist runset mode (PARTIAL_RUNSET). It does not exist for the full
netlist-versus-netlist runset mode (FULL_RUNSET) or for generic LVS runs.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


init_compare_matrix() 2-813
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
check_property()
compare()
equiv_options()
filter()
match()
merge_parallel()
merge_series()
recalculate_property()
search_include_path()

Chapter 2: Runset Functions: A - I


init_compare_matrix() 2-814
IC Validator Reference Manual Version N-2017.12-SP2

init_device_matrix()
The init_device_matrix() function creates the device matrix that is used to store
configuration information for device extraction for use by the extract_devices() function.
The device matrix data is populated by configuration information for device extraction by
calls to device configuration functions, including capacitor(), gendev(), inductor(),
nmos() and pmos(), np() and pn(), npn() and pnp(), and resistor().

In addition, this function is used to activate the dual-hierarchy extraction flow that extracts
environment-sensitive properties from postflattened hierarchy for simulation while
maintaining preflattened hierarchy for use in compare. See the write_annotation_file()
function for more information.

Syntax
init_device_matrix(
connect_sequence = connect_database,
dual_hierarchy_extraction = true | false, //optional
dfm_files = {"string", ...}, //optional
device_properties = ALL | LVS //optional
);

Returns
device_matrix

Arguments
connect_sequence
Required. Specifies the connect database.

dual_hierarchy_extraction
Optional. Selects either dual-hierarchy extraction or standard device extraction. The
default is false.
❍ true. Specifies to run two device extractions internally within the IC Validator tool to
generate the environment-sensitive property annotation file:
1. Annotation file hierarchy extraction
All of the device extraction functions are considered during the
extract_devices() function run. Hierarchical preflattening is performed so that
all processing_layer_hash layers can be passed to the internal device property
configuration function.
Also, certain device terminal layers with hierarchically interacting polygons are
leveled to ensure accurate property extraction.
2. Ideal compare hierarchy extraction

Chapter 2: Runset Functions: A - I


init_device_matrix() 2-815
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

All device configuration function calls are considered during the


extract_devices() function run. To minimize hierarchical preflattening and to
retain as much hierarchy as possible, certain processing_layer_hash layers are
discarded.
Both of these hierarchies are stored within the device database returned by the
extract_devices() function for use in downstream IC Validator functions.
See the processing_layer_hash_map and pin_map options of the properties
argument of the nmos() and pmos() functions for more information, including
descriptions of how processing_layer_hash polygons and terminal layer polygons
are handled by dual-hierarchy extraction.
❍ false. Specifies to run a single-hierarchy extraction of all device configuration
function calls. Calls to the write_annotation_file() function are not allowed when
the dual_hierarchy_extraction argument is false.

dfm_files
Optional. Specifies the files to use for table-based functionality. The tool uses the lookup
tables in these files to import poly and diffusion rounding effects into the hierarchy
extraction flow, providing a more accurate estimate of the effective width and length of a
MOS device.
For more information, see the mos_get_dfm_double() utility function and Chapter 7,
“Table-Based Lookup Functionality in the IC Validator LVS User Guide.

device_properties
Optional. Defines which properties are extracted during device extraction. The default is
ALL.

❍ ALL. Extracts all of the properties defined in the device commands in the runset.

❍ LVS. Extracts only the properties that the compare() functions reference, or the
properties whose write_property_to settings are explicitly specified as
NETLIST_XTR_SPICE, NETLIST_PEX_SPICE, NETLIST, or
NETLIST_ANNOTATION_FILE_SPICE.
Note:
The dual_hierarchy_extraction argument is ignored if
device_properties=LVS.
For more information, See the -dhe command-line option in the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 2: Runset Functions: A - I


init_device_matrix() 2-816
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
extract_devices()
property_annotation_file()
write_annotation_file()

Chapter 2: Runset Functions: A - I


init_device_matrix() 2-817
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

init_icvread_matrix()
The init_icvread_matrix() function creates an ICVread matrix where layer mappings
and other settings required by the icvread_generate_results() function are stored. The
icvread_layer_map() function populates the ICVread matrix with mapping information.
This database is used to generate the ICVread specification file and a library with polygon
data. The specification file and library are used to interface with the ICVread application. The
flow is:
• Include the icvread_public.rh header file in your runset.
• Use the init_icvread_matrix() function to initialize a matrix that collects all options
needed for writing the output for the ICVread application.
• For each layer that you want to make available to the ICVread application, invoke the
icvread_layer_map() function to map a static name to a polygon layer variable.

• Use the icvread_spec_file() function to create a handle to the ICVread specification


file that the IC Validator tool writes.
• Use the icvread_generate_results() function to generate the ICVread specification
file and a library with polygon data.
• Use the icvread() function to run the ICVread application. Or, you can run the ICVread
application from the command line after the IC Validator run is completed.

Syntax
init_icvread_matrix(
device_db = device_database
);

Returns
ICVread matrix

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 2: Runset Functions: A - I


init_icvread_matrix() 2-818
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
icvread()
icvread_generate_results()
icvread_layer_map()
icvread_spec_file()

Chapter 2: Runset Functions: A - I


init_icvread_matrix() 2-819
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

init_pex_layer_matrix()
The init_pex_layer_matrix() function creates a PEX layer matrix database where
configuration values are stored.
In the runset you can have multiple PEX layer matrix databases. The databases are
generated by multiple calls to the init_pex_layer_matrix() function. You can populate
these PEX layer matrix databases using the following functions:
pex_cell_extents_file()
pex_conducting_layer_map()
pex_ignore_cap_layer_map()
pex_marker_layer_map()
pex_remove_layer_map()
pex_via_layer_map()
pex_viewonly_layer_map()

The parasitic extraction map functions populate the PEX layer matrix database with
mapping information that is used to generate the two StarRC parasitic extraction mapping
files, MAPPING_FILE and OA_LAYER_MAPPING_FILE, which are used in the IC Validator
to StarRC tool flow. You can use the populated PEX layer matrix databases to generate
these two files plus a connected layout database using the following functions:
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()

You create output file handles for the parasitic extraction data generation functions using the
following file-handle functions:
milkyway_library()
pex_lpp_map_file()
pex_process_map_file()
pex_runset_report_file()

Syntax
init_pex_layer_matrix(
device_db = device_database
);

Returns
PEX layer matrix (pex_layer_matrix)

Chapter 2: Runset Functions: A - I


init_pex_layer_matrix() 2-820
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
device_db
Required. Specifies the device database. The extract_devices() function generates
this database.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 2: Runset Functions: A - I


init_pex_layer_matrix() 2-821
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

initialize_net_property()
The initialize_net_property() function initializes the net-based property that is used
as input to the in_property argument of the net_property_select() function.

Syntax
initialize_net_property(
name_list_merge_method = {{property_name = "string",
property_merge_method = MAX | MIN | SUM},
...}
);

Returns
net_property

Arguments
name_list_merge_method
Required. Lists the property settings that defines the property names and merge
methods.
❍ property_name. Specifies the property name.

❍ property_merge_method. Specifies the merge method type when new nets are
formed from an incremental connect. The default is MAX.
■ MAX. Selects the property with the maximum value as the new property value.

■ MIN. Selects the property with the minimum value as the new property value.

■ SUM. Selects the cumulative total of all properties as the new net property value.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
p1 = initialize_net_property({{"ratio"}, {"metal area"}, {"gate_area"}});

See Also
net_property_select()

Chapter 2: Runset Functions: A - I


initialize_net_property() 2-822
IC Validator Reference Manual Version N-2017.12-SP2

initialize_property()
The initialize_property() function creates a property layer from a polygon layer.

Syntax
initialize_property(
layer1 = polygon_layer,
name_list = {"string", ...}
);

Returns
property layer

Arguments
layer1
Required. Specifies the polygon layer.

name_list
Required. Specifies the strings used to access properties on the returned property layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
p1 = initialize_property(gate, {"damage"});

See Also
net_polygon_select()

Chapter 2: Runset Functions: A - I


initialize_property() 2-823
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

inside() and not_inside()


The inside() function selects layer1 polygons that are inside the layer2 polygons. The
complement of this function is the not_inside() function.

Syntax
inside(
layer1 = polygon_layer,
layer2 = polygon_layer,
include_touch = POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_inside(
layer1 = polygon_layer,
layer2 = polygon_layer,
include_touch = POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer that defines the selection region.

include_touch
Optional. Specifies the inside touches that are included in the definition of fully enclosed
for layer2 polygons. The default is ALL.
❍ POINT. Considers point touch as enclosed.

❍ ALL. Considers all touches (edge and point) as enclosed.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.

Chapter 2: Runset Functions: A - I


inside() and not_inside() 2-824
IC Validator Reference Manual Version N-2017.12-SP2

❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 2-262, all data from layerA that is fully inside layerB is selected.
Result = layerA inside layerB;

Figure 2-262 inside() Function Examples

layerA

layerB

include_touch include_touch Result


= ALL = POINT

In Figure 2-263, all data from layerA that is not fully inside layerB is selected.
Result = layerA not_inside layerB;

Chapter 2: Runset Functions: A - I


inside() and not_inside() 2-825
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-263 not_inside() Function Examples

layerA

layerB

include_touch include_touch
= ALL = POINT Result

See Also
inside_touching_edge() and not_inside_touching_edge()
outside() and not_outside()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


inside() and not_inside() 2-826
IC Validator Reference Manual Version N-2017.12-SP2

inside_hole() and not_inside_hole()


The inside_hole() function selects layer1 polygons that fill the holes in layer2 polygons.
The selected polygons must be exactly coincident with the holes of layer2. The
complement of this function is the not_inside_hole() function.

Syntax
inside_hole(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_inside_hole(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


inside_hole() and not_inside_hole() 2-827
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In Figure 2-264all data from layerB that is inside a hole of layerA is selected.
Result = layerB inside_hole layerA;

Figure 2-264 inside_hole() Function Example


Input

layerA

Output

layerB

Result

See Also
donut_holes()

Chapter 2: Runset Functions: A - I


inside_hole() and not_inside_hole() 2-828
IC Validator Reference Manual Version N-2017.12-SP2

inside_point_touching_edge() and
not_inside_point_touching_edge()
The inside_point_touching_edge() function selects entire layer1 edges that have any
inside point touching with layer2 edges. The complement of this function is the
not_inside_point_touching_edge() function.

Syntax
inside_point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_inside_point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 2: Runset Functions: A - I


inside_point_touching_edge() and not_inside_point_touching_edge() 2-829
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Description
The behavior of the point edge touching functions [inside_point_touching_edge() and
not_inside_point_touching_edge(), outside_point_touching_edge() and
not_outside_point_touching_edge(), and point_touching_edge() and
not_point_touching_edge()] is as follows:
• The output of the inside_point_touching_edge() function when layer1 is a polygon
layer is the same as when layer1 is the result of the length_edge() function with the
distance argument set to >0, that is, length_edge(layer1, distance >0).

• If layer2 is a polygon layer, a point touch happens when an endpoint of layer1 touches
a layer2 polygon boundary. To determine whether a point touch is inside or outside:
❍ The type of point touch is the same as the type of line touch if there is also a line touch
with the layer2 polygon that includes the endpoint of a point touch.
❍ Otherwise, the type of point touch is defined by whether the layer1 edge is inside or
outside the layer1 polygon near the point touch.
• If layer2 is an edge layer, a point touch happens when an endpoint of a layer1 edge
point touches a layer2 edge. To determine whether a point touch is inside or outside:
❍ When a layer1 edge point touches the endpoint of a layer2 edge:
■ The touch is inside if the edges are in the same direction. That is, if the layer1
edge head point touches the layer2 edge tail or the layer1 edge tail point
touches the layer2 edge head.
■ The touch is outside if the edges are in different directions. That is, if the layer1
edge head point touches the layer2 edge head or the layer1 edge tail point
touches the layer2 edge tail.
❍ When a layer1 edge point touches the interior point of a layer2 edge:
■ The touch is inside if layer1 edge is on the right side of the layer2 edge.
■ The touch is outside if layer1 edge is on the left side of the layer2 edge.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


inside_point_touching_edge() and not_inside_point_touching_edge() 2-830
IC Validator Reference Manual Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

layer2 is a Polygon Layer


In Figure 2-265 the red edges are all inside point touch because there is an inside line touch
with the point touch polygon that includes the endpoint of point touch. Therefore, the output
includes all the red edges.
Figure 2-265 inside_point_touching_edge() Function Example 1
layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

In Figure 2-266 the red edges are all inside point touch because they are inside polygon
near point touch. Note that for the rightmost red edge, the outside line touch elsewhere is
irrelevant to the type of point touch.
Figure 2-266 inside_point_touching_edge() Function Example 2

layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

In Figure 2-267 the result of both the inside_point_touching_edge() and


outside_point_touching_edge() functions includes all the red edges.

Chapter 2: Runset Functions: A - I


inside_point_touching_edge() and not_inside_point_touching_edge() 2-831
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-267 inside_point_touching_edge() and outside_point_touching_edge() Functions


Example

layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

layer2 is an Edge Layer


In Figure 2-268 the output includes all blue edges.
Figure 2-268 inside_point_touching_edge() Function Example 3

layer2 (edge layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

See Also
inside() and not_inside()
outside() and not_outside()
outside_point_touching_edge() and not_outside_point_touching_edge()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
point_touching_edge() and not_point_touching_edge()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


inside_point_touching_edge() and not_inside_point_touching_edge() 2-832
IC Validator Reference Manual Version N-2017.12-SP2

inside_touching_edge() and not_inside_touching_edge()


The inside_touching_edge() function selects entire layer1 edges that have the
specified inside coincidence with layer2 edges. The complement of this function is the
not_inside_touching_edge() function.

Syntax
inside_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

not_inside_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

count
Optional. Specifies the number of touches that must occur for an edge to be selected. If
layer2 is a polygon layer, then polygons are counted. If layer2 is an edge layer, then
individual edges are counted. See “Constraints” on page A-4 for more information. The
default is >0.
Figure 2-269 shows the effect of the count argument settings with the
inside_touching_edge() function.

Chapter 2: Runset Functions: A - I


inside_touching_edge() and not_inside_touching_edge() 2-833
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-269 count Argument Example With the inside_touching_edge() Function

count > 0 count = 1 count = 2


(Default)
layer1 layer2 Result

Figure 2-270 shows the effect of the count argument settings with the
not_inside_touching_edge() function.

Chapter 2: Runset Functions: A - I


inside_touching_edge() and not_inside_touching_edge() 2-834
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-270 count Argument Example With the not_inside_touching_edge() Function

count > 0 count = 1 count = 2


(Default)
layer1 layer2 Result

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 2: Runset Functions: A - I


inside_touching_edge() and not_inside_touching_edge() 2-835
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

coincidence
Optional. Specifies the types of coincidence that cause a selection. The default is EDGE.
❍ EDGE. Only edge coincidence causes an edge to be selected.

❍ ENDPOINT. Only those edges that have no edge coincidence, but have collinear,
endpoint, coincidence are selected.
❍ ALL. All types of coincidence cause an edge to be selected.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
inside() and not_inside()
outside() and not_outside()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


inside_touching_edge() and not_inside_touching_edge() 2-836
IC Validator Reference Manual Version N-2017.12-SP2

instance_property_number()
The instance_property_number() function redefines the property number used for cell
instance names.

Syntax
instance_property_number(
property_number = integer
);

Returns
void

Arguments
property_number
Required. Redefines the property number. The default is 4.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
gds_options()
write_gds()
write_oasis()

Chapter 2: Runset Functions: A - I


instance_property_number() 2-837
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

interacting() and not_interacting()


The interacting() function selects layer1 polygons that touch or overlap layer2 data.
An optional argument specifies the number of layer2 polygons or edges that must be
interacted with. The complement of this function is the not_interacting() function.

Syntax
interacting(
layer1 = polygon_layer,
layer2 = data_layer,
count = integerconstraint, //optional
include_touch = NONE | EDGE | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL, ODD, EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

not_interacting(
layer1 = polygon_layer,
layer2 = data_layer,
count = integerconstraint, //optional
include_touch = NONE | EDGE | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL, ODD, EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

count
Optional. Specifies the number of layer2 polygons or edges that must be interacted
with. Edges are counted individually; there is no recognition of edge chains. The default
is >0.

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-838
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-271 shows the effect of the count argument settings with the interacting()
function.
Figure 2-271 count Argument Example With the interacting() Function

count > 0 count = 1 count > 1


(Default)

layer1 layer2 Result

Figure 2-272 shows the effect of the count argument settings with the
not_interacting() function.

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-839
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-272 count Argument Example With the not_interacting() Function

count > 0 count = 1 count > 1


(Default)
layer1 layer2 Result

include_touch
Optional. When layer2 is a polygon layer, layer1 polygons that share active area with
layer2 are always selected. The layer1 polygons that share no active area with layer2
can optionally be selected based on outside touches, as specified by this argument.
When layer2 is an edge layer, layer1 polygons that share active area with a layer2
edges are always selected. The layer1 polygons that share no active area with layer2
edges, can optionally be selected based on edges that interact their boundary, as
specified by this argument.
The default is EDGE.
❍ NONE. Specifies that neither either point touch nor line touch causes a polygon to be
selected.
❍ EDGE. Edge touch causes a polygon to be selected.

❍ ALL. All touches (edge and point) cause a polygon to be selected.


Figure 2-273 shows the effect of the include_touch argument settings with the
interacting() function.

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-840
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-273 include_touch Argument Example With the interacting() Function

NONE EDGE ALL


(Default)

layer1 layer2 layer2 shapes taken


into consideration
Figure 2-274 shows the effect of the include_touch argument settings with the
not_interacting() function.

Figure 2-274 include_touch Argument Example With the not_interacting() Function

NONE EDGE ALL


(Default)

layer1 layer2 layer2 shapes taken


into consideration

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-841
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

count_parity
Optional. Specifies the parity of the number of layer2 polygons that must touch layer1
polygons. The default is ALL.
❍ EVEN. Specifies that the layer1 polygons must have an even number of interactions
with layer2 data.
❍ ODD. Specifies that the layer1 polygons must have an odd number of interactions
with layer2 data.
❍ ALL. Does not check the parity based on the number of interactions.
The count argument can be used with the count_parity argument. For example, when
count = [4, 9] and count_parity is EVEN, the layer1 polygons that interact with four,
six, or eight layer2 polygons are selected.
Figure 2-275 shows an example of two interacting layers.
Figure 2-275 count_parity Argument Example

L1

L2

For the following command, the result is shown in Figure 2-276.


interacting(L1, L2, count = [2, 5], count_parity = ODD)

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-842
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-276 Result of count_parity Argument Example

L1

L2

result

count_by
Optional. Provides selection by net feature. The default is SHAPE.
❍ NET. Selects a layer1 polygon if it interacts with distinct nets on the layer2 layer the
number of times specified by the count argument.
❍ SHAPE. Selects a layer1 polygon if it interacts the layer2 layer the number of times
specified by the count argument.
Refer to Figure 2-277 for the following examples.
Figure 2-277 count_by Argument Example

L1

L2

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-843
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The following commands select polygon A of layer L1.


❍ Net 3 is not counted because it is a point touch. Nets 1, 2, and 4 are each counted
one time because the count_by argument is NET. Therefore, only polygon A meets
the count=2 restriction.
interacting(L1, L2, count==2, count_by=NET, connect_sequence=cdb)

❍ Net 3 is not counted because it is a point touch. Nets 1, 2, and 4 are each counted
two times. Therefore, only polygon A meets the count=4 restriction.
interacting(L1, L2, count==4)

connect_sequence
Optional. Specifies the connect database that has the layer2 connection. The database
is used when the count_by argument is NET.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the following example, all data from layerA that interacts with black_edge is selected.
Result = layerA interacting black_edge;

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-844
IC Validator Reference Manual Version N-2017.12-SP2

Input

layerA

Output black_edge

Result

In the following example, all data from layerA that interacts with layerB is selected.
Result = layerA interacting layerB;

Input

layerA

Output layerB

Result

See Also
inside() and not_inside()
touching() and not_touching()

Chapter 2: Runset Functions: A - I


interacting() and not_interacting() 2-845
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

interacting_edge() and not_interacting_edge()


The interacting_edge() function selects entire layer1 edges that touch or overlap
layer2 polygons or edges. The complement of this function is the
not_interacting_edge() function.

Syntax
interacting_edge(
layer1 = data_layer,
layer2 = data_layer,
include_touch = EDGE | ALL, //optional
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_interacting_edge(
layer1 = data_layer,
layer2 = data_layer,
include_touch = EDGE | ALL, //optional
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

include_touch
Optional. Specifies the touches that cause a layer1 edge to be selected. The default is
ALL.
When layer2 is a polygon layer, layer1 edges that have any portion inside layer2,
including inside coincident, are always selected. For interacting edges that do not have
any portion inside layer2:
❍ EDGE. Outside edge touch causes a layer1 edge to be selected.

❍ ALL. All outside touches (edge and point) cause a layer1 edge to be selected.

Chapter 2: Runset Functions: A - I


interacting_edge() and not_interacting_edge() 2-846
IC Validator Reference Manual Version N-2017.12-SP2

When layer2 is an edge layer, layer1 edges that cross a layer2 edge are always
selected. For interacting edges that do not cross a layer2 edge.
❍ EDGE. Edge touch causes a layer1 edge to be selected.

❍ ALL. All outside touches (edge and point) cause a layer1 edge to be selected.

count
Optional. Specifies the number of interactions that must occur for an edge to be selected.
If layer2 is a polygon layer, then polygons are counted. If layer2 is an edge layer, then
individual edges are counted. See “Constraints” on page A-4 for more information. The
default is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
This example shows layer1 as a polygon layer. The results are the same if magenta is an
edge layer.
green = magenta interacting_edge red_polygons;

Chapter 2: Runset Functions: A - I


interacting_edge() and not_interacting_edge() 2-847
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Input Output 1 Output 2

include_touch = edge include_touch = all

See Also
inside_touching_edge() and not_inside_touching_edge()
outside_touching_edge() and not_outside_touching_edge()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


interacting_edge() and not_interacting_edge() 2-848
IC Validator Reference Manual Version N-2017.12-SP2

interacting_error() and not_interacting_error()


The interacting_error() function selects entire layer1 errors that touch or overlap
layer2 polygons. The complement of this function is the not_interacting_error()
function.

Syntax
interacting_error(
layer1 = error_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_interacting_error(
layer1 = error_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
include_touch = NONE | EDGE | ALL, //optional
error_shape = EDGES | REGION, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the error layer.

layer2
Required. Specifies the polygon layer.

count
Optional. Specifies the number of layer2 polygons that must be interacted with. See
“Constraints” on page A-4 for more information. The default is >0.

include_touch
Optional. Specifies the outside touches that are included in the interaction check
between the primary layer and the secondary layers. The default is EDGE.

Chapter 2: Runset Functions: A - I


interacting_error() and not_interacting_error() 2-849
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NONE. Includes neither point touch nor line touch.

❍ EDGE. Includes edge touch.

❍ ALL. Includes all touches (edge and point).

error_shape
Optional. Specifies how errors are treated in the interaction check between the primary
layer and the secondary layer. The default is EDGES.
❍ EDGES. Recognizes interaction only with the violating edges. The errors are treated as
pairs of edges, and if either edge meets the interaction specification, the error is
selected. A center-to-center error is treated as a pair of endpoints. If either endpoint
meets the interaction specification, the error is selected.
❍ REGION. Recognizes interaction with any part of the violating region. The errors are
treated as polygons, as created when the output_type argument is REGION in the
spacing check functions that produce polygons. A center-to-center error is treated as
an edge. If the edge meets the interaction specification, the error is selected.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


interacting_error() and not_interacting_error() 2-850
IC Validator Reference Manual Version N-2017.12-SP2

Examples
This example shows red errors from layer1 that interact with green polygons from layer2.
Depending on the settings of the error_shape and include_touch arguments, some of the
errors are output (YES) and other errors are not output (NO).

Chapter 2: Runset Functions: A - I


interacting_error() and not_interacting_error() 2-851
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
inside_touching_edge() and not_inside_touching_edge()
outside_touching_edge() and not_outside_touching_edge()
touching_edge() and not_touching_edge()

Chapter 2: Runset Functions: A - I


interacting_error() and not_interacting_error() 2-852
IC Validator Reference Manual Version N-2017.12-SP2

internal_corner1()
The internal_corner1() function creates polygons that are formed by pairs of violation
corners. It measures inside-to-inside spacing on layer1 based on distance specified.
Other arguments define various geometric conditions for measuring the point-to-point
distance between the corners. The measurements are limited to corners that are on the
same polygon, and are never made through obstructions.
The output consists of rectangles that are the extents of the point-to-point violations. In the
case where the violation is horizontal or vertical, the output rectangle is generated by
expanding the violation three times the input library resolution on both sides.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the internal_corner1() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Chapter 2: Runset Functions: A - I


internal_corner1() 2-853
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
internal_corner1(
layer1 = data_layer,
distance = doubleconstraint,
type = {CONCAVE_TO_CONCAVE,
CONCAVE_TO_EDGE, CONVEX_TO_CONCAVE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL, SQUARE, //optional
concave_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
convex_to_concave_boundary = INCLUSIVE, EXCLUSIVE, //optional
edge_endpoints = CORNER | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
concave_to_concave_boundary argument.

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is inclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,


where two edges from the corners are parallel and have a perpendicular projection

Chapter 2: Runset Functions: A - I


internal_corner1() 2-854
IC Validator Reference Manual Version N-2017.12-SP2

length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The region argument is not used for this corner type.
The edge_endpoints and angle arguments are ALL.
Figure 2-278 shows the effect of the type argument settings.
Figure 2-278 type Argument Examples

CONCAVE_TO_CONCAVE CONVEX_TO_CONCAVE

CONCAVE_TO_EDGE PARALLEL_POINT_PROJECTION

layer1 Result

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

Chapter 2: Runset Functions: A - I


internal_corner1() 2-855
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-279 shows the effect of the region argument settings.
Figure 2-279 region Argument Examples

layer1

Result
RADIAL SQUARE

concave_to_concave_boundary
Optional. For concave-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE_PARALLEL applies only
when two edges from the corners are parallel and not collinear. The default is
EXCLUSIVE.
Figure 2-280 shows the effect of the concave_to_concave_boundary argument
settings.
Figure 2-280 concave_to_concave_boundary Argument Examples

layer1

Result
EXCLUSIVE INCLUSIVE_PARALLEL

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.

Chapter 2: Runset Functions: A - I


internal_corner1() 2-856
IC Validator Reference Manual Version N-2017.12-SP2

Note:
This function never measures through obstructions, therefore convex
corner-check-zone boundaries are always exclusive.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when the input layer is an edge layer.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-281 shows the effect of the edge_endpoints argument settings.
Figure 2-281 edge_endpoints Argument Examples

layer1

Result
CORNER ALL

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


internal_corner1() 2-857
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner1()
internal_corner1_edge()

Chapter 2: Runset Functions: A - I


internal_corner1() 2-858
IC Validator Reference Manual Version N-2017.12-SP2

internal_corner1_edge()
The internal_corner1_edge() function creates edges that consist of pairs of violation
corners. It measures inside-to-inside spacing on layer1 based on distance specified.
Other arguments define various geometric conditions for measuring the point-to-point
distance between the corners.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner.
For edge input, the internal_corner1_edge() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
internal_corner1_edge(
layer1 = data_layer,
distance = doubleconstraint,
type = {CONCAVE_TO_CONCAVE,
CONCAVE_TO_EDGE, CONVEX_TO_CONCAVE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-859
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

region = RADIAL, SQUARE, //optional


concave_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
convex_to_concave_boundary = INCLUSIVE, EXCLUSIVE, //optional
edge_endpoints = CORNER | ALL, //optional
output_type = FAIL | POINT_TO_POINT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
concave_to_concave_boundary argument.

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is inclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,


where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The region argument is not used for this corner type.
The edge_endpoints and angle arguments are ALL.
Figure 2-282 shows the effect of the type argument settings.

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-860
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-282 type Argument Examples

CONCAVE_TO_CONCAVE CONVEX_TO_CONCAVE

CONCAVE_TO_EDGE PARALLEL_POINT_PROJECTION

layer1 Result

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-283 shows the effect of the region argument settings.

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-861
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-283 region Argument Examples

layer1

Result
RADIAL SQUARE

concave_to_concave_boundary
Optional. For concave-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE applies only when two
edges from the corners are parallel and not collinear. The default is EXCLUSIVE.
Figure 2-284 shows the effect of the concave_to_concave_boundary argument
settings. The red outlines highlight the selected boundaries.
Figure 2-284 concave_to_concave_boundary Argument Examples

layer1

Result
EXCLUSIVE INCLUSIVE_PARALLEL

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.
Note:
This function never measures through obstructions, therefore convex
corner-check-zone boundaries are always exclusive.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when the input layer is an edge layer.

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-862
IC Validator Reference Manual Version N-2017.12-SP2

❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-285 shows the effect of the edge_endpoints argument settings.
Figure 2-285 edge_endpoints Argument Examples

layer1

Result
CORNER ALL

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. The orientation of POINT_TO_POINT edges from a
layer1 check is arbitrary. POINT_TO_POINT creates an orphan edge layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-863
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner1_edge()
internal_corner1()

Chapter 2: Runset Functions: A - I


internal_corner1_edge() 2-864
IC Validator Reference Manual Version N-2017.12-SP2

internal_corner2()
The internal_corner2() function creates polygons that are formed by pairs of violation
corners. It measures inside-to-inside spacing between two layers based on the distance
specified. The arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
The output consists of rectangles that are the extents of the point-to-point violations. In the
case where the violation is horizontal or vertical, the output rectangle is generated by
expanding the violation three times the input library resolution on both sides.
The corner-to-corner distance is checked only when each corner falls within the check zone
of the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

The corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. A portion of the edge must fall in the corner
projection zone, and neither of the edges forming the corner can be parallel to the edge.
For edge input, the internal_corner2() function optionally includes terminal edge
endpoints as corners; there is no adjacent edge. In this case, the angle argument is not
used. The check zone of an edge endpoint with no adjacent edge is determined by the
following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Chapter 2: Runset Functions: A - I


internal_corner2() 2-865
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
internal_corner2(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
type = {CONCAVE_TO_CONCAVE,
CONCAVE_TO_EDGE, CONVEX_TO_CONCAVE,
CONVEX_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional
angle = ALL | RIGHT, //optional
region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
concave_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | OUTSIDE |
ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
concave_to_concave_boundary argument.

Chapter 2: Runset Functions: A - I


internal_corner2() 2-866
IC Validator Reference Manual Version N-2017.12-SP2

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; concave


corner check zone is exclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is inclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for concave corners is inclusive, whereas the
boundary for convex corners is exclusive.
Note:
The region argument is not used for this corner type.
The edge_endpoints and angle arguments are ALL.
Figure 2-286 shows the effect of the type argument settings.
Figure 2-286 type Argument Examples

CONCAVE_TO_CONCAVE CONVEX_TO_CONCAVE

CONCAVE_TO_EDGE PARALLEL_POINT_PROJECTION

layer1 layer2 Result

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

Chapter 2: Runset Functions: A - I


internal_corner2() 2-867
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.
❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-287 shows the effect of the region argument settings.
Figure 2-287 region Argument Examples

layer1

layer2

Result
RADIAL SQUARE

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. The default is EXCLUSIVE.
Note:
This function never measures through obstructions, therefore convex corner
check-zone boundaries are always exclusive.

concave_to_concave_boundary
Optional. For concave-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE applies only when two
edges from the corners are parallel and not collinear. The default is EXCLUSIVE.
Figure 2-288 shows the effect of the concave_to_concave_boundary argument
settings.

Chapter 2: Runset Functions: A - I


internal_corner2() 2-868
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-288 concave_to_concave_boundary Argument Examples

layer1

layer2

EXCLUSIVE INCLUSIVE_PARALLEL Result

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-289 shows the effect of the edge_endpoints argument settings.
Figure 2-289 edge_endpoints Argument Examples

layer1

layer2

Result
CORNER ALL

Chapter 2: Runset Functions: A - I


internal_corner2() 2-869
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.


Figure 2-290 shows the effect of the edge_endpoints argument settings.
Figure 2-290 connectivity Argument Examples

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ OUTSIDE. Looks outside both layer1 and layer2.

❍ ALL. Looks through all edges.

Chapter 2: Runset Functions: A - I


internal_corner2() 2-870
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner2()
internal_corner2_edge()

Chapter 2: Runset Functions: A - I


internal_corner2() 2-871
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal_corner2_edge()
The internal_corner2_edge() function creates edges that consist of pairs of violation
corners. It measures inside-to-inside spacing between two layers based on the distance
specified. Other arguments define various geometric conditions for measuring the
point-to-point distance between the corners.
Corner-to-corner distance is checked only when each corner falls within the check zone of
the other corner.
The check zone for convex corners (interior angle of less than 180 degrees) is determined
by the following steps:
1. For each adjacent edge of the corner, draw a perpendicular line toward the check side.
See “Spacing Checks” on page A-18 for more information about the check side.
2. The check zone is bounded by the two lines.

The check zone for concave corners (exterior angle of less than 180 degrees) is determined
by the following steps:
1. Extend each adjacent edge of the corner.
2. The check zone is bounded by the two lines.

Corner-to-edge distance is checked only when the corner falls in the perpendicular
projection region of the edge, and the perpendicular projection point from the edge to the
corner falls in the projection zone of the corner. A portion of the edge must fall in the corner
projection zone, and neither of the edges forming the corner can be parallel to the edge.
For edge input, the internal_corner2_edge() optionally includes terminal edge endpoints
as corners; there is no adjacent edge. In this case, the angle argument is not used. The
check zone of an edge endpoint with no adjacent edge is determined by the following steps:
1. Draw a line extending the edge beyond the endpoint.
2. From the endpoint, draw a perpendicular line toward the check side of the edge.
3. The check zone is bounded by the two lines. The boundary defined by the line extending
the edge is always inclusive.

Syntax
internal_corner2_edge(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
type = {CONCAVE_TO_CONCAVE,
CONVEX_TO_EDGE,
PARALLEL_POINT_PROJECTION}, //optional

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-872
IC Validator Reference Manual Version N-2017.12-SP2

angle = ALL | RIGHT, //optional


region = RADIAL | SQUARE, //optional
convex_to_concave_boundary = INCLUSIVE | EXCLUSIVE, //optional
concave_to_concave_boundary = INCLUSIVE_PARALLEL | EXCLUSIVE,
//optional
edge_endpoints = CORNER | ALL, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL,
//optional
connect_sequence = connect_database, //optional
look_thru = NONE | COINCIDENT | OUTSIDE |
ALL, //optional
output_layer = LAYER1 | LAYER2, //optional
output_type = FAIL | POINT_TO_POINT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

type
Optional. Specifies the corner types included in the spacing check. By default, the
IC Validator tool selects all types.
❍ CONCAVE_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
concave_to_concave_boundary argument.

❍ CONCAVE_TO_EDGE. Specifies that the edge projection region is inclusive; concave


corner check-zone is exclusive.
❍ CONVEX_TO_CONCAVE. Specifies that the check-zone boundary is controlled by the
convex_to_concave_boundary argument.

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-873
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CONVEX_TO_EDGE. Specifies that the edge projection region is inclusive; convex


corner check zone is exclusive.
❍ PARALLEL_POINT_PROJECTION. Specifies convex to concave or convex to convex,
where two edges from the corners are parallel and have a perpendicular projection
length equal to 0. The boundary for convex corners is inclusive, whereas the
boundary for concave corners is exclusive.
Note:
The region argument is not used for this corner type.
The edge_endpoints and angle arguments are ALL.
Figure 2-291 shows the effect of the type argument settings. The red outlines highlight
the selected boundaries.
Figure 2-291 type Argument Examples

CONCAVE_TO_CONCAVE CONVEX_TO_CONCAVE

CONCAVE_TO_EDGE PARALLEL_POINT_PROJECTION

layer1 layer2 Result Areas shown for illustration

angle
Optional. Specifies the angles of the corners that are included in the spacing check. The
default is ALL.
❍ ALL. Specifies that all angles are checked.

❍ RIGHT. Specifies that only right angles are checked.

region
Optional. Specifies the shape of the corner-check region. Intrusion into the corner-check
region results in a spacing violation. The default is RADIAL.

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-874
IC Validator Reference Manual Version N-2017.12-SP2

❍ RADIAL. Connects check-zone boundaries with a radial arc at the specified distance
from the corner. The boundary of the arc is inclusive or exclusive depending on the
distance argument.

❍ SQUARE. Defines the check region with two squares. For each corner check-zone
boundary, a square equal in size to the specified distance is placed point-touching
the corner. One edge is coincident to the boundary. For right corners, the two boxes
are coincident. The far boundaries of the boxes are inclusive or exclusive depending
on the distance argument.
Figure 2-296 shows the effect of the region argument settings.
Figure 2-292 region Argument Examples

RADIAL SQUARE

layer1 layer2 Result Areas shown for illustration

convex_to_concave_boundary
Optional. For convex-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE applies only when two
edges from the corners are parallel and not collinear. The default is EXCLUSIVE.
Figure 2-293 shows the effect of the concave_to_concave_boundary argument
settings.
Figure 2-293 concave_to_concave_boundary Argument Examples

EXCLUSIVE INCLUSIVE_PARALLEL

layer1 layer2 Result Areas shown for illustration

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-875
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

concave_to_concave_boundary
Optional. For concave-to-concave measurements, specifies whether the corner
check-zone boundaries are exclusive or inclusive. INCLUSIVE applies only when two
edges from the corners are parallel and not collinear. The default is EXCLUSIVE.

edge_endpoints
Optional. Specifies the edge endpoints measured. The default is CORNER.
Note:
This argument is used only when an input layer is an edge layer.
■ If layer1 is an edge layer, then the argument applies to layer1.
■ If layer2 is an edge layer, then the argument applies to layer2.
■ If layer1 and layer2 are edge layers, then the argument applies to both layers.
❍ CORNER. Checks only the endpoints that form a corner.

❍ ALL. Checks all endpoints, including those that have no adjacent edge.
Figure 2-289 shows the effect of the edge_endpoints argument settings.
Figure 2-294 edge_endpoints Argument Examples

CORNER ALL

layer1 layer2 Result Areas shown for illustration

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Measures corners from polygons that are on the same net.

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-876
IC Validator Reference Manual Version N-2017.12-SP2

❍ DIFFERENT_NET. Measures corners from polygons that are on different nets.

❍ ALL. Measures all edges regardless of connectivity.


Figure 2-295 shows the effect of the edge_endpoints argument settings.
Figure 2-295 connectivity Argument Examples

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result Areas shown for illustration

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges, including edge endpoints.

❍ COINCIDENT. Looks through inside coincident edges.

❍ OUTSIDE. Looks outside both layer1 and layer2.

❍ ALL. Looks through all edges.

output_layer
Optional. Specifies the layer whose edges are output for the violations. The default is
LAYER1.

❍ LAYER1. Specifies that only layer1 edges are output.

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-877
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ LAYER2. Specifies that only layer2 edges are output.

output_type
Optional. Specifies the edge types that are output. The default is FAIL.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ POINT_TO_POINT. Specifies that violations are output as an edge connecting the two
corners that are in violation. Edge endpoints are ordered from layer1 to layer2.
POINT_TO_POINT creates an orphan edge layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
external_corner2_edge()
internal_corner2()

Chapter 2: Runset Functions: A - I


internal_corner2_edge() 2-878
IC Validator Reference Manual Version N-2017.12-SP2

internal1()
The internal1() function creates polygons that are formed by pairs of violation edges. It
measures inside-to-inside spacing on one layer based on the specified distance. The
arguments define various geometric conditions for measuring the distance between the
edges. This check is limited to edges that are on the same polygon. For edge layers,
polygon membership is determined by layer ancestry.

Syntax
internal1(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double, //optional
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON
//optional
);

Returns
polygon layer or error result

Chapter 2: Runset Functions: A - I


internal1() 2-879
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


internal1() 2-880
IC Validator Reference Manual Version N-2017.12-SP2

Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.
Figure 2-296 shows the effect of the extension argument settings.
Figure 2-296 extension Argument Examples

layer1

NONE SQUARE RADIAL Result

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.
Figure 2-297 shows the effect of the extension_distance argument settings.
Figure 2-297 extension_distance Argument Examples

layer1

0.0 0.5 1.0


(Default) Result

Chapter 2: Runset Functions: A - I


internal1() 2-881
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


Figure 2-298 shows the effect of the orientation argument settings.
Figure 2-298 orientation Argument Examples

layer1
ACUTE PARALLEL PERPENDICULAR ACUTE and
PARALLEL
(Default) Result

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.

Chapter 2: Runset Functions: A - I


internal1() 2-882
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-299 shows the effect of the intersecting argument settings.


Figure 2-299 intersecting Argument Examples

layer1

Result

PERPENDICULAR ACUTE Result


(Default)

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.

Chapter 2: Runset Functions: A - I


internal1() 2-883
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-300 shows the effect of the projection argument settings.


Figure 2-300 projection Argument Examples

IN OUT ON IN, OUT, and ON


(Default)

layer1 Result Collinear indicator

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

Chapter 2: Runset Functions: A - I


internal1() 2-884
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-301 shows the effect of the projection_length argument settings.


Figure 2-301 projection_length Argument Examples

layer1

Result
NONE <0.2 >0.2

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


Figure 2-302 shows the effect of the orthogonal argument settings.

Chapter 2: Runset Functions: A - I


internal1() 2-885
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-302 orthogonal Argument Examples

NEITHER ONE ALL BOTH


(Default)
layer1 Result

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.

Chapter 2: Runset Functions: A - I


internal1() 2-886
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-303 shows the effect of the direction argument settings.


Figure 2-303 direction Argument Examples

ORTHOGONAL HORIZONTAL VERTICAL NEGATIVE_45 ALL


(Default)

layer1 Result

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
Figure 2-304 shows the effect of the corner_configuration argument settings.

Chapter 2: Runset Functions: A - I


internal1() 2-887
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-304 corner_configuration Argument Examples

ALL CORNER_TO_CORNER CORNER_TO_EDGE CORNER_TO_ NOT_CORNER


(Default) CORNER_OR_EDGE

layer1 Result

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
Figure 2-305 shows the effect of the extension_look_past argument settings.
Figure 2-305 extension_look_past Argument Examples

layer1

NONE POINT_TO_POINT Result


(Default)

extension_obstructions
Optional. Specifies how obstructions are processed in the check region extension. Some
endpoint violations might be undesirable even though they are unobstructed. This
argument specifies how aggressively the check finds and refines endpoint violations in
accordance with obstructed regions. The default is POINT_TO_POINT.

Chapter 2: Runset Functions: A - I


internal1() 2-888
IC Validator Reference Manual Version N-2017.12-SP2

❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is


obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
Figure 2-306 shows the effect of the extension_obstructions argument settings.
Figure 2-306 extension_obstructions Argument Example

layer1

ALL POINT_TO_POINT
(Default) Result

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. The default is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an outside-to-outside point touch.
The format of the violation is determined by the point_touch_shape and
shape_size arguments. The POINT_TOUCH argument is not available for edge input.
Figure 2-307 shows the effect of the relational argument settings.
Figure 2-307 relational Argument Example

layer1

Result
POINT_TOUCH

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The violation region is approximated with edges that are either

Chapter 2: Runset Functions: A - I


internal1() 2-889
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.
❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.
Figure 2-308 shows the effect of the point_touch_shape argument settings.
Figure 2-308 point_touch_shape Argument Examples

layer1

SQUARE EXTENTS Result


(Default)

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing
distance. This value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
Figure 2-309 shows the effect of the shape_size argument settings.
Figure 2-309 shape_size Argument Examples

(Default) 0.05 0.4

layer1 Result

Chapter 2: Runset Functions: A - I


internal1() 2-890
IC Validator Reference Manual Version N-2017.12-SP2

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.
❍ CENTERLINE. Reports violations as an expanded line at the center of the projection
region. The midpoints of the sides of the violation region form a line that is expanded
in both directions by width/2. When the output_type argument is CENTERLINE, only
parallel spacing is supported.
❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when extension is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width value. Violations are oriented along the line.

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.
Figure 2-310 shows the effect of the output_type argument settings.
Figure 2-310 output_type Argument Examples

layer1

Result

REGION CENTERLINE EXTENTS


(Default) Result

Chapter 2: Runset Functions: A - I


internal1() 2-891
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is .001.
Figure 2-311 shows the effect of the width argument settings.
Figure 2-311 width Argument Examples

layer1

Result

0.001 0.1 0.5


Result
(Default)

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.

Chapter 2: Runset Functions: A - I


internal1() 2-892
IC Validator Reference Manual Version N-2017.12-SP2

❍ JOGGING_EDGE. Measures violations by accumulating a projection length for


interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.
Figure 2-312 shows the effect of the cumulative_projection_length argument
settings.
Figure 2-312 cumulative_projection_length Argument Examples

layer1

NONE SAME_EDGE JOGGING_EDGE


(Default) Result

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection

Chapter 2: Runset Functions: A - I


internal1() 2-893
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The orthogonal argument is not ignored.
See the intersection_angle argument of the internal2() function for an example.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

membership
Optional. Specifies how to check between edges that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is SAME_POLYGON.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 2: Runset Functions: A - I


internal1() 2-894
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Distance
Error1 @= {@ "This is an example of an internal1() function
min spacing 0.5";
internal1(met1, distance <= 0.5, extension = RADIAL );
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
internal1(met1, distance < 0.5, extension = NONE);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1" + "measure only parallel edges";
internal1(met1, distance < 0.5, extension = RADIAL,
orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1" +
"measure all parallel angled edges";
internal1(met1, distance < 0.5, extension = RADIAL,
orthogonal = BOTH, orientation = {PARALLEL});
};

Output type
c1 = internal1(met1, distance < 0.5, extension = RADIAL,
output_type = CENTERLINE);

See Also
internal1_edge() and not_internal1_edge()
wide()

Chapter 2: Runset Functions: A - I


internal1() 2-895
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal1_edge() and not_internal1_edge()


The internal1_edge() function selects the portion of layer1 edges that violates the
spacing constraints. It measures inside-to-inside spacing on one layer based on the
specified distance. The arguments define various geometric conditions for measuring the
distance between the edges. This check is limited to edges that are on the same polygon.
For edge layers, polygon membership is determined by layer ancestry. The complement of
this function is the not_internal1_edge() function.

Syntax
internal1_edge(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
spacing_edge = ALL | PROJECTING, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
output_type = FAIL | CENTERLINE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
output_side = ALL | HIGH | LOW //optional
);

not_internal1_edge(
layer1 = data_layer,
distance = doubleconstraint,

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-896
IC Validator Reference Manual Version N-2017.12-SP2

extension = NONE | NONE_INCLUSIVE | RADIAL |


SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
spacing_edge = ALL | PROJECTING, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
output_side = ALL | HIGH | LOW //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-897
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked. The default is RADIAL.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.
Figure 2-313 shows the effect of the extension argument settings.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-898
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-313 extension Argument Examples

layer1

Result

Areas shown
NONE SQUARE RADIAL for illustration

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.
Figure 2-314 shows the effect of the extension_distance argument settings.
Figure 2-314 extension_distance Argument Examples

layer1

Result

0.0 0.5 1.0 Areas shown


(Default) for illustration

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-899
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


Figure 2-315 shows the effect of the orientation argument settings.
Figure 2-315 orientation Argument Examples

ACUTE PARALLEL PERPENDICULAR ACUTE and


PARALLEL
(Default)
layer1 Result Areas shown for illustration

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
Figure 2-316 shows the effect of the intersecting argument settings.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-900
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-316 intersecting Argument Examples

layer1

PERPENDICULAR ACUTE Result


(Default)

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
Figure 2-317 shows the effect of the projection argument settings.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-901
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-317 projection Argument Examples

IN OUT ON IN, OUT, and ON


(Default)

layer1 Result Collinear indicator Areas shown for illustration

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-902
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-318 shows the effect of the projection_length argument settings.


Figure 2-318 projection_length Argument Examples

layer1

Result
(Default) <0.2 >0.2

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-903
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-319 shows the effect of the orthogonal argument settings.


Figure 2-319 orthogonal Argument Examples

NEITHER ONE ALL BOTH


(Default)

layer1 Result Areas shown for illustration

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-904
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-320 shows the effect of the direction argument settings.


Figure 2-320 direction Argument Examples

ORTHOGONAL HORIZONTAL VERTICAL NEGATIVE_45 ALL


(Default)

layer1 Result Areas shown for illustration

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-905
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-321 shows the effect of the corner_configuration argument settings.


Figure 2-321 corner_configuration Argument Examples

ALL CORNER_TO_CORNER CORNER_TO_EDGE CORNER_TO_ NOT_CORNER


(Default) CORNER_OR_EDGE

layer1 Result Areas shown for illustration

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
Figure 2-322 shows the effect of the extension_look_past argument settings.
Figure 2-322 extension_look_past Argument Examples

layer1

Result

NONE POINT_TO_POINT Areas shown


(Default) for illustration

extension_obstructions
Optional. Specifies how obstructions are processed in the check region extension. Some
endpoint violations might be undesirable even though they are unobstructed. This
argument specifies how aggressively the check finds and refines endpoint violations in
accordance with obstructed regions. The default is POINT_TO_POINT.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-906
IC Validator Reference Manual Version N-2017.12-SP2

❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is


obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
Figure 2-323 shows the effect of the extension_obstructions argument settings.
Figure 2-323 extension_obstructions Argument Example

layer1

Result

ALL POINT_TO_POINT Areas shown


(Default) for illustration

relational
Optional. Specifies if a check outputs violations based on the relationship of the
polygons. Connectivity is considered when generating these violations. The default is no
additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an inside-to-inside point touch. The
length of the violation is equal to the maximum of the distance constraint, with a
minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution. The
POINT_TOUCH argument is not available for edge input.
Figure 2-324 shows the effect of the relational argument settings.
Figure 2-324 relational Argument Example

layer1

Result
POINT_TO_POINT

spacing_edge
Optional. Specifies the violation edges that are selected from spacing violations. Each
spacing violation consists of one edge that creates a projection region, and another edge
that falls inside that region. The default is ALL.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-907
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ALL. Outputs all violation edges.

❍ PROJECTING. Specifies that only the violation edge that created the projection region
is output. For nonparallel violations, the violation edge is the edge that is
perpendicular to the violation.
Note:
The projection region in parallel violations is commutative, therefore PROJECTING
has no effect on parallel violations.
Endpoint violations have no projecting edge, so they are not reported with this
setting.
Figure 2-325 shows the effect of the spacing_edge argument settings.
Figure 2-325 spacing_edge Argument Examples

layer1

ALL PROJECTING Result


(Default)

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-908
IC Validator Reference Manual Version N-2017.12-SP2

❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.
Figure 2-326 shows the effect of the cumulative_projection_length argument
settings.
Figure 2-326 cumulative_projection_length Argument Examples

layer1

NONE SAME_EDGE JOGGING_EDGE Result


(Default)

output_type
Optional. Specifies the type of output generated. The default is FAIL.
Note:
The output_type argument is not available for the not_internal1_edge()
function.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Outputs spacing violations as lines at the center of the projection
region. A line is two points connected with no specific order. The midpoints of the
sides of the violation region are used to create the lines. When the output_type
argument is CENTERLINE, only parallel spacing is supported.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-909
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The orthogonal argument is not ignored.
See the intersection_angle argument of internal2_edge() and
not_internal2_edge() functions for an example.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-910
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

membership
Optional. Specifies how to check between edges that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is SAME_POLYGON.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.

output_side
Optional. Specifies to output only the check edges on the specified side of any violation
projected from an orthogonal edge. The default is ALL.
Note:
To use the HIGH or LOW options,
■ The direction argument needs to be HORIZONTAL or VERTICAL.
■ The extension argument needs to be NONE.
❍ ALL. Outputs all check edges

❍ HIGH. Outputs all check edges except:

■ For any violation projected from a horizontal edge, only the edge on the top side
is output.
■ For any violation projected from a vertical edge, only the edge on the right side is
output.
❍ LOW. Outputs all check edges.

■ For any violation projected from a horizontal edge, only the edge on the bottom
side is output.
■ For any violation projected from a vertical edge, only the edge on the left side is
output.
For examples, see the output_side argument of the enclose_edge() and
not_enclose_edge() functions.

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-911
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Distance
Error1 @= {@ "This is an example of the internal1_edge() function
min spacing 0.5";
internal1_edge(met1, distance <= 0.5 );
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
internal1_edge(met1, distance < 0.5, extension = NONE);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1" + "measure only parallel edges";
internal1_edge(met1, distance < 0.5, orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1" +
"measure all parallel angled edges";
internal1_edge(met1, distance < 0.5, orthogonal = BOTH,
orientation = {PARALLEL});
};

See Also
internal1()
wide_edge()

Chapter 2: Runset Functions: A - I


internal1_edge() and not_internal1_edge() 2-912
IC Validator Reference Manual Version N-2017.12-SP2

internal1_error()
The internal1_error() function measures inside-to-inside spacing between the edges of
one layer based on the specified distance. The arguments define various geometric
conditions for measuring the distance between the layer edges. The output is unmerged
errors.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Errors output to the error database consist of pairs of violation edges.

Syntax
internal1_error(
layer1 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE |
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
membership = ALL | SAME_POLYGON | DIFFERENT_POLYGON,
//optional
relational = {POINT_TOUCH} //optional
);

Returns
error layer or error result

Chapter 2: Runset Functions: A - I


internal1_error() 2-913
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
layer1
Required. Specifies the edge or polygon layer.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


internal1_error() 2-914
IC Validator Reference Manual Version N-2017.12-SP2

Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.
See the examples for the extension_distance argument of the internal1() function
for more information.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


See the examples for the orientation argument of the internal1() function for more
information.

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
See the examples for the intersecting argument of the internal1() function for more
information.

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.

Chapter 2: Runset Functions: A - I


internal1_error() 2-915
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.
See the examples for the projection argument of the internal1() function for more
information.

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
See the examples for the projection_length argument of the internal1() function
for more information.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.

Chapter 2: Runset Functions: A - I


internal1_error() 2-916
IC Validator Reference Manual Version N-2017.12-SP2

See the examples for the orthogonal argument of the internal1() function for more
information.

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See the examples for the direction argument of the internal1() function for more
information.

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See the examples for the corner_configuration argument of the internal1()
function for more information.

Chapter 2: Runset Functions: A - I


internal1_error() 2-917
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.
See the examples for the extension_look_past argument of the internal1()
function for more information.

extension_obstructions
Optional. Specifies how obstructions are processed in the check region extension. Some
endpoint violations might be undesirable even though they are unobstructed. This
argument specifies how aggressively the check finds and refines endpoint violations in
accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See the examples for the extension_obstructions argument of the internal1()
function for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

Chapter 2: Runset Functions: A - I


internal1_error() 2-918
IC Validator Reference Manual Version N-2017.12-SP2

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The orthogonal argument is not ignored.

Chapter 2: Runset Functions: A - I


internal1_error() 2-919
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the intersection_angle argument of the internal2() and internal2_edge()


and not_internal2_edge() functions for examples.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

membership
Optional. Specifies how to check between edges that are on the same polygon or
different polygons. For edge layers, polygon membership is determined by layer
ancestry. The default is SAME_POLYGON.
❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.

❍ DIFFERENT_POLYGON. Checks only edges that are on different polygons.

relational
Optional. Specifies if a check outputs violations based on the relationship of the
polygons. Connectivity is considered when generating these violations. The default is no
additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an inside-to-inside point touch. The
length of the violation is equal to the maximum of the distance constraint, with a
minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution. The
POINT_TOUCH argument is not available for edge input.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


internal1_error() 2-920
IC Validator Reference Manual Version N-2017.12-SP2

Example
To set a minimum spacing of 0.5:
int1_errs = internal1_error(layer1 = met1, distance <= 0.5,
extension = RADIAL);

See Also
drc_features()
internal1()
internal1_edge() and not_internal1_edge()

Chapter 2: Runset Functions: A - I


internal1_error() 2-921
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal2()
The internal2() function creates polygons that are formed by pairs of violation edges. It
measures inside-to-inside spacing between two layers based on the specified distance.
The arguments define various geometric conditions for measuring the distance between the
layer edges.

Syntax
internal2(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint,
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
OUTSIDE | NOT_ADJACENT | //optional
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
point_touch_shape = EXTENTS | SQUARE, //optional
shape_size = double, //optional
output_type = REGION | CENTERLINE | EXTENTS, //optional
width = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
line_touch_shape = OUTSIDE | INSIDE | BOTH, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional

Chapter 2: Runset Functions: A - I


internal2() 2-922
IC Validator Reference Manual Version N-2017.12-SP2

intersection_angle = doubleconstraint, //optional


name = "layer_label", //optional
edge_containment = INSIDE | COINCIDENT | ALL, //optional
break_edges = true | false, //optional
membership = ALL | SAME_POLYGON //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.
Figure 2-327 shows the effect of the distance argument settings. For example,
Result = internal2(layer1, layer2, <=1.0, extension = NONE);

Figure 2-327 distance Argument Examples

<=1.0 <=1.25 (1.0, 1.25]

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


internal2() 2-923
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.

Chapter 2: Runset Functions: A - I


internal2() 2-924
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-328 and Figure 2-329 show the effect of the extension argument settings.
Figure 2-328 extension Argument Examples

layer1

layer2

Result
NONE RADIAL

Figure 2-329 extension Argument Examples

layer1

layer2

Result
SQUARE RECTANGLE

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

Chapter 2: Runset Functions: A - I


internal2() 2-925
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-330 shows the effect of the extension_distance argument settings.


Figure 2-330 extension_distance Argument Examples

layer1

layer2

Result
0.0 0.5 1.0

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.


Figure 2-331 shows the effect of the connectivity argument settings.
Figure 2-331 connectivity Argument Examples

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result

Chapter 2: Runset Functions: A - I


internal2() 2-926
IC Validator Reference Manual Version N-2017.12-SP2

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.


Figure 2-332 shows the effect of the orientation argument settings.
Figure 2-332 orientation Argument Examples

ACUTE PARALLEL PERPENDICULAR

layer1 layer2 Result

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where two layers outside touch. There is no measurement
in this case.

Chapter 2: Runset Functions: A - I


internal2() 2-927
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
Figure 2-333 shows the effect of the intersecting argument settings.
Figure 2-333 intersecting Argument Examples

TOUCH ACUTE PERPENDICULAR

layer1 layer2 Result Result

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.

Chapter 2: Runset Functions: A - I


internal2() 2-928
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-334 shows the effect of the projection argument settings.


Figure 2-334 projection Argument Examples

layer1

layer2

Result
IN OUT ON

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.

Chapter 2: Runset Functions: A - I


internal2() 2-929
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-335 shows the effect of the projection_length argument settings.


Figure 2-335 projection_length Argument Examples

layer1

layer2

Result
<=0.2 <=0.4

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.

Chapter 2: Runset Functions: A - I


internal2() 2-930
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-336 shows the effect of the orthogonal argument settings.


Figure 2-336 orthogonal Argument Examples

ONE NEITHER BOTH

layer1 layer2 Result

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


Figure 2-337 shows the effect of the direction argument settings.
Figure 2-337 direction Argument Examples

HORIZONTAL VERTICAL ORTHOGONAL

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


internal2() 2-931
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-338 shows the effect of additional direction argument settings.


Figure 2-338 direction Argument Examples

POSITIVE_45 NEGATIVE_45 NON_ORTHOGONAL

layer1 layer2 Result

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.


Figure 2-339 shows the effect of the from_layer argument settings.
Figure 2-339 from_layer Argument Examples

LAYER1 LAYER2 ALL

layer1 layer2 Result

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

Chapter 2: Runset Functions: A - I


internal2() 2-932
IC Validator Reference Manual Version N-2017.12-SP2

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
Figure 2-340 shows the effect of the corner_configuration argument settings.
Figure 2-340 corner_configuration Argument Examples

CORNER_TO_CORNER CORNER_TO_EDGE NOT_CORNER

layer1 layer2 Result

look_thru
Optional. Specifies how the dimensional check looks through obstructions when
measuring the separation between check edges. The default is NONE.
❍ NONE. Does not look through any edges.

❍ COINCIDENT. Looks through inside coincident edges.

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ OUTSIDE. Looks outside both layer1 and layer2.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look

Chapter 2: Runset Functions: A - I


internal2() 2-933
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. A projection is contained when any of the following are true:
■ Edges of one layer are inside or outside coincident with projecting edges of the
other layer.
■ The projection is inside a polygon of any layer. For edge layers, this contain does
not apply.
Figure 2-341 shows an example of using the NOT_CONTAINED option.
internal2(purple, green, look_thru = NOT_CONTAINED);

Figure 2-341 look_thru = NOT_CONTAINED Example

polygon layer edge layer


polygon layer reported violations

❍ ALL. Looks through all edges.

Chapter 2: Runset Functions: A - I


internal2() 2-934
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-342 shows the effect of the look_thru argument settings.


Figure 2-342 look_thru Argument Examples

NONE COINCIDENT OUTSIDE

layer1 layer2 Result

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.
Figure 2-343 shows the effect of the look_thru_count argument settings.
Figure 2-343 look_thru_count Argument Examples

=1 =2 <=3

layer1 layer2 Result

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

Chapter 2: Runset Functions: A - I


internal2() 2-935
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.
Figure 2-344 shows the effect of the look_thru_from_layer argument settings.
Figure 2-344 look_thru_from_layer Argument Examples

ALL count=1 LAYER1 count=1 LAYER2 count=2

layer1 layer2 Result

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

Chapter 2: Runset Functions: A - I


internal2() 2-936
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-345 shows the effect of the extension_look_past argument settings.


Figure 2-345 extension_look_past Argument Examples

layer1

layer2

Result
NONE POINT_TO_POINT

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
Figure 2-346 shows the effect of the extension_obstructions argument settings.
Figure 2-346 extension_obstructions Argument Examples

layer1

layer2

Result
ALL POINT_TO_POINT

Chapter 2: Runset Functions: A - I


internal2() 2-937
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an inside-to-inside point touch. The
format of the violation is determined by the point_touch_shape and shape_size
arguments.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
Figure 2-347 shows the effect of the relational argument settings.
Figure 2-347 relational Argument Example

layer1

layer2

Default POINT_TOUCH Result

point_touch_shape
Optional. Specifies the shapes that are generated for point touches. The default is
EXTENTS.

❍ EXTENTS. Specifies that the length of the violation is equal to the maximum of the
distance constraint, with a minimum value of two times the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The violation region is approximated with edges that are either
perpendicular, parallel, or at a 45-degree angle, to the edges that form the point
touch, to avoid creating odd-angle data.
❍ SQUARE. Specifies that a square is centered on the point touch. The sides of the
square are horizontal and vertical. The size of the square is determined by the
shape_size argument.

Chapter 2: Runset Functions: A - I


internal2() 2-938
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-348 shows the effect of the point_touch_shape argument settings.


Figure 2-348 point_touch_shape Argument Examples

layer1

layer2

Result
EXTENTS SQUARE

shape_size
Optional. Specifies the length of the sides of the squares generated when
point_touch_shape = SQUARE. The default is twice the maximum of the spacing
distance. This value must be positive. It is rounded to the nearest even multiple of the
internal resolution, with a minimum value of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
Figure 2-349 shows the effect of the point_touch_shape argument settings.
Figure 2-349 shape_size Argument Examples

0.1 0.2 0.2

layer1 layer2 Result

output_type
Optional. Specifies the type of output generated. The default is REGION.
❍ REGION. Reports violations as polygons, which are generated by connecting the
violation edges.
❍ CENTERLINE. Reports violations as an expanded line at the center of the projection
region. The midpoints of the sides of the violation region form a line that is expanded
in both directions by width/2. When the output_type argument is CENTERLINE, only
parallel spacing is supported.

Chapter 2: Runset Functions: A - I


internal2() 2-939
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ EXTENTS. Reports violations as boxes, oriented along the violation edges, that
contain the extents of the violation. This setting is used to avoid the creation of
odd-angle data normally seen when the extension argument is RADIAL or SQUARE.
The following violations require special consideration when generating output shapes:
❍ When set to REGION, point-to-point violations are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.
❍ When set to CENTERLINE, point-to-point violations are reported as squares, centered
on the midpoint of the line connecting the two points, with a dimension equal to the
width value. Violations are oriented along the line.

❍ When set to EXTENTS, point-to-point violations are reported the same as when set to
REGION.
Figure 2-350 shows the effect of the output_type argument settings.
Figure 2-350 output_type Argument Examples

EXTENTS REGION CENTERLINE

layer1 layer2 Result

width
Optional. Specifies the value used to expand a single edge violation into a polygon,
including perpendicular spacing violations that are a single edge. The minimum value for
the argument is the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is .001.

Chapter 2: Runset Functions: A - I


internal2() 2-940
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-351 shows the effect of the width argument settings.


Figure 2-351 width Argument Examples

width = 0.2 width = 0.2 width = 0.2


line_touch_shape line_touch_shape line_touch_shape
= OUTSIDE = INSIDE = BOTH

layer1 layer2 Result

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

line_touch_shape
Optional. Specifies how to expand a line-touch edge violation into a polygon. The default
is OUTSIDE.
❍ OUTSIDE. Outputs a line-touch polygon outside of the dimensional function layer1
polygon. The output polygon size equals the value of the width option.
❍ INSIDE. Outputs a line-touch polygon inside of layer1. The output polygon size
equals the value of the width option.
❍ BOTH. Outputs a line touch polygon inside and outside of the layer1. The total output
size is 2*width option.

Chapter 2: Runset Functions: A - I


internal2() 2-941
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-352 shows the effect of the line_touch_shape argument settings.


Figure 2-352 line_touch_shape Argument Examples

OUTSIDE INSIDE BOTH

layer1 layer2 Result

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

Chapter 2: Runset Functions: A - I


internal2() 2-942
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-353 shows the effect of the cumulative_projection_length argument


settings.
Figure 2-353 cumulative_projection_length Argument Examples

layer1

layer2

Result
SAME_EDGE JOGGING_EDGE

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).
Figure 2-354 shows the effect of the projection_mode argument settings.
Figure 2-354 projection_mode Argument Examples

SYMMETRIC ASYMMETRIC SYMMETRIC_NON_


INTERSECTING

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


internal2() 2-943
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.
Figure 2-355 shows the effect of the projection_filter argument settings.
Figure 2-355 projection_filter Argument Examples

layer1

layer2

INDIVIDUAL MUTUAL Result

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.

Chapter 2: Runset Functions: A - I


internal2() 2-944
IC Validator Reference Manual Version N-2017.12-SP2

When an intersection angle is specified, the intersecting argument must be an empty


list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
Figure 2-356 shows an example of using the intersection_angle argument.
green = internal2(blue, red, distance < 1.0, extension = RADIAL,
orientation = {}, intersecting = {},
intersection_angle < 180);

Figure 2-356 intersection_angle Argument Example

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.

Chapter 2: Runset Functions: A - I


internal2() 2-945
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.
❍ INSIDE. Includes the following measurements:
If layer1 is a polygon, edges on the layer1 polygon measure those layer2 edges
that are inside of the same layer1 polygon.
Note:
When you specify the connectivity argument, edges on the layer1 polygon
measure those layer2 edges that are inside of any layer1 polygon.
If layer2 is a polygon, edges on the layer2 polygon measure those layer1 edges
that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.
If the other layer is an edge layer, those edges that are neither inside coincident nor
outside coincident inside of the other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
In Figure 2-357, the dash lines are filtered out before the measurement.
internal2(layer1 = orange, layer2 = blue, ...)

Figure 2-357 Example of Edge Containment for the internal2() Functions


For polygons: For edges:

❍ COINCIDENT. Includes layer1 and layer2 edges that are inside coincident with the
other layer.
❍ ALL. Does not filter edges.

Chapter 2: Runset Functions: A - I


internal2() 2-946
IC Validator Reference Manual Version N-2017.12-SP2

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon. Polygon membership is determined by layer ancestry. The SAME_POLYGON
option is valid only if the two input layers have the same layer ancestry. The default is
ALL.

❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.


Note:
The connectivity argument is not supported when
membership = SAME_POLYGON.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


internal2() 2-947
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples

Distance
Error1 @= {@ "This is an example of the internal2() function
min spacing 0.5";
internal2(met1, met2, distance <= 0.5, extension = RADIAL );
};

Extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
internal2(met1, met2 , distance < 0.5, extension = NONE);
};

Connectivity
Error1 @= { @ "min spacing 0.5 for all polygons on the same net";
internal2(met1, met2, distance < 0.5,
extension = RADIAL, connectivity = SAME_NET);
};

Orientation
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure only parallel edges";
internal2(met1, met2, distance < 0.5, extension = RADIAL,
orientation = {PARALLEL});
};

Orthogonal
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure all parallel angled edges";
internal2(met1, met2, distance < 0.5, extension = RADIAL,
orthogonal = BOTH, orientation = {PARALLEL});
};

See Also
enclose()
internal2_edge() and not_internal2_edge()

Chapter 2: Runset Functions: A - I


internal2() 2-948
IC Validator Reference Manual Version N-2017.12-SP2

internal2_edge() and not_internal2_edge()


The internal2_edge() function selects the portion of layer1 or layer2 edges that
violates the spacing constraints. It measures inside-to-inside spacing between two layers
based on the specified distance. The arguments define various geometric conditions for
measuring the distance between the layer edges. The complement of this function is the
not_internal2_edge() function.

Syntax
internal2_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length= NONE | SAME_EDGE | JOGGING_EDGE,
//optional
output_type = FAIL | CENTERLINE, //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-949
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

edge_containment = INSIDE | COINCIDENT | ALL, //optional


output_side = ALL | HIGH | LOW, //optional
break_edges = true | false, //optional
membership = ALL | SAME_POLYGON //optional
);

not_internal2_edge(
layer1 =
data_layer,
layer2 =
data_layer,
distance =
doubleconstraint, //optional
extension =
NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE, //optional
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT |
OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
relational = {POINT_TOUCH}, //optional
output_layer = LAYER1 | LAYER2, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
cumulative_projection_length = NONE | SAME_EDGE | JOGGING_EDGE,
//optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = INSIDE | COINCIDENT | ALL, //optional
output_side = ALL | HIGH | LOW, //optional
break_edges = true | false, //optional
membership = ALL | SAME_POLYGON //optional
);

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-950
IC Validator Reference Manual Version N-2017.12-SP2

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Optional. Specifies the check distance. See “Constraints” on page A-4 for more
information. The default is 0.
See the distance example.
Note:
The only constraint operators allowed are <, <=, and ==.
Figure 2-358 shows the effect of the distance argument settings. For example,
result = internal2_edge(layer1, layer2, <=1.0, extension = NONE);

Figure 2-358 distance Argument Examples

<=1.0 <=1.25 (1.0, 1.25]

layer1 layer2 Result

extension
Optional. Specifies the extension of the check region, beyond the endpoints of the edge
being checked. The default is RADIAL.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-951
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. The edges reported have a length equal to the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.
In the conceptual diagram shown in Figure 2-359, the current edge being checked is
shown in solid black. The check region is dashed.
Figure 2-359 Check Region Extension

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-952
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-360 and Figure 2-361 show the effect of the extension argument settings.
Figure 2-360 extension Argument Examples

layer1

layer2

Result
NONE RADIAL

Figure 2-361 extension Argument Examples

layer1

layer2

SQUARE RECTANGLE Result

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-953
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-330 shows the effect of the extension_distance argument settings.


Figure 2-362 extension_distance Argument Examples

0.0 0.5 1.0

layer1 layer2 Result

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.


Figure 2-363 shows the effect of the connectivity argument settings.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-954
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-363 connectivity Argument Examples

SAME_NET DIFFERENT_NET ALL

layer1 layer2 via Result

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-955
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-364 shows the effect of the orientation argument settings.


Figure 2-364 orientation Argument Examples

ACUTE PARALLEL PERPENDICULAR

layer1 layer2 Result

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where two layers outside touch. There is no measurement
in this case.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-956
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-365 shows the effect of the intersecting argument settings.


Figure 2-365 intersecting Argument Examples

ACUTE TOUCH PERPENDICULAR

layer1 layer2 Result

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
❍ IN. Measures edges that have any portion inside the projection region.

❍ OUT. Measures edges that are outside of the projection region.

❍ ON. Measures edges that fall exactly on the boundary of the projection region.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-957
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In Figure 2-366, the projection region for edge A is shown in gray. The green edges are
IN, the red edges are OUT, and the magenta edges are ON.

Figure 2-366 Projection Regions for Edges

Figure 2-367 shows the effect of the projection argument settings.


Figure 2-367 projection Argument Examples

IN OUT ON

layer1 layer2 Result Areas shown for illustration

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-958
IC Validator Reference Manual Version N-2017.12-SP2

The restrictions are


❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.
❍ The extension argument must be NONE.
❍ The projection argument must contain IN.
Note:
See the cumulative_projection_length argument for more information.
Figure 2-368 shows the effect of the projection_length argument settings.
Figure 2-368 projection_length Argument Examples

layer1

layer2

Result
<=0.2 <=0.4

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-959
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


Figure 2-369 shows the effect of the orthogonal argument settings.
Figure 2-369 orthogonal Argument Examples

ONE NEITHER BOTH

layer1 layer2 Result

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-960
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-370 and Figure 2-371 show the effects of the direction argument settings.
Figure 2-370 direction Argument Examples

POSITIVE_45 NEGATIVE_45 NON_ORTHOGONAL

layer1 layer2 Result

Figure 2-371 direction Argument Examples

HORIZONTAL VERTICAL ORTHOGONAL

layer1 layer2 Result

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-961
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-372 shows the effect of the from_layer argument settings.


Figure 2-372 from_layer Argument Examples

LAYER1 LAYER2 ALL

layer1 layer2 Result Areas shown for illustration

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-962
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-373 shows the effect of the corner_configuration argument settings.


Figure 2-373 corner_configuration Argument Examples

CORNER_TO_CORNER CORNER_TO_EDGE NOT_CORNER

layer1 layer2 Result

look_thru
Optional. Specifies the edges that the spacing check looks through when measuring.
The default is NONE.
❍ NONE. Does not look through any edges.

❍ COINCIDENT. Looks through inside coincident edges.

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ OUTSIDE. Looks outside both layer1 and layer2.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL.
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.
After filtering edges by edge_containment, when two checked edges do not
project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-963
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
internal2() function for exceptions and examples.

❍ ALL. Looks through all edges.


Figure 2-374 shows the effect of the look_thru argument settings.
Figure 2-374 look_thru Argument Examples

NONE COINCIDENT OUTSIDE

layer1 layer2 Result

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.
Figure 2-375 shows the effect of the look_thru_count argument settings.
Figure 2-375 look_thru_count Argument Examples

=1 =2 <=3

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-964
IC Validator Reference Manual Version N-2017.12-SP2

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.
Figure 2-376 shows the effect of the look_thru_from_layer argument settings.
Figure 2-376 look_thru_from_layer Argument Examples

ALL count=1 LAYER1 count=1 LAYER2 count=2

layer1 layer2 Result

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.
❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-965
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-377 shows the effect of the extension_look_past argument settings.


Figure 2-377 extension_look_past Argument Examples

layer1

layer2

Result

Areas shown
NONE POINT_TO_POINT for illustration

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See Figure 2-378 for an example of the extension_obstructions argument.
Figure 2-378 extension_obstructions Argument Examples

POINT_TO_POINT ALL

layer1 layer2 Result Areas shown for illustration

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-966
IC Validator Reference Manual Version N-2017.12-SP2

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an inside-to-inside point touch. The
length of the violation is equal to the maximum of the distance constraint, with a
minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.
See Figure 2-379 for an example of the relational argument.
Figure 2-379 relational Argument Example

layer1

layer2

Result
Default POINT_TOUCH

output_layer
Optional. Specifies the layer that is output for the violations. The default is LAYER1.
❍ LAYER1. Specifies that only layer1 edges are output.

❍ LAYER2. Specifies that only layer2 edges are output.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-967
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Figure 2-380 for an example of the output_layer argument.


Figure 2-380 output_layer Argument Example

layer1

layer2

Result
LAYER1 LAYER2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

cumulative_projection_length
Optional. Specifies how the projection length is measured when there are multiple
violations. See the projection_length argument for more information. The default is
NONE.
See the cumulative_projection_length argument of the enclose() function for
more information about the SAME_EDGE and JOGGING_EDGE options.
❍ NONE. Measures each violation separately.

❍ SAME_EDGE. Measures violations by accumulating a projection length for interacting


violations that project from the same edge. A given violation can contribute to more
than one unique accumulated projection lengths.
❍ JOGGING_EDGE. Measures violations by accumulating a projection length for
interacting violations that project from the same edge or a jogging edge. A given
violation can contribute to more than one unique accumulated projection lengths.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-968
IC Validator Reference Manual Version N-2017.12-SP2

See Figure 2-380 for an example of the cumulative_projection_length argument.


Figure 2-381 cumulative_projection_length Argument Examples

layer1

layer2

SAME_EDGE JOGGING_EDGE Result

output_type
Optional. Specifies the type of output generated. The default is FAIL.
Note:
The output_type argument is not available for the not_internal2_edge()
function.
❍ FAIL. Specifies that the portions of the edges that fall within the check region are
output.
❍ CENTERLINE. Outputs spacing violations as lines at the center of the projection
region. A line is two points connected with no specific order. The midpoints of the
sides of the violation region are used to create the lines. When the output_type
argument is CENTERLINE, only parallel spacing is supported.
See Figure 2-382 for an example of the output_type argument.
Figure 2-382 output_type Argument Examples

EXTENTS REGION CENTERLINE

layer1 layer2 Result

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-969
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).
See Figure 2-383 for an example of the projection_mode argument.
Figure 2-383 projection_mode Argument Examples

SYMMETRIC ASYMMETRIC SYMMETRIC_NON_


INTERSECTING

layer1 layer2 Result Areas shown for illustration

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-970
IC Validator Reference Manual Version N-2017.12-SP2

■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.
Figure 2-384 shows the effect of the projection_filter argument settings.
Figure 2-384 projection_filter Argument Examples

INDIVIDUAL MUTUAL MUTUAL_NON_ORTHOGONAL

layer1 layer2 Result Areas shown for illustration

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-971
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-385 shows an example of using the intersection_angle argument.


Figure 2-385 intersection_angle Argument Example

< 180 90 45

layer1 layer2 Result

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-972
IC Validator Reference Manual Version N-2017.12-SP2

❍ INSIDE. Includes the following measurements:


If layer1 is a polygon, edges on the layer1 polygon measure those layer2 edges
that are inside of the same layer1 polygon.
Note:
When you specify the connectivity argument, edges on the layer1 polygon
measure those layer2 edges that are inside of any layer1 polygon.
If layer2 is a polygon, edges on the layer2 polygon measure those layer1 edges
that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.
If the other layer is an edge layer, those edges that are neither inside coincident nor
outside coincident inside of the other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
See Figure 2-357 for an example.
❍ COINCIDENT. Includes layer1 edges that are inside coincident.

❍ ALL. Does not filter edges.

output_side
Optional. Specifies to output only the check edges on the specified side of any violation
projected from an orthogonal edge. The default is ALL.
Note:
To use the HIGH or LOW options,
■ The direction argument needs to be HORIZONTAL or VERTICAL.
■ The extension argument needs to be NONE.
❍ ALL. Outputs all check edges

❍ HIGH. Outputs all check edges except:

■ For any violation projected from a horizontal edge, only the edge on the top side
is output.
■ For any violation projected from a vertical edge, only the edge on the right side is
output.
❍ LOW. Outputs all check edges.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-973
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ For any violation projected from a horizontal edge, only the edge on the bottom
side is output.
■ For any violation projected from a vertical edge, only the edge on the left side is
output.
For examples, see the output_side argument of the enclose_edge() and
not_enclose_edge() functions.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:
■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon. Polygon membership is determined by layer ancestry. The SAME_POLYGON
option is valid only if the two input layers have the same layer ancestry. The default is
ALL.

❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.


Note:
The connectivity argument is not supported when
membership = SAME_POLYGON.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-974
IC Validator Reference Manual Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

distance
Error1 @= {@ "This is an example of the internal2_edge() function
min spacing 0.5";
internal2_edge(met1, met2, distance <= 0.5 );
};

extension
Error1 @= { @ "min spacing 0.5 opposite edges only";
internal2_edge(met1, met2, distance < 0.5, extension = NONE);
};

connectivity
Error1 @= { @ "min spacing 0.5 for all polygons on the same net";
interna2_edge(met1, met2, distance < 0.5, connectivity = SAME_NET);
};

orientation
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure only parallel edges";
internal2_edge(met1, met2, distance < 0.5, orientation = {PARALLEL});
};

orthogonal
Error1 @= { @ "min spacing 0.5 for met1 to met2" +
"measure all parallel angled edges";
internal2_edge(met1, met2, distance < 0.5, orthogonal = BOTH,
orientation = {PARALLEL});
};

See Also
enclose_edge() and not_enclose_edge()
internal2()

Chapter 2: Runset Functions: A - I


internal2_edge() and not_internal2_edge() 2-975
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal2_error()
The internal2_error() function measures inside-to-inside spacing between two layers
based on the specified distance. The arguments define various geometric conditions for
measuring the distance between the layer edges. The output is unmerged errors.
Derived error layers are unformatted. These layers can be used by the drc_features()
function. The layers can be formatted and merged into normal layers using the
error_merge() and error_merge_edge() functions.

Errors output to the error database consist of pairs of violation edges.

Syntax
internal2_error(
layer1 = data_layer,
layer2 = data_layer,
distance = doubleconstraint,
extension = NONE | NONE_INCLUSIVE | RADIAL |
SQUARE | RECTANGLE | EDGE,
extension_distance = double, //optional
connectivity = SAME_NET | DIFFERENT_NET | ALL, //optional
connect_sequence = connect_database, //optional
orientation = {ACUTE, PARALLEL, PERPENDICULAR}, //optional
intersecting = {TOUCH, ACUTE, PERPENDICULAR}, //optional
projection = {IN, OUT, ON}, //optional
projection_length = doubleconstraint, //optional
orthogonal = ALL | BOTH | NEITHER | ONE
ONE_OR_NEITHER | ONE_OR_BOTH, //optional
direction = HORIZONTAL | VERTICAL |
NON_ORTHOGONAL | ORTHOGONAL |
POSITIVE_45 | NEGATIVE_45 | ALL, //optional
from_layer = LAYER1 | LAYER2 | ALL, //optional
corner_configuration = ALL | CORNER_TO_CORNER_OR_EDGE |
CORNER_TO_CORNER | CORNER_TO_EDGE |
NOT_CORNER, //optional
look_thru = NONE | COINCIDENT | RELATED_COINCIDENT
OUTSIDE | NOT_ADJACENT |
NOT_CONTAINED | ALL, //optional
look_thru_count = integerconstraint, //optional
look_thru_from_layer = LAYER1 | LAYER2 | ALL, //optional
extension_look_past = NONE | POINT_TO_POINT, //optional
extension_obstructions = POINT_TO_POINT | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
projection_mode = SYMMETRIC | SYMMETRIC_NON_INTERSECTING |
ASYMMETRIC, //optional
projection_filter = INDIVIDUAL | MUTUAL |
MUTUAL_NON_ORTHOGONAL, //optional
intersection_angle = doubleconstraint, //optional
name = "layer_label", //optional
edge_containment = INSIDE | COINCIDENT | ALL, //optional

Chapter 2: Runset Functions: A - I


internal2_error() 2-976
IC Validator Reference Manual Version N-2017.12-SP2

break_edges = true | false, //optional


membership = ALL | SAME_POLYGON, //optional
relational = {POINT_TOUCH} //optional
);

Returns
error layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer against which the layer1 layer is
checked.

distance
Required. Specifies the check distance. See “Constraints” on page A-4 for more
information.
Note:
The only constraint operators allowed are <, <=, and ==.

extension
Required. Specifies the extension of the check region, beyond the endpoints of the edge
being checked.
❍ NONE. Does not extend the check region; it is formed with right-angle boundaries at
the edge endpoints. The right-angle boundaries of the check region are exclusive.
The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
❍ NONE_INCLUSIVE. Does not extend the check region; it is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
inclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value. When the projection argument includes ON,
the NONE_INCLUSIVE setting generates point-to-point violations whose edges have
no length. See the description of the output_type argument for more information.
❍ RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.

Chapter 2: Runset Functions: A - I


internal2_error() 2-977
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
❍ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
❍ EDGE. Forms the check region by extending the edges using the
extension_distance, and creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or exclusive
depending on the constraint of the distance value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero, and the extension_distance is nonzero.
See Figure 2-101 for an example of RECTANGLE and Figure 2-102 for an example of EDGE
in the enclose() function for more information.

extension_distance
Optional. Specifies the check region extension distance when the extension argument
is RECTANGLE or EDGE. The value must be nonnegative. The default is 0.

connectivity
Optional. Specifies how to consider connectivity. The default is ALL.
❍ SAME_NET. Checks the edges that are on the same net.

❍ DIFFERENT_NET. Checks the edges that are on different nets.

❍ ALL. Checks all edges regardless of connectivity.

connect_sequence
Optional. Specifies the connect database for spacing based on connectivity. This
database must be a valid connect database when the connectivity argument is
SAME_NET or DIFFERENT_NET.

orientation
Optional. Specifies the orientations of nonintersecting edges that are checked. The
default is {ACUTE, PARALLEL}.
❍ ACUTE. Measures all nonintersecting edges that are oriented at an acute angle.

❍ PARALLEL. Measures all nonintersecting parallel edges.

❍ PERPENDICULAR. Measures all nonintersecting perpendicular edges.

Chapter 2: Runset Functions: A - I


internal2_error() 2-978
IC Validator Reference Manual Version N-2017.12-SP2

See the examples for the orientation argument of the internal2() function for more
information.

intersecting
Optional. Specifies the intersecting edge types that are checked. Use an empty list ({})
to not measure intersecting edges. The default is ACUTE.
❍ TOUCH. Creates a violation where two layers outside touch. There is no measurement
in this case.
❍ ACUTE. Measures separation of intersecting edges that form an acute angle.

❍ PERPENDICULAR. Measures separation of intersecting edges that form a


perpendicular angle.
See the examples for the intersecting argument of the internal2() function for more
information.

projection
Optional. Specifies the projections that must be satisfied for an edge measurement to
occur. Each edge creates a projection region bounded by perpendicular lines at each
endpoint, extended to the check side of the edge indefinitely. The other edges fall either
in, out, or exactly on this region. The default is {IN, OUT, ON}. See “Spacing Checks”
on page A-18 for more information about the check side.
Note:
Projection is mutual for parallel spacing. For nonparallel spacing, there are two
separate measurements and each is individually compared with the projection
specification.
See the examples for the projection argument of the internal2() function for more
information.

projection_length
Optional. Reports spacing violations if the projection length meets the specification. The
default is >0, which means to ignore the projection length.
The projection length is the length of the projecting edge, where the projecting edge is
the violation edge that created the projection region. For nonparallel violations, the
projecting edge is the edge that is perpendicular to the violation.
The restrictions are
❍ The orientation argument cannot contain PERPENDICULAR.
❍ The intersecting argument cannot contain PERPENDICULAR.
❍ The corner_configuration argument cannot be CORNER_TO_CORNER.

Chapter 2: Runset Functions: A - I


internal2_error() 2-979
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ The extension argument must be NONE.


❍ The projection argument must contain IN.

orthogonal
Optional. Measures two edges only when the number of orthogonal edges in the pair
meets the specification. The default is ALL.
❍ ALL. Checks all pairs of edges regardless of orthogonality.

❍ ONE_OR_NEITHER. Checks the pairs of edges where one or neither are orthogonal.

❍ ONE_OR_BOTH. Checks the pairs of edges where at least one is orthogonal.

❍ ONE. Checks the pairs of edges where one is orthogonal.

❍ NEITHER. Checks the pairs of edges where neither are orthogonal.

❍ BOTH. Checks the pairs of edges where both are orthogonal.


See the examples for the orthogonal argument of the internal2() function for more
information.

direction
Optional. Specifies the direction of the spacing check. The specification refers to the
perpendicular projection being measured. The default is ALL.
❍ HORIZONTAL. Specifies that only horizontal projections are measured.

❍ VERTICAL. Specifies that only vertical projections are measured.

❍ NON_ORTHOGONAL. Specifies that only nonorthogonal projections are measured.

❍ ORTHOGONAL. Specifies that only orthogonal projections are measured.

❍ POSITIVE_45. Specifies that only positive 45-degree projections are measured.

❍ NEGATIVE_45. Specifies that only negative 45-degree projections are measured.

❍ ALL. Specifies that projections are measured regardless of direction.


See the examples for the direction argument of the internal2() function for more
information.

from_layer
Optional. Specifies the layer that is used to create check regions. The default is ALL.
❍ LAYER1. Specifies that only layer1 edges create check regions.

❍ LAYER2. Specifies that only layer2 edges create check regions.

❍ ALL. Specifies that all edges check regions.

Chapter 2: Runset Functions: A - I


internal2_error() 2-980
IC Validator Reference Manual Version N-2017.12-SP2

See the examples for the from_layer argument of the internal2() function for more
information.

corner_configuration
Optional. Specifies how to check edges in a corner orientation. This argument applies
only to nonintersecting edges. If this argument is not ALL, it overrides the orthogonal,
projection, and orientation arguments for nonintersecting edges. The default is ALL.
Note:
Use the vertex() function to find corners of a specific angle.
❍ ALL. Measures edge pairs regardless of corner orientation.

❍ CORNER_TO_CORNER_OR_EDGE. Measures the spacing between two edges only if the


edges satisfy the CORNER_TO_CORNER or CORNER_TO_EDGE requirements.
❍ CORNER_TO_CORNER. Measures the spacing between two edges only if both fall on
concave, right-angle corners, are parallel, and do not project.
❍ CORNER_TO_EDGE. Measures the spacing between two edges only if one falls on a
concave, right-angle corner, they are nonparallel, and project. Also, the line bisecting
the corner must intersect the edge.
❍ NOT_CORNER. Measures the spacing between two edges that do not satisfy the
CORNER_TO_CORNER_OR_EDGE requirements.
See the examples for the corner_configuration argument of the internal2()
function for more information.

look_thru
Optional. Specifies how the dimensional check looks through obstructions when
measuring the separation between check edges. The default is NONE.
❍ NONE. Does not look through any edges.

❍ COINCIDENT. Looks through inside coincident edges.

❍ RELATED_COINCIDENT. Uses COINCIDENT if the two input layers have the same layer
ancestry; otherwise, NONE is used.
❍ OUTSIDE. Looks outside both layer1 and layer2.

❍ NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not look
through any edges that share endpoint X with edge A. This setting avoids false
violations that might be reported when the look_thru argument is ALL..
Note:
When the edge_containment argument is not ALL, the NOT_ADJACENT behavior
is changed.

Chapter 2: Runset Functions: A - I


internal2_error() 2-981
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

After filtering edges by edge_containment, when two checked edges do not


project onto each other, an adjacent edge of the extension past the endpoint of
one checked edge can block the extension check. If the adjacent edge fully blocks
the shape of the extension violation, then the extension violation is not reported.
The extension is not measured.
❍ NOT_CONTAINED. Looks through all edges, except polygons or edges that contain the
projection. See the NOT_CONTAINED option of the look_thru argument of the
internal2() function for exceptions and examples.

❍ ALL. Looks through all edges.


See the example for the look_thru argument of the internal2() function for more
information.

look_thru_count
Optional. Specifies the number of edges that must be looked through for a measurement
to occur. Edges coincident to the edge being measured are not included in the count.
The value must be nonnegative. See “Constraints” on page A-4 for more information.
The default is >=0, which means the count is ignored.
Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL.

look_thru_from_layer
Optional. Controls which edges are counted for the look_thru_count argument. The
default is ALL.
❍ LAYER1. Counts only layer1 edges.

❍ LAYER2. Counts only layer2 edges.

❍ ALL. Counts both layer1 and layer2 edges.


Note:
Use this argument only when the extension argument is NONE and the look_thru
argument is ALL. The look_thru_from_layer argument has no effect unless the
look_thru_count argument is also specified.

extension_look_past
Optional. Specifies which extension obstructions are looked past during the violation
discovery process. When processing a measurement from edge a to edge b, the check
begins at the shortest distance between the two edges in the extension region of edge a.
The term past refers to portions of edge b that are farther away from edge a than the
portion that is obstructed. The default is NONE.

Chapter 2: Runset Functions: A - I


internal2_error() 2-982
IC Validator Reference Manual Version N-2017.12-SP2

❍ NONE. Specifies that this check does not look past any extension obstructions. The
violation discovery process stops when an obstruction is encountered.
❍ POINT_TO_POINT. Specifies that this check looks past point-to-point obstructions to
measure edges beyond the obstruction. The discovery process stops when anything
other than a point-to-point obstruction is found.

extension_obstructions
Optional. Specifies how look_thru is processed for the check region extension. Some
endpoint violations might be undesirable even though they fit the look_thru setting.
This argument specifies how aggressively the check finds and refines endpoint violations
in accordance with obstructed regions. The default is POINT_TO_POINT.
❍ POINT_TO_POINT. Reports violations. If the shortest distance from edge to edge is
obstructed, there is no violation; otherwise a violation is reported. Other obstructions
are ignored.
❍ ALL. Reports the same violations as POINT_TO_POINT; however, the violations are
corrected for other obstructions.
See the examples for the extension_obstructions argument of the internal2()
function for more information.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

projection_mode
Optional. Specifies which projection is measured for nonparallel spacing, where exactly
one edge is orthogonal, and extension argument is NONE or NONE_INCLUSIVE. The
default is SYMMETRIC.
❍ SYMMETRIC. Measures both projections.

❍ ASYMMETRIC. Measures only the projection from the orthogonal edge.

❍ SYMMETRIC_NON_INTERSECTING

■ For nonintersecting edges, measures both projections (the SYMMETRIC setting).


■ For intersecting edges, measures only the projection from the orthogonal edge
(the ASYMMETRIC setting).

Chapter 2: Runset Functions: A - I


internal2_error() 2-983
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

projection_filter
Optional. Controls the measurement of nonparallel edges based on their respective
projection status. The default is INDIVIDUAL.
❍ INDIVIDUAL. Measures edges if either edge matches the projection criteria as
specified in the projection argument.
❍ MUTUAL. Measures edges only if both edges match the following projection criteria:

■ If the extension argument is NONE, both edges must match the IN option; that is,
edges that have any portion inside the projection region are measured. The
projection argument is ignored.

■ If the extension argument is NONE_INCLUSIVE, both edges must match the IN or


ON options; that is, edges that edges that have any portion inside the projection
region or that fall exactly on the boundary of the projection region are measured.
The projection argument is ignored.
■ Otherwise, both edges must match the projection criteria as specified in the
projection argument.

❍ MUTUAL_NON_ORTHOGONAL.

■ If both edges are nonorthogonal, apply the MUTUAL option setting.


■ If either edge is orthogonal, apply the INDIVIDUAL option setting.

intersection_angle
Optional. Specifies the required angle of separation between two intersecting edges for
additional violations. The angle must be greater than or equal to 0 and less than 180.
When an intersection angle is not specified, the angle of separation is not checked.
When an intersection angle is specified, the intersecting argument must be an empty
list ({}).
Note:
The orientation, intersecting, projection, projection_length, and
corner_configuration arguments are ignored for the intersection_angle
argument. The look_thru argument is ignored, except when it is NOT_CONTAINED
and two intersecting edges are cut. The connectivity and orthogonal arguments
are not ignored.
See the intersection_angle argument of the internal2() and internal2_edge()
and not_internal2_edge() functions for examples.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 2: Runset Functions: A - I


internal2_error() 2-984
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

edge_containment
Optional. Filters edges, based on the topological relation of the two layers, before the
tool makes any measurements. Edges are broken into segments that are inside, outside,
inside coincident, and outside coincident with the other layer. The default is ALL.
Note:
When the edge_containment argument is not ALL and the two input layers do not
have the same layer ancestry, the break_edges argument is forced to true.
❍ INSIDE. Includes the following measurements:
If layer1 is a polygon, edges on the layer1 polygon measure those layer2 edges
that are inside of the same layer1 polygon.
Note:
When you specify the connectivity argument, edges on the layer1 polygon
measure those layer2 edges that are inside of any layer1 polygon.
If layer2 is a polygon, edges on the layer2 polygon measure those layer1 edges
that are inside of the same layer2 polygon.
Note:
When you specify the connectivity argument, edges on the layer2 polygon
measure those layer1 edges that are inside of any layer2 polygon.
If the other layer is an edge layer, those edges that are neither inside coincident nor
outside coincident inside of the other layer are included in the measurements.
Important:
Edges that are outside coincident with the other layer are included in the
measurement for touch violations.
See Figure 2-357 for an example.
❍ COINCIDENT. Includes layer1 edges that are inside coincident.

❍ ALL. Does not filter edges.

break_edges
Optional. Controls edge breaking behavior for two-layer spacing checks when the two
input layers do not have the same layer ancestry. The segments resulting from the edge
breaking are processed individually by the edge filters and spacing constraints. The
default is false.
❍ true. Enables edge breaking behavior when the two input layers do not have the
same layer ancestry. Edges are broken into individual segments as follows:

Chapter 2: Runset Functions: A - I


internal2_error() 2-985
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ Specifies that edges are broken at every point of intersection with the other layer.
■ Specifies that coincident edges are broken at the point where they become
not-coincident.
❍ false. Specifies that edges are not broken.

membership
Optional. Specifies whether to check all distances between edges that are on the same
polygon. Polygon membership is determined by layer ancestry. The SAME_POLYGON
option is valid only if the two input layers have the same layer ancestry. The default is
ALL.

❍ ALL. Checks all edges regardless of polygon membership.

❍ SAME_POLYGON. Checks only edges that are on the same polygon.


Note:
The connectivity argument is not supported when
membership = SAME_POLYGON.

relational
Optional. Specifies if a check outputs additional violations based on the relationship of
the polygons. Connectivity is considered when generating these violations. The default
is no additional reporting.
❍ POINT_TOUCH. Creates a violation where there is an inside-to-inside point touch. The
length of the violation is equal to the maximum of the distance constraint, with a
minimum value of two times the internal resolution. The internal_resolution
argument of the resolution_options() function sets the internal resolution.
When the edge_containment argument is specified, the POINT_TOUCH argument
creates a violation by using an intersection angle for all edges that touch any
point-touch point. The angle of the intersection angle must be greater than or equal
to 0 and less than 180. When the edge_containment argument is specified, the
point_touch_shape and shape_size arguments are ignored.
The POINT_TOUCH argument is not available for edge input.

Chapter 2: Runset Functions: A - I


internal2_error() 2-986
IC Validator Reference Manual Version N-2017.12-SP2

See Figure 2-386 for an example of the relational argument.


Figure 2-386 relational Argument Example

layer1

layer2

Result
Default POINT_TOUCH

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
To set a minimum spacing of 0.5:
int2_errs = internal2_error(layer1 = met1, layer2 = met2,
distance <= 0.5, extension = RADIAL);

See Also
drc_features()
internal2()
internal2_edge() and not_internal2_edge()

Chapter 2: Runset Functions: A - I


internal2_error() 2-987
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

intersections()
The intersections() function creates polygons that represent the specified intersections
with the specified output format. Each intersection between the layer1 edges and the
layer2 edges is compared to the angle list. Intersections includes endpoints. Collinear
edges do not match any angle specifications.
The intersections() function considers only the smallest of the two angles for a given
intersection. For example, as shown in Figure 2-387, with a specification of
outside-to-outside angle measurement, the intersection A has two angles. Only the smallest
of the two, the 90-degree angle, is measured.
Figure 2-387 Outside-to-Outside Example

270°
90°
A

layer1

layer2

The following figures, Figure 2-388, Figure 2-389, and Figure 2-390, show intersections with
defined angle measurements.
Figure 2-388 Defined Angle Measurement: Crossing Point of Two Edges

Chapter 2: Runset Functions: A - I


intersections() 2-988
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-389 Defined Angle Measurement: Point Where the End of One Edge is Coincident With
the Start of Another; Edges Are Not Collinear

Figure 2-390 Defined Angle Measurement: T Intersection That Is on the Check Side of the Edge;
for Checking the Outside of Blue

The following figures, Figure 2-391 and Figure 2-392, show intersections that do not have
angle measurements.
Figure 2-391 No Angle Measurement: Collinear edges

Figure 2-392 No Angle Measurement: T Intersection That Is Not on the Check Side of the Edge;
Not for Checking the Outside of Blue

You specify which side of the edges of each layer is used for angle measurement, inside or
outside. This side is the check side of the edges. The inside is always to the right of the
edge. For example, as shown in Figure 2-393, for two arbitrary edges, the inside is always
on the right. See “Spacing Checks” on page A-18 for more information about the check side.

Chapter 2: Runset Functions: A - I


intersections() 2-989
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-393 Check Side

Inside to outside
Outside to outside

Outside to inside Inside to inside


layer1

layer2

Syntax
intersections (
layer1 = data_layer,
layer2 = data_layer,
layer1_side = OUTSIDE | INSIDE,
layer2_side = OUTSIDE | INSIDE,
angles = {doubleconstraint, ...},
shape = TRIANGLE | EXTENTS | DIAMOND | SQUARE, //optional
shape_size = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

layer1_side
Required. Specifies the check side of the layer1 edges.

layer2_side
Required. Specifies the check side of the layer2 edges.

Chapter 2: Runset Functions: A - I


intersections() 2-990
IC Validator Reference Manual Version N-2017.12-SP2

angles
Required. Specifies the angles that determine the intersections to find. The angles must
be greater than 0 and less than 360. A value of 180 does not match any intersections.

shape
Optional. Specifies the shape of the polygon generated at each selected intersection.
The default is SQUARE.
❍ TRIANGLE. Marks the intersection with a triangle that fills the interior of convex angles
and the exterior of concave angles.
❍ EXTENTS. Creates extents boxes from the TRIANGLE shapes.

❍ DIAMOND. Marks the intersection with a diamond that is centered.

❍ SQUARE. Marks the intersection with a square that is centered.

shape_size
Optional. Specifies the size of the output squares. The value must be positive. The
default is DRC_ERROR_BOX, which has a default of 0.1.
❍ When the shape is SQUARE or DIAMOND, the value is rounded to the nearest even
multiple of the internal resolution, with a minimum of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution.
❍ Otherwise, the value is rounded to the nearest internal resolution unit, with a
minimum of one internal resolution unit.
❍ When the shape is TRIANGLE, the sides of the shape coincident with the input edges
are not longer than the edges forming the intersection.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 2: Runset Functions: A - I


intersections() 2-991
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the first example, shown in Figure 2-394,
Answer = intersections(A, A_EDGE, INSIDE, INSIDE, {90},
shape=EXTENTS, shape_size = .2);

In this example, A is blue; A_EDGE is red; and, Answer is the empty green shapes with
dotted lines showing the markers before merging.

Chapter 2: Runset Functions: A - I


intersections() 2-992
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-394 EXTENT Shapes With INSIDE Check Side

In the second example, shown in Figure 2-395,


x = intersections(A, B, OUTSIDE, OUTSIDE, {[45,135]},
shape=EXTENTS, shape_size = .1);

Chapter 2: Runset Functions: A - I


intersections() 2-993
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-395 EXTENT Shapes With OUTSIDE Check Side

In the third example, shown in Figure 2-396,


x = intersections(BLUE, RED, INSIDE, OUTSIDE, {[45,135]},
shape=TRIANGLE, shape_size = .1);

Figure 2-396 TRIANGLE Shapes

all arrows are .1

See Also
intersections_edge()
vertex()

Chapter 2: Runset Functions: A - I


intersections() 2-994
IC Validator Reference Manual Version N-2017.12-SP2

intersections_edge()
The intersections_edge() function creates edges that represent the specified
intersections. Each intersection between the layer1 edges and the layer2 edges is
compared to the angle list. Intersections includes endpoints. Collinear edges do not match
any angle specifications. See the examples for the intersections() function for more
information.

Syntax
intersections_edge (
layer1 = data_layer,
layer2 = data_layer,
layer1_side = OUTSIDE | INSIDE,
layer2_side = OUTSIDE | INSIDE,
angles = {doubleconstraint, ...},
output_layer = LAYER1 | LAYER2, //optional
shape_size = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

layer1_side
Required. Specifies the check side of the layer1 edges.

layer2_side
Required. Specifies the check side of the layer2 edges.

angles
Required. Specifies the angles that determine the intersections to find. The angles must
be greater than 0 and less than 360. A value of 180 does not match any intersections.

Chapter 2: Runset Functions: A - I


intersections_edge() 2-995
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

output_layer
Optional. Specifies the layer whose edges are output for the violations. The default is
LAYER1.

❍ LAYER1. Outputs only layer1 edges.

❍ LAYER2. Outputs only layer2 edges are output.

shape_size
Optional. Specifies the maximum length of the output edges. The value must be positive.
The default is DRC_ERROR_BOX, which has a default of 0.1. The value is rounded to the
nearest internal resolution unit, with a minimum of one internal resolution unit.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 2: Runset Functions: A - I


intersections_edge() 2-996
IC Validator Reference Manual Version N-2017.12-SP2

Examples
In the first example, as shown in Figure 2-397,
red = intersections_edge(A, A_EDGE, INSIDE, INSIDE, {90},
shape_size = .2);

In this example, A is blue; A_EDGE is black; and, Answer is the red edges.
Figure 2-397 INSIDE Check Side

.2

In the second example, as shown in Figure 2-398,


red = intersections_edge(BLUE, BLACK, OUTSIDE, OUTSIDE, {[45,135]},
shape_size = .1);

Figure 2-398 OUTSIDE Check Side

In the third example, shown in Figure 2-399,


red = intersections_edge(BLUE, BLACK, OUTSIDE, INSIDE, {[45,135]},
shape_size = .1);

Chapter 2: Runset Functions: A - I


intersections_edge() 2-997
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 2-399 INSIDE to OUTSIDE

See Also
intersections()
vertex()

Chapter 2: Runset Functions: A - I


intersections_edge() 2-998
IC Validator Reference Manual Version N-2017.12-SP2

3
Runset Functions: J - Z 3

This chapter provides an alphabetical listing of the functions available with the IC Validator
physical verification tool.

See Chapter 2, “Runset Functions: A - I” for more functions. Chapter 1, “Tables of Runset
Functions” lists the runset functions by various types, in addition to a table of all runset
functions.
To help you understand and use the functions, see Appendix A, “Runset Basics” and the
IC Validator User Guide.
In addition to the documentation conventions shown in the Preface, the following convention
is used in the documentation of the IC Validator syntax.

Convention Description

default Indicates the default, such as


low | medium | high

Chapter 3: Runset Functions: J - Z


3-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

label_text()
The label_text() function creates a text layer that contains text strings for any probe layer
polygon that edge touches or overlaps a connect layer polygon. A point touch is not
considered an interaction. The text is placed at an arbitrary location on the probe polygon.
Each text string consists of the path to the connect layer net from the top cell of the design
and the net name. The created text layer can be attached to a probe layer with net names
by connecting and texting the probe layer.
The probe layer must be in the top cell. Any probe layer that is not in the top cell is ignored.
If the probe layer interacts with more than one connect polygon that has text at the same
level, the results are arbitrary.
An error occurs if a connect layer is already texted but text opens are ignored by the setting
the opens argument of the text_net()function to IGNORE.
A text file can be written to any output layout database, such as GDSII and Milkyway.
Untexted nets use the net prefix specified in the text_options() function.

Syntax
label_text(
layer1 = polygon_layer,
layer2 = polygon_layer,
connect_sequence = connect_database,
include_path = true | false, //optional
use_text = UPPER | LOWER, //optional
name = "layer_label" //optional
);

Returns
text layer

Arguments
layer1
Required. Specifies the probe layer.

layer2
Required. Specifies the connect layer.

connect_sequence
Required. Specifies the connect database that contains layer2, the connect layer.

Chapter 3: Runset Functions: J - Z


label_text() 3-2
IC Validator Reference Manual Version N-2017.12-SP2

include_path
Optional. Specifies if the created text string includes the full path to the net. The default
is true.
❍ true. Specifies that the text string has the full path to the net.

❍ false. Specifies that the text string has only the net name.

use_text
Optional. Specifies from where the text is selected. This argument is used only when a
probe layer interacts more than one physical polygon on the same net. The default is
LOWER.

❍ UPPER. Acquires the text from the highest polygon in the net that has direct interaction
with the probe layer.
❍ LOWER. Acquires the net name from the lowest interacting probe polygon, even if the
polygon is not texted.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
// Probe layer can also be created through IC Validator tool operations.
met1 = assign({{8}});
met1_text = assign_text({{42}});
met2 = assign({{10}});
met2_text = assign_text({{43}});
via = assign({{11}});
probe_met1 = assign({{80}});
probe_met2 = assign({{90}});

// Connect the data layers.


cdb1 = connect(connect_items = {{{met1, met2}, by_layer = via}});

// Text the data layers.

Chapter 3: Runset Functions: J - Z


label_text() 3-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cdb1 = text_net(cdb1,
text_layer_items = {
{layer = met1, text_layer = met1_text},
{layer = met2, text_layer = met2_text}}
);

// Label the probe layers by creating text files with net/hierarchy


// information for polygons from data layer that interacts with
// probe layer.
// Note: Because the label function returns a text layer, it
// must be run for each probe layer.
met1probe_text = label_text(probe_met1, met1, cdb1);
met2probe_text = label_text(probe_met2, met2, cdb1);

// Connect the probe layers.


cdb2 = incremental_connect(cdb1,
connect_items = {
{{probe_met1, probe_met2}, by_layer = via}}
);

// Retext the connected layers because of incremental connect, and add


// texting of probe layers.
// IMPORTANT: Order of texting determines which text gets
// applied to nets.
//
cdb3 = text_net(cdb2,
text_layer_items = {
{layer = met1, text_layer = met1_text},
{layer = met2, text_layer = met2_text},
{layer = probe_met1, text_layer = met1probe_text},
{layer = probe_met2, text_layer = met2probe_text}}
);

// Write output to the output GDSII, getting text as both net info and
// text information.
gdsout = gds_library("label_out.gds");
write_gds(output_library = gdsout,
layers = {
{layer = met1, layer_num = {8}},
{layer = met2, layer_num = {10}},
{layer = via, layer_num = {11}},
{layer = probe_met1, layer_num = {100}},
{layer = probe_met2, layer_num = {101}},
{layer = met1probe_text, layer_num = {100}},
{layer = met2probe_text, layer_num = {101}}},
properties = {net_name = 4},
connect_sequence = cdb3
);

See Also
text_options()

Chapter 3: Runset Functions: J - Z


label_text() 3-4
IC Validator Reference Manual Version N-2017.12-SP2

layer_empty()
The layer_empty() function is a runtime-conditional function that is used within flow control
constructs. The function returns a value of true if the specified input layer is empty;
otherwise the function returns a value of false. Use this function to check whether a
particular function or group of functions produced error output.
Note:
Use of runtime-conditional functions might inhibit distributed scheduling and runset
optimization.

Syntax
layer_empty(
layer1 = data_layer
);

Returns
Boolean

Arguments
layer1
Required. Specifies the edge or polygon layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
if (layer_empty(m1))
{
note("Layer m1 is empty");
}
else
{
note("Layer m1 is not empty");
}
if (!layer_empty(m1))
{
note("Layer m1 is not empty");
copy(m1);
}

Chapter 3: Runset Functions: J - Z


layer_empty() 3-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
violation_empty()

Chapter 3: Runset Functions: J - Z


layer_empty() 3-6
IC Validator Reference Manual Version N-2017.12-SP2

layer_extent()
The layer_extent() function creates a polygon layer consisting of a single rectangle in the
top cell that is equal to the extents of the input layer in the top cell and all its placements. The
top cell is defined by the library() function.

Syntax
layer_extent(
layer1 = data_layer,
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the edge or polygon layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-1 shows how a single rectangle is created in the top cell. The rectangle is equal to
the extents of the specified layer.

Chapter 3: Runset Functions: J - Z


layer_extent() 3-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-1 layer_extent() Function Examples

layer1

layer2
layer_extent( layer_extent(
layer1); layer2); Result

See Also
cell_extent()
chip_extent()
layer_extent_list()

Chapter 3: Runset Functions: J - Z


layer_extent() 3-8
IC Validator Reference Manual Version N-2017.12-SP2

layer_extent_list()
The layer_extent_list() function creates a polygon layer consisting of a single rectangle
in the top cell that is equal to the extents of the input layers in the top cell and all its
placements. The top cell is defined by the library() function.

Syntax
layer_extent_list(
layers = {data_layer, ...},
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layers
Required. Specifies the edge and polygon layers.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
layer_extent()

Chapter 3: Runset Functions: J - Z


layer_extent_list() 3-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layer_statistics()
The layer_statistics() function reports statistics of the input layer. Use this function for
debugging purposes.

Syntax
layer_statistics(
layer1 = data_layer,
file = layer_statistics_file_handle, //optional
mode = OVERWRITE | APPEND, //optional
user_input = "string" //optional
);

Returns
void

Arguments
layer1
Required. Reports statistics for this data layer.

file
Optional. Writes statistics to this file. The file is defined using the
layer_statistics_file() function. By default, the IC Validator tool writes the
statistics to the summary file (cell.sum) and to the screen when the -verbose option is
used. Table 3-1 lists the reported statistics.
Table 3-1 Reported Statistics

Statistic Definition

Hierarchical levels Number of levels in the specified layer

Unique cells Number of unique cells in the specified layer

Hierarchical Total number of placements (SREFs and AREFs) at each level in the
placements specified layer

Flat placements Total number of placements (SREFs and AREFs) in the specified layer

Hierarchical DATA Number of data primitives (polygons, paths, and rectangles) in each cell
of the specified layer

Chapter 3: Runset Functions: J - Z


layer_statistics() 3-10
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-1 Reported Statistics (Continued)

Statistic Definition

Flat DATA Total number of data primitives in the specified layer. This number is
obtained by:
1. Multiplying the number of data primitives within each cell by the
number of flat placements of the cell.
2. Adding the resulting counts for each cell.
Hierarchical overlap of data is not considered.

Hierarchical TRAPS Number of trapezoids in the hierarchical data in the specified layer

Flat TRAPS Number of trapezoids in the flat data in the specified layer. This number
is obtained by:
1. Multiplying the trap count within each cell by the number of flat
placements of the cell.
2. Adding the resulting counts for each cell.
Hierarchical overlap of data is not considered.

Hierarchical SREF Total number of cell references at each hierarchical level in the specified
placements layer

Hierarchical AREFs Total number of array references at each hierarchical level in the
specified layer

Hierarchical AREF Total number of references in each array reference at each hierarchical
placements level in the specified layer

Hierarchical Number of rectangles in each cell in the specified layer


RECTANGLE

Hierarchical Number of nonrectangular polygons in each cell in the specified layer


POLYGONS

Total data coverage Percentage of the material coverage by this layer over the area of the
extent of the top cell

Group file size Size of the group file for the specified layer

Highest TRAP Highest trapezoid count found in a polygon in the specified layer
count in a polygon

Highest cell level Highest trapezoid count found in a cell in the specified layer
TRAP count

Chapter 3: Runset Functions: J - Z


layer_statistics() 3-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-1 Reported Statistics (Continued)

Statistic Definition

Highest cell level Highest count of data primitives found in a cell in the specified layer
DATA count

Highest cell level Highest placement count found in a cell in the specified layer. If a
PLACEMENT count placement is an AREF, the number of references in the array at the first
hierarchical level is counted.

The total sum of Sum of the perimeters of all polygons in the specified layer.
polygon perimeter

The total sum of Sum of the areas of all polygons in the specified layer.
polygon area

mode
Optional. Specifies the action for when the statistics file already exists. The default is
OVERWRITE.

❍ OVERWRITE. Overwrites the previous statistics file.

❍ APPEND. Appends the new data to the previous statistics file.

user_input
Optional. Specifies a user comment. This comment is written to the file specified by the
file argument or to the summary file (cell.sum).

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
// Output to the summary file

Chapter 3: Runset Functions: J - Z


layer_statistics() 3-12
IC Validator Reference Manual Version N-2017.12-SP2

layer_statistics(l1);

// Output to a statistics file


f = layer_statistics_file("stat.txt");
layer_statistics(l2, f);
layer_statistics(l3, f, APPEND);

See Also
layer_statistics_file()

Chapter 3: Runset Functions: J - Z


layer_statistics() 3-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layer_statistics_file()
The layer_statistics_file() function defines a layer statistics file. This file is specified
in the file argument of the layer_statistics() function
Limitation:
The layer_statistics_file() function cannot be called more than one time with the
same file argument. The result can be used in more than one layer_statistics()
function.

Syntax
layer_statistics_file(
file = "string"
);

Returns
layer_statistics_file_handle

Arguments
file
Required. Specifies the layer statistics file name. See the layer_statistics() function
for more information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
layer_statistics()

Chapter 3: Runset Functions: J - Z


layer_statistics_file() 3-14
IC Validator Reference Manual Version N-2017.12-SP2

layout_drawn_options()
The layout_drawn_options() function specifies criteria for checking and, where
appropriate, correction of various invalid layout data. (Problems with drawn data are
corrected automatically whenever possible.) If this function is not in the runset, it is
automatically invoked with the default values. This function can be called only one time in a
runset.
This checking occurs only on layers specified in assign functions, such as assign() or
assign_edge(). When a runset is optimized, unused assign layers are pruned and,
therefore, are not checked for invalid data.
Errors are reported to the LAYOUT_ERRORS file with the tag layout_drawn_errors. The
errors appear as an X in VUE.

Syntax
layout_drawn_options(
backtracking_points = true | false, //optional
collinear_points = true | false, //optional
duplicate_placements = true | false, //optional
duplicate_points = true | false, //optional
path_check = CENTERLINE | BOUNDARY, //optional
path_length = true | false, //optional
path_length_end = true | false, //optional
path_invalid_styles = {SQUARE, ROUND, SQUARE_EXTENDED,
CUSTOM}, //optional
scaled_instances = true | false, //optional
self_intersect = true | false, //optional
self_intersect_action = EMPTY | FILL, //optional
zero_area = true | false, //optional
zero_path = true | false, //optional
zero_segment = true | false //optional
);

Returns
void

Arguments
backtracking_points
Optional. Specifies if backtracking points are reported. When set to true, these points
are reported. (A backtrack point is the second point in a sequence of three points in a
polygon boundary where the first and third points are identical.) The default is false.

Chapter 3: Runset Functions: J - Z


layout_drawn_options() 3-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

collinear_points
Optional. Specifies if collinear polygon points are reported. When set to true, these
points are reported. (A collinear polygon point is a point that is collinear with the
preceding and following points on a straight edge of a boundary.) The default is false.

duplicate_placements
Optional. Specifies if duplicate instance placements of a child cell within a cell are
reported. When set to true, these placements are reported. The default is false.

duplicate_points
Optional. Specifies if duplicate polygon points are reported. When set to true, these
points are reported. (Duplicate polygon points are a series of identical points along a
boundary.) The default is false.

path_check
Optional. Specifies which feature of a path is checked. The default is BOUNDARY.
❍ BOUNDARY. Specifies that the resulting boundary, after path expansion, is checked for
violations in accordance with the other argument settings.
❍ CENTERLINE. Specifies that only the centerline of the path, before path expansion, is
checked for violations in accordance with the other argument settings.
For example, a path is drawn in the shape of a P. When the path is converted into a
polygon, it intersects where the end of the path curls in upon itself. The IC Validator
tool does not report this intersection as a self-intersection; it reports errors in the
LAYOUT_ERRORS file only for path centerlines that actually cross each other. Path
centerlines are also checked for duplicate, collinear, and backtracking points when
the backtracking_points, collinear_points, and duplicate_placements
arguments are set to true.

path_length
Optional. Specifies if a segment of a path that has a length less than one-half of the path
width is a violation. When set to true, any segment of a path that has a length less than
one-half of the path width is a violation. All path types are checked. The default is false.

path_length_end
Optional. Specifies if the first or last segment of a path that has a length less than
one-half of the path width and that would remove material is a violation. When set to
true, the first or last segment of a path that has a length less than one-half of the path
width and that would remove material is a violation. The default is false.
Note:
The GDSII path types 0 and 1 that do not have an extension larger than one-half of
the path width can remove material.

Chapter 3: Runset Functions: J - Z


layout_drawn_options() 3-16
IC Validator Reference Manual Version N-2017.12-SP2

Use the path_length argument to check all segments of a path. Single-segment paths
are not checked by the path_length_end argument.

path_invalid_styles
Optional. Reports paths that have any of the following specified styles. By default, the
IC Validator tool does not report paths.
The styles are:
❍ SQUARE

❍ ROUND

❍ SQUARE_EXTENDED

❍ CUSTOM

scaled_instances
Optional. Specifies if scaled instances are reported. When set to true, these instances
are reported. The default is false.

self_intersect
Optional. Controls the reporting of self-intersecting polygons. The default is false.
❍ true. Reports all self-intersecting polygons.

❍ false. Does not report self-intersecting polygons unless the IC Validator tool cannot
form a closed boundary with the points given.
A self-intersecting polygon is a polygon with edges that cross each other. Edges that
simply touch are not self-intersecting. A self-intersecting polygon can also be a polygon
with edges that cross in such a way that it appears as a polygon is within a polygon.
Figure 3-2 shows examples of self-intersecting polygons.
Figure 3-2 Examples of Self-Intersecting Polygons
self-intersecting
polygon areas

The IC Validator tool always attempts to create a closed boundary from every
self-intersecting polygon, according to the setting of the self_intersect_action
argument.

Chapter 3: Runset Functions: J - Z


layout_drawn_options() 3-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

self_intersect_action
Optional. Specifies whether an area of self-intersection is filled. The default is EMPTY.
❍ EMPTY. Specifies that the area of self-intersection is left as an empty area within the
polygon.
❍ FILL. Specifies that the area of self-intersection is filled within the polygon.
This argument affects only polygons. Areas of self-intersection in paths are always filled,
as shown in Figure 3-3.
Figure 3-3 Areas of Self-Intersecting Polygons
Input Output

self_intersect_action self_intersect_action
= EMPTY = FILL

zero_area
Optional. Specifies if zero-area polygons are reported. When set to true, these polygons
are reported. The default is false.

zero_path
Optional. Specifies if paths with assigned widths of 0 are reported. When set to true,
these paths are reported. The default is false.
Figure 3-4 shows a zero width path.
Figure 3-4 Example of Zero Width Path

zero_segment
Optional. Specifies if any part of a polygon that is a line segment or a zero width segment
is a violation. When set to true, if any part of a polygon is effectively a line segment or a
zero width segment, a violation occurs. The default is false.
Figure 3-5 shows a zero width segment within a polygon.
Figure 3-5 Examples of Zero Width Path Within a Polygon

Chapter 3: Runset Functions: J - Z


layout_drawn_options() 3-18
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
layout_drawn_options (
self_intersect = true,
path_invalid_styles = {ROUND, CUSTOM},
path_length_end = true
);

See Also
get_layout_drawn_violation()
layout_grid_options()

Chapter 3: Runset Functions: J - Z


layout_drawn_options() 3-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layout_grid_options()
The layout_grid_options() function specifies criteria for grid checking of input layers. If
this function is not in the runset, it is automatically invoked with the default values. This
function can be called only one time in a runset.
Grid checking occurs only on layers specified in assign functions, such as assign() or
assign_edge(). When a runset is optimized, unused assign layers are pruned and,
therefore, are not checked for grid violations.
Errors are reported to the LAYOUT_ERRORS file with the tag layout_grid_errors. The errors
appear as an X in VUE.

Syntax
layout_grid_options(
resolution = double, //optional
check_45 = {POLYGON, PATH}, //optional
check_90 = {POLYGON, PATH} //optional
);

Returns
void

Arguments
resolution
Optional. Specifies if layout layers are inspected for off-grid data. When set to a value
greater than the input library resolution, layout layers are inspected for off-grid data. To
specify a different resolution for a layer, use the grid_check argument of the assign()
and assign_edge() functions. The default is 0.
❍ Checks paths using their centerline, and checks path width with two times the
resolution value.
Note:
The IC Validator tool always checks that the path width is an even value. If it is an
odd value, the IC Validator tool reports an error. You cannot disable this checking.
❍ Checks polygon vertices.
❍ Checks cell placement points.

check_45
Optional. Specifies how layout data is checked for angles that are not even multiples of
45 degrees. To specify a different check for a layer, use the grid_check argument of the
assign() and assign_edge() functions. The default is PATH.

Chapter 3: Runset Functions: J - Z


layout_grid_options() 3-20
IC Validator Reference Manual Version N-2017.12-SP2

❍ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis of
the cell where the edges are defined, is not a multiple of 45 degrees.
❍ PATH. Reports path centerline segments as an error if the angle, with respect to the
x-axis of the cell where the edges are defined, is not a multiple of 45 degrees.

check_90
Optional. Specifies how layout data is checked for angles or rotations that are not even
multiples of 90 degrees. To specify a different check for a layer, use the grid_check
argument of the assign() and assign_edge() functions. The default is PATH.
❍ POLYGON. Reports polygon edges as an error if the angle, with respect to the x-axis of
the cell where the edges are defined, is not a multiple of 90 degrees.
❍ PATH. Reports path centerline segments as an error if the angle, with respect to the
x-axis of the cell where the edges are defined, is not a multiple of 90 degrees.
Note:
When errors are reported for both the check_45 and check_90 arguments, the
violation is reported only one time as a non-45 violation. For example, if both the
check_45 and check_90 arguments contain POLYGON, a 30-degree polygon edge is
reported as non-45, from which you can assume that it is also non-90; only 45-degree
polygon edges are reported as non-90.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
layout_grid_options (
resolution = 0.001,
check_45 = { PATH, POLYGON }
);

See Also
get_layout_grid_violation()
layout_drawn_options()

Chapter 3: Runset Functions: J - Z


layout_grid_options() 3-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layout_integrity_by_cell()
The layout_integrity_by_cell() function checks the specified cells against the layout
integrity databases (LIDBs) specified in the layout_integrity_options() function.
Multiple checksums can be present in the LIDBs listed for any given design cell. A design
cell is considered a match if its calculated checksums match any set of checksums for a cell
of the same name in any input LIDB specified in the layout_integrity_options()
function.
Note:
Although the layout_integrity_by_cell() function executes a check on the design,
because the check occurs while reading the layout, this function must appear in the
OPTIONS section and before assign functions.

Syntax
layout_integrity_by_cell(
cells = {"string", ...},
integrity_mismatch = REPORT | ABORT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
void

Arguments
cells
Required. Specifies the cells to check. If a design cell specified in this list exists in any
LIDB specified in the layout_integrity_options() function, the checksum values are
calculated and compared against cells of the same name in the LIDB list. String matching
using metacharacters is allowed. See “String Matching” on page A-11 for more
information.

integrity_mismatch
Optional. Specifies whether to terminate the IC Validator tool if a cell is checked and fails
to match any set of checksums in the LIDB list. The default is REPORT: The IC Validator
tool reports the mismatch in the LAYOUT_ERRORS file and continues to run.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is CELL_LEVEL.
❍ CELL_LEVEL. Checks cells that match the cell name list; children in the hierarchy of
the cell are not checked, but placements within the cell are checked. The cell names
of the child cells in the layout must match the child cell names in the LIDB, or a cell
name map must be used in the LIDB specification of the

Chapter 3: Runset Functions: J - Z


layout_integrity_by_cell() 3-22
IC Validator Reference Manual Version N-2017.12-SP2

layout_integrity_options() function. CELL_LEVEL mode does not look down the


hierarchy. Therefore, while the placements within the parent cell are checked, the
contents of the child cells do not contribute to the outcome of a CELL_LEVEL check on
the parent cell.
❍ HIERARCHICAL. Checks cells that match the cell name list; all children in the hierarchy
of the cell are also checked. Any layout integrity mismatch in a child cell is reported
in all parents that match the cell name list. It is not necessary for child cell names
under the layout cell with the marker layer polygon to match the child cell names in
the LIDB, as the child cells are matched based on their contents.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
This example shows a typical layout integrity check, for all cells in the input layout.
layout_integrity_options(
databases = {
{ db_name = "db1.lidb"
cell_name_map = { {"A_golden","A"}, {"B_golden","B"} }
}
}
);

layout_integrity_by_cell(cells = {"*"});

See Also
layout_integrity_by_marker_layer()
layout_integrity_options()

Chapter 3: Runset Functions: J - Z


layout_integrity_by_cell() 3-23
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layout_integrity_by_marker_layer()
The layout_integrity_by_marker_layer() function checks any design cell containing
data on the specified marker layer against the layout integrity databases (LIDBs) specified
in the layout_integrity_options() function. A design cell is considered a match if its
calculated checksums match any set of checksums for a cell with data present on the
marker layer in any input LIDB specified in the layout_integrity_options() function.
Note:
Although the layout_integrity_by_marker_layer() function executes a check on
the design, because the check occurs while reading the layout, this function must appear
in the OPTIONS section and before assign functions.

Syntax
layout_integrity_by_marker_layer(
marker_layer = {layer_num = integer, data_type = integer},
//optional
marker_layer_purpose = {layer_name = "string",
purpose_name = "string"}, //optional
integrity_mismatch = REPORT | ABORT, //optional
check_layers = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint},
...}, //optional
check_layer_purposes = {{layer_names = {"string", ...},
purpose_names = {"string", ...}},
...}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
void

Arguments
marker_layer
Optional. Specifies the layer and datatype of the marker layer. Either the marker_layer
or marker_layer_purpose argument is required. The default of the data_type option
is 0. See “Layout Layer and Datatype Ranges” on page A-6 for information about the
limits of the values.

marker_layer_purpose
Optional. Specifies the layer and purpose name of the marker layer, for OpenAccess
input layouts. Either the marker_layer or marker_layer_purpose argument is
required.

Chapter 3: Runset Functions: J - Z


layout_integrity_by_marker_layer() 3-24
IC Validator Reference Manual Version N-2017.12-SP2

integrity_mismatch
Optional. Specifies whether to terminate the IC Validator tool if a cell is checked and fails
to match any set of checksums in the LIDB list. The default is REPORT: The IC Validator
tool reports the mismatch in the LAYOUT_ERRORS file and continues to run.

check_layers

Optional. Lists the layer range and datatype range pairs that determine which layers to
compare against checksum entries in the LIDB. If this list is specified, only mismatches
on those layers count as a cell mismatch. By default, the IC Validator tool checks all
layers in each cell. See Layout Layer and Datatype Ranges for information about the
limits of the values.

check_layer_purposes

Optional. Lists the layer name and purpose name pairs that determine which layers to
compare against checksum entries in the LIDB for OpenAccess layouts. If this list is
specified, only mismatches on those layers count as a cell mismatch. By default, the
IC Validator tool checks all layers in each cell.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is CELL_LEVEL.
❍ CELL_LEVEL. Checks cells with a marker layer polygon without regard to children in
the hierarchy, but placements within the cell are checked. The cell names of the child
cells in the layout must match the child cell names in the LIDB, or a cell name map
must be used in the LIDB specification of the layout_integrity_options()
function. CELL_LEVEL mode does not look down the hierarchy. Therefore, while the
placements within the parent cell are checked, the contents of the child cells do not
contribute to the outcome of a CELL_LEVEL check on the parent cell.
❍ HIERARCHICAL. Checks cells with a marker layer polygon; all children in the hierarchy
are also checked. Any layout integrity mismatch in a child cell is reported in all
parents that contain a marker layer. It is not necessary for child cell names under the
layout cell with the marker layer polygon to match the child cell names in the LIDB, as
the child cells are matched based on their contents.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 3: Runset Functions: J - Z


layout_integrity_by_marker_layer() 3-25
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
layout_integrity_options(
databases = {{ db_name = "db1.lidb" } }
);

{ @ "Cell Authentication: Class A";


layout_integrity_by_marker_layer(
marker_layer = { 10, 1 },
check_layers = { {==10}, {==11}, {==12} }
);
}

{ @ "Cell Authentication: Class B";


layout_integrity_by_marker_layer(
marker_layer = { 13, 1 },
check_layers = { {==14}, {==15}, {==16} }
);
}

See Also
layout_integrity_by_cell()
layout_integrity_options()

Chapter 3: Runset Functions: J - Z


layout_integrity_by_marker_layer() 3-26
IC Validator Reference Manual Version N-2017.12-SP2

layout_integrity_options()
The layout_integrity_options() function specifies which layout integrity databases
(LIDBs) should be used for checking cells in the design. The databases are searched in
order for a matching cell. Use the icv_lidb utility to generate and manage layout integrity
databases.
Note:
For the mixed Milkyway and GDSII flow, each replacement library has its own list of
layout integrity databases. In this flow, only Milkyway cells are matched against the
database list specified in the layout_integrity_options() function.

Syntax
layout_integrity_options(
databases = {{db_name = "string",
missing_db = = ABORT | IGNORE, //optional
cell_name_map = {{search_string = "string",
replace_string = "string"},...},
...} //optional
);

Returns
void

Arguments
databases
Optional. Specifies the list of layout integrity databases that the IC Validator tool uses for
layout integrity checking. By default, the IC Validator tool does not check layout integrity.
❍ db_name. Required. Specifies the path to the layout integrity database.

❍ missing_db. Optional. Specifies the behavior when the IC Validator tool does not find
the specified layout integrity database. By default, the IC Validator tool terminates
with an error.
■ ABORT. Specifies that the run stops when the layout integrity database is not
found.
■ IGNORE. Continues the IC Validator run if the tool cannot find the layout integrity
database.
❍ cell_name_map. Optional. Specifies lists that tells how cell names are remapped as
data is read from the LIDB. By default, the IC Validator tool does not remap cell
names.
■ search_string. Required. Specifies the existing cell name in the input LIDB.

Chapter 3: Runset Functions: J - Z


layout_integrity_options() 3-27
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ replace_string. Required. Specifies the cell name used for layout integrity
checking within IC Validator.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
layout_integrity_options (
databases = {
{ db_name = "db1.lidb"
cell_name_map = { {"A_golden","A"}, {"B_golden","B"} }
}
}
);

See Also
layout_integrity_by_cell()
layout_integrity_by_marker_layer()

Chapter 3: Runset Functions: J - Z


layout_integrity_options() 3-28
IC Validator Reference Manual Version N-2017.12-SP2

length_edge() and not_length_edge()


The length_edge() function selects edges based on their length. The complement of this
function is the not_length_edge() function.

Syntax
length_edge(
layer1 = data_layer,
distance = doubleconstraint,
corners = CONNECT | IGNORE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_length_edge(
layer1 = data_layer,
distance = doubleconstraint,
corners = CONNECT | IGNORE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which edges are selected.

distance
Required. Length specification.
Figure 3-6 shows the effect of the distance argument setting with the length_edge()
function.

Chapter 3: Runset Functions: J - Z


length_edge() and not_length_edge() 3-29
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-6 distance Argument Example With the length_edge() Function

>4 <2 [2,4]

layer1 Result

corners
Optional. The processing at corners. The default is IGNORE.
❍ CONNECT. Connects the edges at corners, measuring the entire length.

■ For polygon layers, this processing is a perimeter check.


■ For edge layers, a corner is a point where the start of exactly one edge is
coincident with the end of exactly one edge, and the edges are not collinear.
❍ IGNORE. Ignores the corners; edges are measured individually.
Figure 3-7 shows the effect of the corners argument setting with the length_edge()
function. The distance argument is >4.

Chapter 3: Runset Functions: J - Z


length_edge() and not_length_edge() 3-30
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-7 corners Argument Example With the length_edge() Function

layer1 Result

layer1 shadow
IGNORE CONNECT shown for illustration

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.

Chapter 3: Runset Functions: J - Z


length_edge() and not_length_edge() 3-31
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
adjacent_edge() and not_adjacent_edge()

Chapter 3: Runset Functions: J - Z


length_edge() and not_length_edge() 3-32
IC Validator Reference Manual Version N-2017.12-SP2

level()
The level() function creates a copy of the input layer, where hierarchically interacting data
is moved up to a common point in the hierarchy. The interaction is limited to overlap and
abutment.

Syntax
level(
layer1 = polygon_layer,
allow_duplicate_output = true | false, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

allow_duplicate_output
Optional. Specifies how the level() function processes data with duplicate shapes. The
default is false.
❍ true. Keeps duplicate shapes that are in different cells, or placements of the same
cell, rather than leveling the shapes to the common parent and merging one away.
Setting the allow_duplicate_output argument to true can help IC Validator
performance when there are multiple duplicate shapes throughout the hierarchy. For
example, performance is helped for vias where each placement of a cell has an exact
overlapping column or row of vias with the previous placement.
❍ false. Does not keep duplicate shapes.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


level() 3-33
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

Merging Hierarchically Disjointed Polygons


The level() function can be used to merge hierarchically disjointed polygons at a higher
level of the hierarchy. In the following example, the met1 layer overlaps itself in the hierarchy
in several places. Consider the met1 layer shown in Figure 3-8.
Figure 3-8 Layer to be Leveled
Input Hierarchy met1

TOP

X
Z Y

Flat Representation Input Hierarchy Tree

TOP
TOP

X X Y Z

Z Y

Chapter 3: Runset Functions: J - Z


level() 3-34
IC Validator Reference Manual Version N-2017.12-SP2

The leveling operation is performed throughout the entire design hierarchy, regardless of
cell name. As shown in Figure 3-9, the level() function creates one output layer. Polygons
from the input hierarchy that do not hierarchically overlap other polygons remain in their
initial cell.
lvl_met1 = level(met1);

Figure 3-9 Leveled Layer


Output Hierarchy lvl_met1
TOP

Z
Y
Flat Representation Output Hierarchy

TOP
TOP

Y Z

Y
Z

Allowing Duplicate Output


In Figure 3-10, TOP has four placements of the c1 cell and three placements of the c2 cell.
One rectangle of c1 and one of c2 overlap by 100 percent. That is, from the top view they
occupy the same space.

Chapter 3: Runset Functions: J - Z


level() 3-35
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-10 allow_duplicate_output Argument Example


TOP
c1 c1 c1 c1

c2

c2

c2

When the allow_duplicate_output argument is true, the overlapping cells are retained.
The result is the same as the input: there are no polygons on TOP, two polygons on each c1
cell, and one polygon on each c2 cell.
When the allow_duplicate_output argument is false, which is the default setting, the
polygons of c1 and c2 that interact are leveled to TOP. These polygons are marked with a
green X in Figure 3-11.
Figure 3-11 allow_duplicate_output = false
TOP
c1 c1 c1 c1

X X X X
c2

X
c2

X
c2

See Also
level_edge()
level_to()
level_to_edge()
pull_down()
pull_down_edge()

Chapter 3: Runset Functions: J - Z


level() 3-36
IC Validator Reference Manual Version N-2017.12-SP2

level_edge()
The level_edge() function creates a copy of the input layer, where hierarchically
interacting data is moved up to a common point in the hierarchy. For edge layers, any
interaction (including point touch) is considered a hierarchical interaction.

Syntax
level_edge(
layer1 = edge_layer,
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the example shown in Figure 3-12, in_layer has TOP and X.
out_layer = level_edge(in_layer);

Chapter 3: Runset Functions: J - Z


level_edge() 3-37
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-12 level_edge() Function Example

TOP

in_layer with X placed in TOP


TOP

X
X

in_layer
(edge layer)
TOP
Cell boundary

Result of level_edge function


TOP

X
X

out_layer
(edge layer)
TOP Cell boundary

See Also
level()
level_to()
level_to_edge()
pull_down()
pull_down_edge()

Chapter 3: Runset Functions: J - Z


level_edge() 3-38
IC Validator Reference Manual Version N-2017.12-SP2

level_to()
The level_to() function creates a copy of the layer1 polygon layer where data that is
hierarchically interacting with data in the layer2 data layer is moved up to a common point
in the hierarchy. It also moves hierarchically interacting data within the layer1 polygon layer
to a common point. If both layers are polygon data, the definition of interacting is limited to
overlap and abutment. When layer2 is an edge layer, any interaction, including point touch,
is considered a hierarchical interaction.

Syntax
level_to(
layer1 = polygon_layer,
layer2 = data_layer,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is leveled.

layer2
Required. Specifies the data layer to which the layer1 polygon layer is leveled.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.

Chapter 3: Runset Functions: J - Z


level_to() 3-39
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the example shown in Figure 3-13, the cell PROG_ROM is a holding cell that contains
one placement of the cell POL_CELL and one placement of the cell DIF_CELL. POL_CELL
contains only polygons from the poly layer and DIF_CELL contains only polygons from the
diff layer. The two cell placements overlap each other. Notice that some of the diff polygons
do not overlap poly polygons.
lvl_output = level_to(diff,poly);

Figure 3-13 level_to() Function Example Input


ROM Input Hierarchy diff poly

PROG_ROM
POL_CELL DIF_CELL

Flat Representation Input Hierarchy Tree


POL_CELL DIF_CELL
PROG_ROM

PROG_ROM

POL_CELL DIF_CELL

This level_to() function creates an output layer, lvl_output, shown in Figure 3-14. Only
three of the input polygons in DIF_CELL overlap polygons in POL_CELL, so only three diff
polygons are leveled to the common ancestor. Three of the diff polygons remain in the cell
DIF_CELL for the lvl_output output layer.

Chapter 3: Runset Functions: J - Z


level_to() 3-40
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-14 level_to() Function Example Output


Output Hierarchy lvl_output
PROG_ROM

poly

DIFF_CELL

Flat Representation Hierarchy Tree for lvl_output


DIF_CELL
PROG_ROM

PROG_ROM

DIF_CELL

See Also
level()
level_edge()
level_to_edge()
pull_down()
pull_down_edge()

Chapter 3: Runset Functions: J - Z


level_to() 3-41
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

level_to_edge()
The level_to_edge() function creates a copy of layer1 where data that is hierarchically
interacting with layer2 data is moved up to a common point in the hierarchy. It also moves
hierarchically interacting data within the layer1 layer to a common point. For edge layers,
any interaction (including point touch) is considered a hierarchical interaction.

Syntax
level_to_edge(
layer1 = edge_layer,
layer2 = data_layer,
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer that is leveled.

layer2
Required. Specifies the edge or polygon layer to which the layer1 edge layer is leveled.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


level_to_edge() 3-42
IC Validator Reference Manual Version N-2017.12-SP2

Example
Figure 3-15 shows an example of the level_to_edge() function.
out_layer = level_to_edge(in_layer1, in_layer2);

Figure 3-15 level_to_edge Function Example

TOP

Input
TOP

X
X

in_layer1
(edge layer)
TOP in_layer2
(edge layer)

Result of level_to_edge function Cell boundary

TOP

out_layer
(edge layer)
TOP
Cell boundary

See Also
level()
level_edge()
level_to()

Chapter 3: Runset Functions: J - Z


level_to_edge() 3-43
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pull_down()
pull_down_edge()

Chapter 3: Runset Functions: J - Z


level_to_edge() 3-44
IC Validator Reference Manual Version N-2017.12-SP2

library()
The library() function registers a library for other functions, such as the assign()
function. You must use the appropriate arguments of the library() function for each input
layout format. Otherwise, the input layout file is not found and the run ends with an error.
The library() function defines the design library. Call it before calling assign functions. If
you are importing additional libraries, as opposed to merging additional libraries into the
main library using the merge_libraries argument, also call the library_import()
function in the OPTIONS section of the runset.
Note:
A runset cannot call both the library() and the library_create() functions, and
neither can be called more than one time.

Syntax
library(
library_name = "string",
format = GDSII | OASIS | MILKYWAY | OPENACCESS | NDM,
cell = "string",
library_path = "string", //optional
library_definition_file = "string", //optional
magnification_factor = double, //optional
merge_libraries = {{library_name = "string",
format = GDSII | OASIS,
layer_map_file = "string"}, ...}, //optional
golden_libraries = {{library_name = "string",
format = GDSII | OASIS}, ...} //optional
);

Returns
library or void
The library() function does not return a value when the merge_libraries argument is
used.

Arguments
library_name
Required. Specifies the path and file name for GDSII and OASIS formats; library name
for Milkyway, NDM, and OpenAccess formats.
Note:
The -i command-line option overrides this name. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.

Chapter 3: Runset Functions: J - Z


library() 3-45
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

A GDSII or OASIS file can be gzipped. The IC Validator tool automatically detects if a
GDSII or OASIS file is gzipped.

format
Required. Specifies the format of the input: GDSII, MILKYWAY, NDM, OASIS, or
OPENACCESS. See the ldt_list argument of assign functions for information about the
layer and datatype range limits.
Note:
The -f command-line option overrides this format. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.

cell
Required. Specifies the cell to be checked. This structure must be in the specified library.
Note:
The -c command-line option overrides this name. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.
By specifying -cell "*" you can run the IC Validator tool using the OASIS or GDSII
format without specifying the top cell. The tool finds the top cell in the database. If there
is more than one potential top cell, the IC Validator tool chooses the first one it finds in
the database and writes a warning message in the summary file. Do not use -cell "*"
in these situations:
❍ LVS runsets; that is, runsets with a call to the compare() function.
❍ Runsets that call the get_top_cell() function before the end of the ASSIGN
section.
❍ With the -ndg or -C command-line options.
❍ Runsets that set the select_window or exclude_window argument of the
incremental_options() function.

❍ Databases that are not in GDSII or OASIS format.

library_path
Required when the format argument is MILKYWAY or NDM. Specifies the path of the
parent directory for the Milkyway or NDM library. This file is not used for GDSII, OASIS,
or OpenAccess input.

Chapter 3: Runset Functions: J - Z


library() 3-46
IC Validator Reference Manual Version N-2017.12-SP2

library_definition_file
Required when the format argument is OPENACCESS. Specifies the library definition file
for the OpenAccess input database. This file is not used for GDSII, Milkyway, or OASIS
input.

magnification_factor
Optional. Scales data as it is read in. A magnification factor between 0.0 and less than
1.0 shrinks data. A magnification factor greater than 1.0 enlarges data. The default is 1.0
(no magnification).

merge_libraries
Optional. Specifies a list of the libraries that are merged. The merge_libraries
argument supports only the GDSII and OASIS formats, and all libraries must have the
same format as the main library. Cells with the same name are merged. The library()
function does not return a value when using the merge_libraries argument.
Note:
The -i command-line option overrides this list. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.
❍ library_name
Required. Specifies the path and file name for GDSII and OASIS formats.
❍ format
Required. Specifies the format of the library: GDSII or OASIS. This format must be the
same as the main library format.
❍ layer_map_file
Optional. Specifies the layer mapping file for this library. The file format is:
DstLayer[:DstDatatype] SrcLayer[:SrcDatatype]

Comments are specified with a semicolon. All text following the semicolon on the
current line is part of the comment.
For example, to map layer 5 to layer 35, datatype 2
35:2 5

golden_libraries
Optional. Specifies a list of “golden” libraries that the IC Validator tool can use when
performing geometric matches to determine which cells to select in the assign()
function. The golden_libraries argument supports only the GDSII and OASIS
formats.

Chapter 3: Runset Functions: J - Z


library() 3-47
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ library_name. Required. Specifies the path and file name for a GDSII and OASIS
format library.
❍ format. Required. Specifies the format of the library: GDSII or OASIS. This format
must be the same as the main library format.
Note:
The library_import() function is not supported when this geometry-match flow is
active.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
Note: Reading an NDM database requires native licensing.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
library (
library_name = "/path/design.oasis",
format = OASIS,
cell = "chip"
);

See the gendev() function for an example with GDSII format and the
openaccess_options() function for an example with OpenAccess format.

See Also
assign()
get_top_cell()
library_create()
library_import()

Chapter 3: Runset Functions: J - Z


library() 3-48
IC Validator Reference Manual Version N-2017.12-SP2

library_create()
The library_create() function creates a one-cell library that has no data. This library is
internal to the IC Validator tool to be used during the run. This function allows you to create
a top-level holding cell. Each library_import() function call places its top cell under the
holding cell.
Note:
A runset cannot call both the library() and the library_create() functions, and
neither can be called more than one time.

Syntax
library_create(
cell = "string"
);

Returns
void

Arguments
cell
Required. Names the cell.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
See the Examples section of the library_import() function for more information.

See Also
library()
library_import()

Chapter 3: Runset Functions: J - Z


library_create() 3-49
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

library_import()
The library_import() function reads in the specified library and places its top cell under
the top cell of the design library defined by the library() or library_create() function.
You can call the library_import() function multiple times in a runset. Use this function to
• Read in multiple libraries and place them under a holding cell.
• Add a fill library to a design library. The top cell of the fill library is placed under the top
cell of the design library.

You can use the return value of this function and of the library() function in assign
functions.
Note:
If you use the library_import() function, you must use the libraries argument of an
assign function that is in the runset. (The assign(), assign_edge(), and
assign_text() functions have a libraries argument. Assign functions that support
OpenAccess do not have a libraries argument.)

Syntax
library_import(
library_name = "string",
format = GDSII | OASIS,
cell = "string",
magnification_factor = double, //optional
cell_prefix = "string", //optional
apply_prefix = LOWER_CELLS | ALL_CELLS, //optional
layer_map_file = "string" //optional
);

Returns
library

Arguments
library_name
Required. Specifies the path and file name for GDSII and OASIS formats.
Note:
A GDSII or OASIS file can be gzipped. The IC Validator tool automatically detects if a
GDSII or OASIS file is gzipped.

format
Required. Specifies the format of the input: GDSII or OASIS. See the ldt_list argument
of assign functions for information about the layer and datatype range limits.

Chapter 3: Runset Functions: J - Z


library_import() 3-50
IC Validator Reference Manual Version N-2017.12-SP2

cell
Required. Specifies the cell to be imported. This structure must be in the specified library.

magnification_factor
Optional. Scales data as it is read in. A magnification factor between 0.0 and less than
1.0 shrinks data. A magnification factor greater than 1.0 enlarges data. The default is 1.0
(no magnification).

cell_prefix
Optional. Specifies the prefix for the cells in this library.
Note:
If the runset calls the library() function, as opposed to the library_create()
function, then you should not use an empty cell_prefix string for any of the
library_import() functions calls unless you know that there are no naming
conflicts between any of the imported libraries and the main design library specified
in the library() function.

apply_prefix
Optional. Specifies if the cell_prefix is applied to only the cells below the top cell or to
all cells. The default is ALL_CELLS.

layer_map_file
Optional. Specifies the data layer mapping file for this library. The file format is:
DstLayer[:DstDatatype] SrcLayer[:SrcDatatype]

Comments are specified with a semicolon. All text following the semicolon on the current
line is part of the comment.
For example, to map layer 4, datatype 8 to layer 43, datatype 4
43:4 4:8

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.

Chapter 3: Runset Functions: J - Z


library_import() 3-51
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following example shows the use of the library_import() function with the
library() function.
#include "icv.rh"

lib1 = library(library_name = "one.oasis",


cell = "A",
format = OASIS);

lib2 = library_import(library_name = "two.gds",


cell = "A",
cell_prefix = "TWO_",
format = GDSII);

... // rest of the runset

The following example shows using the library_import() function with the
library_create() function.
#include "icv.rh"

library_create("HOLD");

lib1 = library_import(library_name = "one.gds",


cell = "A",
cell_prefix = "ONE_",
format = GDSII);
lib2 = library_import(library_name = "two.oasis",
cell = "A",
cell_prefix = "TWO_",
format = OASIS);

... // rest of the runset

See Also
library()
library_create()

Chapter 3: Runset Functions: J - Z


library_import() 3-52
IC Validator Reference Manual Version N-2017.12-SP2

lvs_black_box_options()
The lvs_black_box_options() function defines which equivalence cells are black-box
cells. Any device and connection data contained within the black-box cell is ignored; only the
port connections of the black-box cells are checked. If a black-box cell exists in the
schematic or layout, it is maintained during the compare process.
This function must be called before assign functions.
Note:
You can use the -e command-line option to add equivalence options that you have
defined in a separate file. See the Command-Line Options section in the “IC Validator
Basics” chapter of the IC Validator User Guide for more information.

Syntax
lvs_black_box_options(
equiv_cells = {{schematic_cell
"string", =
layout_cell =
"string"}, ...},
equate_ports = {{schematic_port
"string", =
layout_port =
"string"}, ...},
//optional
remove_schematic_ports = {"string", ...}, //optional
remove_layout_ports = {"string", ...}, //optional
schematic_swappable_ports = {{"string", ...}, ...} //optional
);

Returns
void

Arguments
equiv_cells
Required. Lists the schematic and layout cell name pairs. If only one cell name of a cell
pair is specified, both cell names are assumed to be the same. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.

equate_ports
Optional. Lists the schematic and layout port pairs that determine the port
correspondence between the schematic and layout cells. These pairs are treated as if
they compare. Ports not listed are matched by name. By default, the IC Validator tool
matches all ports by name.

remove_schematic_ports
Optional. Specifies the schematic ports to be removed. Use this argument to list the ports
in the schematic netlist that do not have an equivalent port in the layout netlist. The

Chapter 3: Runset Functions: J - Z


lvs_black_box_options() 3-53
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

IC Validator tool matches all other ports with the same name. You can use the "*"
metacharacter in the list of ports.

remove_layout_ports
Optional. Specifies the layout ports to be removed. Use this argument to list the ports in
the layout netlist that do not have an equivalent port in the schematic netlist. The
IC Validator tool matches all other ports with the same name. You can use the "*"
metacharacter in the list of ports.
The following example uses multiple metacharacters. Ports with names like
floatingnet_1_fill_1, floatingnet_1_fill_2, and floatingnet_2_fill_1 are removed from
black-box cells during the compare operation.
remove_layout_ports = {"floatingnet_*_fill_*"}

schematic_swappable_ports
Optional. Lists the port names that are treated as being logically equivalent for
comparison purposes at higher levels of the design hierarchy.

Description
Equivalence and Black-Box Conflict Behavior
The IC Validator tool handles equivalence and black-box conflict behavior by using the
following priority setting rules when input settings are in conflict.
• Full name wins wildcard
For example:
Schematic side has cells A1, D1
Layout side has cells B1, C1
Table 3-2 Priority Rule: Full Name Wins Wildcard

Runset setting Result

equiv_options({"A*","C*"}) equiv(D1,B1)
equiv_options({"A*","B*"}) equiv(A1,C1)
equiv_options({"D1","B1"})

lvs_black_box_options({"A*","C*"}) black_box(D1,B1)
lvs_black_box_options({"A*","B*"}) black_box(A1,C1)
lvs_black_box_options({"D1","B1"})

black_box_options({"A*","B*"}) equiv(A1,B1)
equiv_options({"A1","B1"})

Chapter 3: Runset Functions: J - Z


lvs_black_box_options() 3-54
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-2 Priority Rule: Full Name Wins Wildcard (Continued)

Runset setting Result

lvs_black_box_options({"D1","C1"}) black_box(D1,C1)
equiv_options({"D*","C*"})

• lvs_black_box_options() wins equiv_options()


For example:
Schematic side has cells A1, D1
Layout side has cells B1, C1
Table 3-3 Priority Rule: lvs_black_box_options() Wins the equiv_options()

Runset setting Result

lvs_black_box_options({"A1","B1"}) black_box(A1,B1)
equiv_options({"A1","C1"})

lvs_black_box_options({"D*","C*"}) black_box(D1,C1)
equiv_options({"A*","C*"})

In summary, the priority rules are as follows:


• lvs_black_box_options(full name)

• equiv_options(full name)

• lvs_black_box_options(wildcard)

• equiv_options(wildcard)

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
match()

Chapter 3: Runset Functions: J - Z


lvs_black_box_options() 3-55
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_options()
The lvs_options() function generates user-intended and system-generated equivalence
cell pairs. This functionality generates equivalences without the use of the
equiv_options() function.

The lvs_options() function provides two arguments to separately control the generation
of user-intended and system-generated equivalences.
• A user-intended equivalence cell pairing is a pairing that you intend to be logically
equivalent in the design. You want to see errors for user-intended equivalence cell
pairings reported in all compare error outputs to enable your design debugging.
• A system-generated equivalence cell pairing is heuristically generated by the
IC Validator tool to improve the hierarchical performance of the compare engine. You do
not necessarily intend this pairing to be logically equivalent. As such, you do not want to
see errors for system-generated equivalence cell pairings in standard compare error
outputs. Furthermore, system-generated equivalence cell pairings that fail the compare
operation are exploded when using the compare(action_on_error=NO_EXPLODE)
setting, thereby enabling the compare run to continue as if the pairing never existed.

The lvs_options() function observes the specification of equivalences to be ignored that


are specified in the equiv_options() function. In the following example, the
lvs_options() function generates equivalence cell pairings for all schematic and layout
cell names having matching strings, except for schematic cells named cellA.
lvs_options(generate_user_equivs=FULL_NAME_CASE_SENSITIVE);

equiv_options({{schematic_cell="cellA", layout_cell="*", ignore=true});

Syntax
lvs_options(
generate_user_equivs = FULL_NAME_CASE_SENSITIVE |
FULL_NAME_CASE_INSENSITIVE |
SCHEMATIC_CELL_NAME |
NONE, //optional
generate_system_equivs = true | false, //optional
device_extraction_preserved_cells = {"string", ...}, //optional
spice_multiplier_names = {"string", ...}, //optional
spice_device_multipliers = {
{device_multiplier_names = {"string", ...},
device_type = spice_device_type,
device_names = {"string", ...}}, ...}, //optional
extract_devices_in_black_box_cells = true | false //optional
);

Returns
void

Chapter 3: Runset Functions: J - Z


lvs_options() 3-56
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
generate_user_equivs
Optional. Specifies the user-intended equivalence cell pairings for cells with the same
name. Those cells are not exploded. The default is NONE.
❍ FULL_NAME_CASE_SENSITIVE. Generates equivalence cell pairings for all cell name
pairings having identical case-sensitive matching strings, in addition to those
equivalence cell pairings generated by equiv_options() and
lvs_options(generate_system_equivs).

❍ FULL_NAME_CASE_INSENSITIVE. Generates equivalence cell pairings for all cell


name pairings having identical case-insensitive matching strings, in addition to those
equivalence cell pairings generated by equiv_options() and
lvs_options(generate_system_equivs).

❍ SCHEMATIC_CELL_NAME. Specifies that all schematic cell names automatically


become user equivalence cell names.
❍ NONE. Does not generate equivalence cell pairings except for those generated by
equiv_options() and lvs_options(generate_system_equivs).

generate_system_equivs
Optional. Enables the generation of system-generated equivalence cell pairings.
System-generated equivalence cell pairings are generated heuristically according to cell
names and instance counts within the cells. Cells with the same name might be explode
to improve the overall runtime. The default is true.
❍ true. Generates system-only equivalence cell pairings.

❍ false. Does not generate system-only equivalence cell pairings that have no
runset-level control options; an equivalent option must be in the runset.

device_extraction_preserved_cells
Optional. Specifies parameterized cells (pcells) to preserve in the device extraction flow.
If you select the dual-hierarchy flow, the preserved cell setting is applied in only the
compare pass. When extracting simulation properties, device extraction levels the
device inside the preserved cell to ensure property correctness.
A preserved cell is a parameterized cell or pcell that is placed in the layout to represent
a device. These device cells are pre-characterized and are not equiv points. The
purpose of this argument is to maintain the device within the cell even if there is cross
hierarchy interaction between the device body, terminal, and the processing layers. (The
processing layers are specified with the processing_layer_hash argument of the
device configuration functions.)
The typical application for this argument is a flow in which parameterized cells (pcells)
are specified as preserved cells in the StarRC tool with the SKIP_PCELLS command.

Chapter 3: Runset Functions: J - Z


lvs_options() 3-57
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
This option is not intended to be a “brute force” mechanism to prevent devices from
leveling out of equivalence points, nor is this option intended to be used in lieu of
using the dual-hierarchy flow for preserving LVS netlist hierarchy for compare. Do not
declare a cell as a preserved device cell unless all body, terminal, and recognition
and processing layers for the devices are defined within the preserved cell prior to
calling the extract_devices() function. Otherwise, if some of the polygons for a
device in the preserved cell reside in hierarchies outside of the preserved cell,
including other preserved cells, the device might not be recognized correctly or the
property values might be incorrect.
You select the dual-hierarchy flow by setting the dual_hierarchy_extraction
argument of the init_device_matrix() function to true.
See the Examples section on page 3-59 for more information.

spice_multiplier_names
Optional. Specifies multiplier factors that can be used in the LVS flow. The names can
consist of letters and digits. The initial character must be a letter, and the letters are
case-insensitive. The length of each multipliers must be less than or equal to 1024.
This argument can be used with or without the -sp-multiplier command-line option of
NetTran. See the -sp-multiplier command-line option in the Command-Line Syntax
for NetTran section in the “Netlist Formats” section of the IC Validator LVS User Guide
for more information.

spice_device_multipliers
Optional. Specifies device-specific multipliers used to indicate parallel device instances.
❍ device_multiplier_names. Specifies multiplier factors that can be used with device
types specified with the device_type option. The multiplier names must be specified
with the spice_multiplier_names argument.
❍ device_type. Specifies the SPICE device type where the device specific multipliers
are applied. Table 3-4 lists the SPICE device types.
Table 3-4 SPICE Device Types

SPICE_BJT SPICE_CAP SPICE_CELL SPICE_DIODE

SPICE_IND SPICE_MOS SPICE_RES

❍ device_names. Specifies device model names (or sub-circuit names if the


device_type argument is set to SPICE_CELL) where the device-specific multipliers
are applied. The default is an empty list, which denotes all device model names of the
specified device type. These names must conform to the naming rules discussed in

Chapter 3: Runset Functions: J - Z


lvs_options() 3-58
IC Validator Reference Manual Version N-2017.12-SP2

the “Device Names” section of the “Strings and Names” section of Appendix A,
“Runset Basics.”

extract_devices_in_black_box_cells
Optional. Specifies if device extraction processes black-box cells. The default is true.
❍ true. Extracts devices in black-box cells.

❍ false. Does not extract devices in black-box cells. The netlist outputs a black box as
an empty cell.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following examples illustrate how the device_extraction_preserved_cells
argument preserves cells.
As shown in Figure 3-16, the IC Validator tool does not level a device body polygon layer out
of a preserved cell even if there is a cross interaction between the body and terminal or
processing layer polygons located in the parent cell.
Figure 3-16 shows hierarchical device extraction when there are two placements of a cell,
“MY_CELL,” with an instance-specific interaction on the “Term2” polygon from a polygon in
the parent cell.
Figure 3-16 Preserved Cells in Hierarchy Device Extraction

• MY_CELL is not a preserved cell:

Chapter 3: Runset Functions: J - Z


lvs_options() 3-59
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ Device extraction levels this device to the parent of MY_CELL, and it extracts this
device by Term1 and Term2, including the Term2 data from the parent cell.
• MY_CELL is a preserved cell:
❍ Device extraction extracts this device in MY_CELL, and it uses only Term1 and Term2
polygons within MY_CELL to form this device.

Figure 3-17 shows the processing layer and property calculations for the preserved cell.
Shapes with dashed outlines are in the top cell. The brown layer is the WELL layer and is in
both the top cell and MY_CELL. The yellow layer is DIFFUSION and the blue layer is
POLYSILICON.
Figure 3-17 Processing Layer and Property Calculations for Preserved Cells

• MY_CELL is not a preserved cell


❍ Device “P” is leveled to the parent. Property measurements for the WELL, such as
WPE, extend from device “P” to the real WELL boundary (b).
• MY_CELL is a preserved cell
❍ Device “P” is maintained in MY_CELL. Property measurements for the WELL, such
as WPE, extend from device “P” to the WELL polygon boundary inside MY_CELL (a).

Notice that for the device “T”, which is not in a preserved cell, the polygons in MY_CELL are
always considered whether MY_CELL is preserved or not. In other words, measurements
made from outside a preserved cell can extend within a preserved cell, but measurements
made from within a preserved cell will not extend beyond the preserved cell boundary.

Chapter 3: Runset Functions: J - Z


lvs_options() 3-60
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-18 MY_CELL is a Preserved Cell

The layer for body formation (yellow) and terminal formation (blue) are both in
MY_CELL_SUB, as shown in Figure 3-18. The blue dashed layer is the same layer used for
terminal formation and is in cell MY_CELL.
• MY_CELL is not a preserved cell:
❍ Device extraction levels and extracts this device in MY_CELL.
• MY_CELL is a preserved cell:
❍ Device extraction still levels and extracts this device in MY_CELL. Devices can be
leveled out of non-preserved child cells, such as MY_SUB_CELL and extracted in
parent preserved cells.

The body and recognition layers must not overlap across the boundaries of the preserved
cells, as it affects the number of extracted devices. See Figure 3-19.

Chapter 3: Runset Functions: J - Z


lvs_options() 3-61
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-19 Body and Recognition Layers

The layer for body formation (yellow) and terminal formation (blue) are both in MY_SUB.
The blue dashed layer is the same layer used for terminal formation and is in the parent cell.
• MY_CELL is not a preserved cell:
❍ Device extraction levels and extracts one device in the parent cell.
• MY_CELL is a preserved cell:
❍ Device extraction does not level the device out of MY_CELL. Two devices are
extracted. One device is extracted in MY_CELL, and another small device is
extracted in the parent cell where the dashed blue and yellow polygons overlap.

See Also
compare()
equiv_options()

Chapter 3: Runset Functions: J - Z


lvs_options() 3-62
IC Validator Reference Manual Version N-2017.12-SP2

map_capacitor()
The map_capacitor() function is used in netlist-versus-netlist compare runsets to specify
characteristics of capacitor device instances and to provide device mappings between the
two netlists being compared. In the netlist-versus-netlist flow, references to the schematic
refer to the netlist imported by the schematic() function, while references to the layout refer
to the netlist imported by the read_layout_netlist() function.

Syntax
map_capacitor(
state =
compare_state,
device_name =
"string",
terminal_a =
"string", //optional
terminal_b =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the capacitor in the layout netlist.

terminal_a
Optional. Specifies terminal "a" of the device in the layout netlist. The default is "A".

terminal_b
Optional. Specifies terminal "b" of the device in the layout netlist. The default is "B".

Chapter 3: Runset Functions: J - Z


map_capacitor() 3-63
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

optional_pins
Optional. Lists additional pins of the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_capacitor() function.

■ The schematic pin names do not match the pin names provided in the
terminal_a, terminal_b, or optional_pins arguments of the
map_capacitor() function.

❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default
is "B".
❍ optional_pins. Optional. Specifies the schematic pins that correspond to the
optional_pins list of structures argument of the map_capacitor() function.

Chapter 3: Runset Functions: J - Z


map_capacitor() 3-64
IC Validator Reference Manual Version N-2017.12-SP2

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_capacitor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
map_capacitor() function, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_capacitor() 3-65
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

map_gendev()
The map_gendev() function is used in netlist-versus-netlist compare runsets to specify
characteristics of generic device instances and to provide device mappings between the two
netlists being compared. In the netlist-versus-netlist flow, references to the schematic refer
to the netlist imported by the schematic() function, while references to the layout refer to
the netlist imported by the read_layout_netlist() function.

Syntax
map_gendev(
state = compare_state,
device_name = "string",
terminals = {{pin_name = "string",
pin_compared = true | false}, ...},
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminals = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the generic device in the layout netlist.

terminals
Required. Lists the pins that define the terminals.
❍ pin_name. Required. Specifies the pin name.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.

Chapter 3: Runset Functions: J - Z


map_gendev() 3-66
IC Validator Reference Manual Version N-2017.12-SP2

■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Specifies lists pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_gendev() function.

■ The schematic pin names do not match the pin names provided in the terminals
argument of the map_gendev() function.
❍ device_name. Required. Specifies the schematic device.

❍ terminals. Optional. Specifies the terminals.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the terminals list, that pin is ignored both in the layout and
schematic. This behavior is similar to the pin_compared option of the terminals
argument of the map_gendev() function.
If the schematic device has an optional pin that does not correspond to any pin in the
map_gendev() function, that pin can be specified with the ignore_pins. Otherwise,
this optional pin produces an error during the compare operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.

Chapter 3: Runset Functions: J - Z


map_gendev() 3-67
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_gendev() 3-68
IC Validator Reference Manual Version N-2017.12-SP2

map_inductor()
The map_inductor() function is used in netlist-versus-netlist compare runsets to specify
characteristics of inductor device instances and to provide device mappings between the
two netlists being compared. In the netlist-versus-netlist flow, references to the schematic
refer to the netlist imported by the schematic() function, while references to the layout refer
to the netlist imported by the read_layout_netlist() function.

Syntax
map_inductor(
state =
compare_state,
device_name =
"string",
terminal_a =
"string", //optional
terminal_b =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the inductor in the layout netlist.

terminal_a
Optional. Specifies terminal "a" of the device in the layout netlist. The default is "A".

terminal_b
Optional. Specifies terminal "b" of the device in the layout netlist. The default is "B".

Chapter 3: Runset Functions: J - Z


map_inductor() 3-69
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

optional_pins
Optional. Lists additional pins of the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin name. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_inductor() function.

■ The schematic pin names do not match the pin names provided in the
terminal_a, terminal_b, or optional_pins arguments of the map_inductor()
function.
❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default
is "B".
❍ optional_pins. Optional. Specifies the schematic pins that correspond to the
optional_pins list of structures argument.

Chapter 3: Runset Functions: J - Z


map_inductor() 3-70
IC Validator Reference Manual Version N-2017.12-SP2

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_inductor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
map_inductor() function, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_inductor() 3-71
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

map_nmos() and map_pmos()


The map_nmos() function is used in netlist-versus-netlist compare runsets to specify
characteristics of NMOS device instances and to provide device mappings between the two
netlists being compared.
The map_pmos() function is used in netlist-versus-netlist compare runsets to specify
characteristics of PMOS device instances and to provide device mappings between the two
netlists being compared.
In the netlist-versus-netlist flow, references to the schematic refer to the netlist imported by
the schematic() function, while references to the layout refer to the netlist imported by the
read_layout_netlist() function.

Syntax
map_nmos(
state =
compare_state,
device_name =
"string",
drain =
"string", //optional
gate =
"string", //optional
source =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
drain = "string",
gate = "string",
source = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

map_pmos(
state = compare_state,
device_name = "string",
drain = "string", //optional
gate = "string", //optional
source = "string", //optional
optional_pins = {{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional

Chapter 3: Runset Functions: J - Z


map_nmos() and map_pmos() 3-72
IC Validator Reference Manual Version N-2017.12-SP2

schematic_devices = {{device_name = "string",


drain = "string",
gate = "string",
source = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the MOS device in the layout netlist.

drain
Optional. Specifies the drain of the device in the layout netlist. The default is "DRN".

gate
Optional. Specifies the gate of the device in the layout netlist. The default is "GATE".

source
Optional. Specifies the source in the layout netlist. The default is "SRC".

optional_pins
Optional. Lists additional pins of the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin name. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.

Chapter 3: Runset Functions: J - Z


map_nmos() and map_pmos() 3-73
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “SRC” and “DRN” can be swapped. Use an empty list
to disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_nmos() and map_pmos() functions.

■ The schematic pin names do not match the pin names provided in the drain,
gate, source, or optional_pins arguments of the map_nmos() and map_pmos()
functions.
❍ device_name. Required. Specifies the schematic device.

❍ drain. Optional. Specifies the first terminal of the device. The default is "DRN".

❍ gate. Optional. Specifies the second terminal of the device. The default is "GATE".

❍ source. Optional. Specifies the source of the device. The default is "SRC".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


optional_pins list of structures argument of the map_nmos() and map_pmos()
functions.
❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_nmos() and map_pmos() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
map_nmos() and map_pmos() functions, that pin can be specified with the

Chapter 3: Runset Functions: J - Z


map_nmos() and map_pmos() 3-74
IC Validator Reference Manual Version N-2017.12-SP2

ignore_pins. Otherwise, this optional pin produces an error during the compare
operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
The default is
{{"SRC",{"AS","PS","NRS"}},{"DRN",{"AD","PD","NRD"}}}.

❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_nmos() and map_pmos() 3-75
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

map_np() and map_pn()


The map_np() function is used in netlist-versus-netlist compare runsets to specify
characteristics of NP diode instances and to provide device mappings between the two
netlists being compared.
The map_pn() function is used in netlist-versus-netlist compare runsets to specify
characteristics of PN diode instances and to provide device mappings between the two
netlists being compared.
In the netlist-versus-netlist flow, references to the schematic refer to the netlist imported by
the schematic() function, while references to the layout refer to the netlist imported by the
read_layout_netlist() function.

Syntax
map_np(
state =
compare_state,
device_name =
"string",
anode =
"string", //optional
cathode =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
anode = "string",
cathode = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

map_pn(
state = compare_state,
device_name = "string",
anode = "string", //optional
cathode = "string", //optional
optional_pins = {{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
anode = "string",
cathode = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional

Chapter 3: Runset Functions: J - Z


map_np() and map_pn() 3-76
IC Validator Reference Manual Version N-2017.12-SP2

swappable_properties = {{pin_name = "string",


property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the diode in the layout netlist.

anode
Optional. Specifies the anode of the device in the layout netlist. The default is "ANODE".

cathode
Optional. Specifies the cathode of the device in the layout netlist. The default is
"CATHODE".

optional_pins
Optional. Lists additional pins for the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

Chapter 3: Runset Functions: J - Z


map_np() and map_pn() 3-77
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_np() and map_pn() functions.

■ The schematic pin names do not match the pin names provided in the anode,
cathode, or optional_pins arguments of the map_np() and map_pn() functions.

❍ device_name. Required. Specifies the schematic device.

❍ anode. Optional. Specifies the anode terminal of the device. The default is "ANODE".

❍ cathode. Optional. Specifies the cathode terminal of the device. The default is
"CATHODE".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


optional_pins list of structures argument of the map_np() and map_pn() functions.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_np() and map_pn() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
map_np() and map_pn() functions, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Chapter 3: Runset Functions: J - Z


map_np() and map_pn() 3-78
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_np() and map_pn() 3-79
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

map_npn() and map_pnp()


The map_npn() function is used in netlist-versus-netlist compare runsets to specify
characteristics of NPN transistor instances and to provide device mappings between the two
netlists being compared.
The map_pnp() function is used in netlist-versus-netlist compare runsets to specify
characteristics of PNP transistor instances and to provide device mappings between the two
netlists being compared.
In the netlist-versus-netlist flow, references to the schematic refer to the netlist imported by
the schematic() function, while references to the layout refer to the netlist imported by the
read_layout_netlist() function.

Syntax
map_npn(
state =
compare_state,
device_name =
"string",
collector =
"string", //optional
base =
"string", //optional
emitter =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
collector = "string",
base = "string",
emitter = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

map_pnp(
state = compare_state,
device_name = "string",
collector = "string", //optional
base = "string", //optional
emitter = "string", //optional
optional_pins = {{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional

Chapter 3: Runset Functions: J - Z


map_npn() and map_pnp() 3-80
IC Validator Reference Manual Version N-2017.12-SP2

schematic_devices = {{device_name = "string",


collector = "string",
base = "string",
emitter = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the bipolar transistor in the layout netlist.

collector
Optional. Specifies the collector of the device in the layout netlist. The default is "COLL".

base
Optional. Specifies the base of the device in the layout netlist. The default is "BASE".

emitter
Optional. Specifies the emitter of the device in the layout netlist. The default is "EMIT".

optional_pins
Optional. Lists additional pins of the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.

Chapter 3: Runset Functions: J - Z


map_npn() and map_pnp() 3-81
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_npn() and map_pnp() functions.

■ The schematic pin names do not match the pin names provided in the collector,
base, emitter, or optional_pins arguments of the map_npn() and map_pnp()
functions.
❍ device_name. Required. Specifies the schematic device.

❍ collector. Optional. Specifies the collector terminal of the device. The default is
"COLL".

❍ base. Optional. Specifies the base terminal of the device. The default is "BASE".

❍ emitter. Optional. Specifies the emitter terminal of the device. The default is "EMIT".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


optional_pins list of structures argument of the map_npn() and map_pnp()
functions.
❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_npn() and map_pnp() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
map_npn() and map_pnp() functions, that pin can be specified with the

Chapter 3: Runset Functions: J - Z


map_npn() and map_pnp() 3-82
IC Validator Reference Manual Version N-2017.12-SP2

ignore_pins. Otherwise, this optional pin produces an error during the compare
operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_npn() and map_pnp() 3-83
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

map_resistor()
The map_resistor() function is used in netlist-versus-netlist compare runsets to specify
characteristics of resistor device instances and to provide device mappings between the two
netlists being compared. In the netlist-versus-netlist flow, references to the schematic refer
to the netlist imported by the schematic() function, while references to the layout refer to
the netlist imported by the read_layout_netlist() function.

Syntax
map_resistor(
state =
compare_state,
device_name =
"string",
terminal_a =
"string", //optional
terminal_b =
"string", //optional
optional_pins =
{{pin_name = "string",
pin_compared = true | false},
...}, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

device_name
Required. Specifies the resistor in the layout netlist.

terminal_a
Optional. Specifies terminal "a" of the device in the layout netlist. The default is "A".

terminal_b
Optional. Specifies terminal "b" of the device in the layout netlist. The default is "B".

Chapter 3: Runset Functions: J - Z


map_resistor() 3-84
IC Validator Reference Manual Version N-2017.12-SP2

optional_pins
Optional. Lists additional pins of the device in the layout netlist.
❍ pin_name. Optional. Specifies the pin. The default is "BULK".

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

swappable_pins
Optional. Specifies lists pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals for comparison. By
default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
map_resistor() function.

■ The schematic pin names do not match the pin names provided in the
terminal_a, terminal_b, or optional_pins arguments of the map_resistor()
function.
❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default
is "B".
❍ optional_pins. Optional. Specifies the schematic pins that correspond to the
optional_pins list of structures argument of the map_resistor() function.

Chapter 3: Runset Functions: J - Z


map_resistor() 3-85
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the map_resistor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
map_resistor() function, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
read_layout_netlist()

Chapter 3: Runset Functions: J - Z


map_resistor() 3-86
IC Validator Reference Manual Version N-2017.12-SP2

marker_merge()
The optional marker_merge() function converts a marker layer to a polygon layer.
A marker layer is returned by the pattern_learn() and pattern_match() functions, and
can be processed only by the marker_merge(), select_marker_by_string_property(),
select_marker_by_double_property(), drc_feature_marker(), write_gds(), and
write_oasis() functions.

Syntax
marker_merge(
layer1 = marker_layer,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the marker layer from which polygons are selected.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
pattern_learn()
pattern_match()

Chapter 3: Runset Functions: J - Z


marker_merge() 3-87
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

match()
The optional match() function defines rules for matching equivalence cells, such as
cell-level port swappability. You can also use this function to configure errors and warnings,
such as for texted port matching.

Syntax
match(
state =
compare_state,
detect_permutable_ports =
true | false, //optional
match_by_net_name =
true | false, //optional
match_condition =
{condition = ERROR | WARNING | NONE,
...}, //optional
no_explode_condition = NONE | PROPERTY_ERRORS_ONLY |
PORT_TOPOLOGY_MATCHED |
PORT_TEXT_MATCHED, //optional
report_black_box_errors =
{extra_layout_ports = NONE | WARNING | ERROR_NO_ABORT | ERROR,
untexted_layout_ports = NONE | WARNING | ERROR_NO_ABORT | ERROR,
extra_schematic_ports = NONE | WARNING | ERROR_NO_ABORT | ERROR},
//optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
match() function is added.

detect_permutable_ports
Optional. Specifies how to handle independent or dependent swappability without
additional input. When set to true, the IC Validator tool extracts symmetries for the cell
to which it is applied. It does not affect whether the cells compare. This information is
applied in determining equivalence for the parent cell. Therefore, when the
detect_permutable_ports argument is specified globally, it does not operate on the
top-level cell. To extract symmetries for the top-level cell, you must explicitly invoke the
match() function using the detect_permutable_ports argument for the top-level cell.
The default is false.

Chapter 3: Runset Functions: J - Z


match() 3-88
IC Validator Reference Manual Version N-2017.12-SP2

match_by_net_name
Optional. Specifies if text is used to resolve swappability. The default is false.
❍ true. Uses text to resolve port swappability.

❍ false. Does not use text to resolve port swappability.

match_condition
Optional. Specifies the conditions that can be reported as errors or warnings, or not
reported. Table 3-5 lists the conditions along with the default setting of each condition.
Table 3-5 Match Conditions

Condition Description Default

property_mismatch Devices, connections, and properties within a cell ERROR


must all match to successfully compare the layout
structure and schematic module. The percentage
difference allowed between the layout and schematic
property values is determined by the tolerance
option set in the property_function argument of
the check_property() function.

missing_required_property Reports a missing property for a device. Invalid ERROR


property values, such as inf and NaN, are also
considered missing property errors.

illegal_multiplier An invalid M value is found. (A valid M value is a ERROR


positive integer.)
The original, illegal M values are kept and are
accessible in user functions. However, illegal values
are ignored (effectively set to 1) in predefined
property computations for merged devices.

equate_by_net_name_fails The net name, found in both the schematic and WARNING
layout, was not used as an initial match reference
point because the number of connections to the net
is not the same between the two cells. Nets with
different numbers of connections never match. This
match condition is checked when the
match_by_net_name argument of the match()
function is true.

Chapter 3: Runset Functions: J - Z


match() 3-89
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-5 Match Conditions (Continued)

Condition Description Default

equate_nets_fails The net pair set in the equate_nets argument of the WARNING
equiv_options() function was not used as an initial
match reference point because the number of
connections to the net is not the same between the
two cells. Nets with different numbers of connections
never match.

filtered_schematic_devices The specified instance of a schematic device was WARNING


filtered. While layout devices are commonly filtered,
typically schematic devices are not filtered.

generate_global_nets The compare process automatically determined WARNING


power and ground of schematic and layout nets.

matches_must_be_assumed The specified number of matches (devices and nets) WARNING


was assumed to allow progress for symmetrical
portions of the circuitry. This message is output only
if matches were assigned.

merging_without_pwr_gnd Indicates any cell where series or path merging WARNING


occurs but no power or ground nets exist as specified
by the schematic_power and schematic_ground
arguments of the net_options() function. These
situations often result in excessive traversal of
certain unspecified global nets.

missing_black_box_cell The cell specified in the black-box file does not exist WARNING
in the corresponding netlist. The black-box cell is
ignored.

missing_black_box_port The port specified for a black-box cell does not exist WARNING
on that cell in the netlist.

missing_pin_connection The indicated device instance has no net connection WARNING


specified in the netlist for the specified pin. As a
result, the compare process automatically assigns a
net name beginning with the prefix No Connect#
followed by a unique positive integer.

new_cell_created An empty dummy cell was created to correspond WARNING


with an undefined cell in a specified black box.

Chapter 3: Runset Functions: J - Z


match() 3-90
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-5 Match Conditions (Continued)

Condition Description Default

no_global_nets_found The compare process attempted to automatically WARNING


determine power and ground of schematic and
layout nets, but was unsuccessful.

undefined_property_for_merg User properties cannot be compared on merged WARNING


ed_device devices (unless you create merge property functions
for this device) because the values of those
properties are undefined in certain merging
scenarios.

zero_value_property If the value of the property is zero, this warning is WARNING


written to summary files.

empty_cell_not_defined_as_d Empty cells that are not defined as a device are NONE
evice reported.

properties_contradict_conne The external gate connections and the inner device NONE
ctions properties are not consistent between two schematic
and layout composite devices.

nets_matched_with_different Schematic and layout nets with the same names NONE
_name were matched but not to each other. Normally, text in
the layout database matches with corresponding
names in the schematic database.
Note:
For a real texted net or a compound that contains
one or more text nets, there must be at least one
common text name in between the text nets to
PASS the name checking phase.

layout_ports_without_name For cells below the top cell, reports all ports in the NONE
layout that do not have text. No messages are
written for untexted ports that occur on the top cell
unless the top_layout_ports_without_name
condition is also specified.

top_layout_ports_without_na For the top cell, reports all ports in the layout that do NONE
me not have text. No messages are output for untexted
ports that occur within cells beneath the top cell
unless the layout_ports_without_name condition
is also specified.

Chapter 3: Runset Functions: J - Z


match() 3-91
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-5 Match Conditions (Continued)

Condition Description Default

port_net_match_non_port_net For cells below the top cell, it reports any layout port NONE
nets that are matched to nets that are not port nets in
the schematic or vice versa. No messages are
written for mismatches that occur on top cell nets
unless both
top_schematic_port_net_match_non_port_net
and top_layout_port_net_match_non_port_net
conditions are also specified.

top_schematic_port_net_matc For the top cell, reports any schematic port nets that NONE
h_non_port_net are matched to nets that are not port nets in the
layout. No messages are written for mismatches that
occur within cells beneath the top cell unless the
port_net_match_non_port_net condition is also
specified.

top_layout_port_net_match_n For the top cell, reports any layout port nets that are NONE
on_port_net matched to nets that are not port nets in the
schematic. No messages are written for mismatches
that occur within cells beneath the top cell unless the
port_net_match_non_port_net condition is also
specified.

ports_matched_with_differen For cells below the top cell, reports any texted port NONE
t_name nets in the layout that match port nets having
different net names in the schematic. No messages
are written for mismatches that occur on top cell
ports unless the
top_ports_matched_with_different_name
condition is also specified.
Note:
For a real texted net or a compound that contains
one or more text nets, there must be at least one
common text name between the text nets to
PASS the name checking phase.

Chapter 3: Runset Functions: J - Z


match() 3-92
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-5 Match Conditions (Continued)

Condition Description Default

top_ports_matched_with_diff For the top cell, reports any texted port nets in the NONE
erent_name layout that match port nets having different net
names in the schematic. No messages are written
for mismatches that occur within cells beneath the
top cell unless the
ports_matched_with_different_name condition is
also specified.
That is, when either net, from schematic or layout, is
not texted, this condition does not report a difference.
For example, these names result in a reported error:
• Schematic net name is “A” and layout net name is
“B”.
These names result in a clean report:
• Schematic net name is “A” and layout net name is
“A”.
These names result in a clean report because the
names are not checked:
• Schematic net name is “A” and layout net name is
a non-text name, N_2.
• Schematic net name is a non-text name, N_3,
and layout net name is “B”.
See the layout_ports_without_name and
top_layout_ports_without_name conditions for
more information.
Note:
For a real texted net or a compound that contains
one or more text nets, there must be at least one
common text name between the text nets to
PASS the name checking phase.

top_schematic_ports_matched For the top cell, reports all schematic ports which NONE
_with_different_or_missing_ match to different text and untext layout ports.
name Schematic generated ports are excluded

one_connection_non_port_net The indicated net contains only one connection, and NONE
the net is not a port of the cell. This condition
indicates that the net is dangling because it only
connects to a single device pin.

Chapter 3: Runset Functions: J - Z


match() 3-93
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-5 Match Conditions (Continued)

Condition Description Default

zero_connection_net The indicated net contains no connections to devices NONE


in the cell. This condition occurs for nets that are
declared as ports but do not connect to any devices
in the netlist description of the cell.

black_box_duplicates_equiv Controls the error or warning status when an WARNING


equivalence pair duplicates the black-box pair.

no_explode_condition
Optional. Determines if this equivalence is retained as a device when comparing its
parent equivalence. The default is NONE.
❍ NONE. Retains only compare-clean equivalences.

❍ PROPERTY_ERRORS_ONLY. Retains the equivalence only if all nodes match and there
is a property error.
❍ PORT_TOPOLOGY_MATCHED. Retains if port nets match topologically, thus checking to
ensure that all port connections match.
❍ PORT_TEXT_MATCHED. Retains only matching text and port counts. The port nets do
not need to match topologically.

report_black_box_errors
Optional. Determines how the IC Validator tool behaves when cells are treated as black
boxes during LVS compare. You can change the messages or errors generated when
extra ports are found on black-box structures in the layout or schematic netlist, and you
have additional control when black boxes have extra ports that are not texted.
❍ extra_layout_ports. Applies only to texted nets. The default is ERROR.

❍ untexted_layout_ports. Applies to untexted nets. The default is NONE.

❍ extra_schematic_ports. Applies only to texted nets. The default is ERROR.


The settings for these options are:
❍ NONE. Ignores extra ports and removes connections to them. No messages are
written to the log files about these actions.
❍ WARNING. Ignores extra ports during the compare operation. A warning message is
written to the cell_lvs.log file.

Chapter 3: Runset Functions: J - Z


match() 3-94
IC Validator Reference Manual Version N-2017.12-SP2

❍ ERROR_NO_ABORT. Ignores any extra ports. At the top level, however, the design fails
LVS compare because extra ports were found on LVS black-box structures. This
option you to compare the design but be alerted that you need to investigate why
extra ports are being formed on the black boxes. The log files give the error
information:
■ The cell.LVS_ERRORS file shows that the design failed.
■ In the first priority cells, any cell that contained a black-box cell with extra ports is
be listed. The error message tells you to check the black-box cells placed in the
equivalence point and to check the extra ports on the cell in the lvs.log file.
■ The sum.cell.cell file shows black-box cells inside of an equivalence point that had
extra ports. The error summary shows the number of black-box cells that had
extra ports.
■ In the cell_lvs.log file, for each equivalence point that has black-box cells with
extra ports, a message says that the equivalence point has black-box cells with
extra ports.
❍ ERROR. If extra ports are found, writes an error to the cell_lvs.log file and the run stops.

equiv_cells
Optional. Specifies schematic and layout cell name pairs for which the match() function
applies. You must specify the equiv_cells pairs in the equiv_options() function
before calling the match() function. If only one cell name in the pair is specified, the
names are assumed to be the same.
Note:
The match() instruction is observed only when comparing each listed equivalence
cell pair. If an equivalence cell pair is exploded into the parent equivalence cell pair
while comparing the parent, the match() instruction is discarded for the content of
the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following is an example of using the match()function.

Chapter 3: Runset Functions: J - Z


match() 3-95
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

match(state = my_compare_state
match_condition = {
ports_matched_with_different_name = ERROR,
nets_matched_with_different_name = ERROR,
property_mismatch = ERROR
}
);

In the following example, all black-box port names are matched automatically. However, for
any extra ports in the layout, texted or untexted, warnings are generated.
match(
report_black_box_errors = {
extra_layout_ports = WARNING,
untexted_layout_ports = WARNING
}
);

See Also
compare()
init_compare_matrix()

Chapter 3: Runset Functions: J - Z


match() 3-96
IC Validator Reference Manual Version N-2017.12-SP2

merge_parallel()
The merge_parallel() function defines the criteria for merging devices connected in
parallel during the compare operation.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
merge_parallel(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
exclude_tolerances = {{property = "string",
tolerance = doubleconstraint,
tolerance_type = RELATIVE | ABSOLUTE},
...}, //optional
exclude_function = "string", //optional
property_functions = {{property_function = "string",
property = "string"}, ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
merge_parallel() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices that are merged. Each device must match a device
specified in a device_name argument of a device configuration function.
Only devices with a matching name are merged.

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-97
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

exclude_tolerances
Optional. Lists the tolerance settings that exclude candidate devices from being merged
based on the property values of the devices.
❍ property. Required. Specifies the property name.

❍ tolerance. Optional. Specifies the tolerance. The property option is checked for
violations based on this tolerance. The tolerance must be specified as a range. The
tolerance_type option specifies if the tolerance is a percentage (default) or
absolute value. The default is [-10,+10].
The minimum resolution allowed for tolerance checking is as follows:
■ When schematic_property !=0, the minimum resolution value is
absolute_value(schematic_property*1e-6)

■ When schematic_property ==0, the minimum resolution value is


absolute_value(layout_property*1e-6)

If the specified tolerance range is less than this minimum value, for example, [-0,0],
the property option is checked for violations according to the minimum resolution.
❍ tolerance_type. Optional. Checks property tolerances based on a relative or
absolute property difference. The default is RELATIVE.
■ RELATIVE. Specifies that tolerances are checked based on a percentage
difference.
■ ABSOLUTE. Specifies that tolerances are checked based on an absolute value
difference. The units are based on the lvs_user_unit argument of the
run_options() function.

exclude_function
Optional. Specifies the remote function that defines exclusions based on property
tolerances. If one of the exclusions is satisfied, the devices listed in the device_names
argument are removed. The default is the predefined exclude_device_by_tolerance
function,. This function excludes devices that do not meet the specified tolerance.
See “Compare Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define a remote function.

property_functions
Optional. Lists the functions that define how a merged property for a merged device is
calculated. The default is the internal merge functions. See the following tables for more
information.

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-98
IC Validator Reference Manual Version N-2017.12-SP2

❍ property_function. Optional. Specifies the remote function that calculates


properties.
See “Compare Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define a remote function.
The available predefined functions are as follows:
■ sum_merge_method. Adds the property values of the individual devices together.

■ average_merge_method. Averages the property values of the individual devices.

■ min_merge_method. Takes the smallest property value of all individual devices.

■ max_merge_method. Takes the largest property value of all individual devices.

❍ property. Optional. Specifies the property that must satisfy the tolerance range.
Note:
The property name is needed here only if you are using one of the predefined
functions: sum_merge_method, min_merge_method, average_merge_method, or
max_merge_method. If you are using a user-defined function, the property is
specified in the property function.
The default property calculations are shown in the following tables. Table 3-6 shows the
calculations for NMOS, PMOS, and generic device parallel merging device properties.
Table 3-6 NMOS, PMOS, and Generic Device Parallel Merging Device Properties

Property Conditions (if any) Merging device properties


1

l (length) n

 Mi Li
i=1
L eq = ---------------------
n

 Mi
i=1

w (width) n

W eq =  Mi Wi
i=1

m (multiplier) n

M eq =  Mi
i=1

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-99
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-6 NMOS, PMOS, and Generic Device Parallel Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

nrs and nrd 1


N eq = ---------------
n
-
Mi
 ------ Ni
i 1
1. Mi = 1 if multiplier is not specified

Table 3-7 shows the calculations for NP and PN parallel merging device properties.
Table 3-7 NP and PN Parallel Merging Device Properties

Property Conditions (if any) Merging device properties


1

l (length) n

 Mi Li
i=1
L eq = ---------------------
n

 Mi
i=1

w (width) n

W eq =  Mi Wi
i=1

area n

A eq =  Mi Ai
i=1

m (multiplier) n

M eq =  Mi
i=1

pj (perimeter n
of junction)
PJ eq =  Mi PJi
i=1

1. Mi = 1 if multiplier is not specified

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-100
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-8 shows the calculations for NPN and PNP parallel merging device properties.
Table 3-8 NPN and PNP Parallel Merging Device Properties

Property Conditions (if any) Merging device properties


1

l (length) n

 Mi Li
i=1
L eq = ---------------------
n

 Mi
i=1

w (width) n

W eq =  Mi Wi
i=1

area n

A eq =  Mi Ai
i=1

m (multiplier) n

M eq =  Mi
i=1

1. Mi = 1 if multiplier is not specified

Table 3-9 shows the calculations for resistor parallel merging device properties.
Table 3-9 Resistor Parallel Merging Device Properties

Property Conditions (if any) Merging device properties1

r (resistance) 1
R eq = ---------------
n
-
Mi
 ------ Ri
i 1
l (length) Unequal widths && unequal lengths L is not legal

l (length) Only lengths are given && unequal L is not legal


lengths

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-101
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-9 Resistor Parallel Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

l (length) Equal widths && unequal lengths 1


L eq = --------------
n
-
1
 L-----i
i=1

l (length) Equal lengths L eq = L 1

w (width) Only widths are given && unequal W is not legal


widths

w (width) Unequal widths && unequal lengths W is not legal

w (width) Equal widths && unequal lengths W eq = M 1 W 1

w (width) Equal lengths n

W eq =  Mi Wi
i=1

1. Mi = 1 if multiplier is not specified

Table 3-10 shows the calculations for capacitor parallel merging device properties.
Table 3-10 Capacitor Parallel Merging Device Properties

Property Conditions (if any) Merging device properties


1

c (capacitance) i

C eq =  Mi Ci
n=1

l (length) Only lengths are given && unequal L is not legal


lengths

l (length) Equal widths && unequal lengths n

L eq =  Li
i=1

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-102
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-10 Capacitor Parallel Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

l (length) Equal lengths L eq = L 1

w (width) Only widths are given && unequal W is not legal


widths

w (width) Equal widths && unequal lengths W eq = M 1 W 1

w (width) Equal lengths n

W eq =  Mi Wi
i=1

1. Mi = 1 if multiplier is not specified

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which the
merge_parallel() function applies. You must specify the equiv_cells pairs in the
equiv_options() function before calling the merge_parallel() function. If only one
cell name in the pair is specified, the names are assumed to be the same.
Note:
The merge_parallel() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the merge_parallel() instruction
is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-103
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
This example uses previously defined my_exclude_function and my_user_calculation
remote functions.
merge_parallel(compare_state, PMOS, {"pm1"},
exclude_tolerances = {{"w",[-20,+20]},
{"l",[-30, +40]}},
exclude_function = "my_exclude_function",
property_functions = {{"sum_merge_method", "w"},
{"average_merge_method", "l"},
{"my_user_calculation"}}
);

See Also
init_compare_matrix()
merge_parallel_off()
recalculate_property()

Chapter 3: Runset Functions: J - Z


merge_parallel() 3-104
IC Validator Reference Manual Version N-2017.12-SP2

merge_parallel_off()
The merge_parallel_off() function disables parallel merging for specific devices.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
merge_parallel_off(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
merge_parallel_off() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices that are not merged. Each device must match a
device specified in a device_name argument of a device configuration function.

equiv_cells
Optional. Specifies the schematic and layout cell name pairs for which the
merge_parallel_off() function applies. You must specify the equiv_cells pairs in
the equiv_options() function before calling the merge_parallel_off() function. If
only one cell name in the pair is specified, the names are assumed to be the same.
Note:
The merge_parallel_off() instruction is observed only when comparing each
listed equivalence cell pair. If an equivalence cell pair is exploded into the parent

Chapter 3: Runset Functions: J - Z


merge_parallel_off() 3-105
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

equivalence cell pair while comparing the parent, the merge_parallel_off()


instruction is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
merge_parallel()

Chapter 3: Runset Functions: J - Z


merge_parallel_off() 3-106
IC Validator Reference Manual Version N-2017.12-SP2

merge_series()
The merge_series() function defines the criteria for merging devices connected in series
during the compare operation.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.
Limitation:
A device can be merged by the merge_series() function or recognized by the
recognize_gate() function, but not both in the same runset.

Syntax
merge_series(
state = compare_state,
device_type = NMOS | PMOS | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
exclude_tolerances = {{property = "string",
tolerance = doubleconstraint,
tolerance_type = RELATIVE | ABSOLUTE},
...}, //optional
exclude_function = "string", //optional
property_functions = {{property_function = "string",
property = "string"}, ...}, //optional
merge_connected_gates = true | false, //optional
multiple_paths = true | false, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...}, //optional
gendev_series_pins = {pin_a = "string",
pin_b = "string"} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
merge_series() function is added.

device_type
Required. Specifies the device type.

Chapter 3: Runset Functions: J - Z


merge_series() 3-107
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device_names
Optional. Specifies the layout devices that are merged. Each device must match a device
specified in a device_name argument of a device configuration function.
Only devices with a matching name are merged.

exclude_tolerances
Optional. Lists the functions that exclude candidate devices from being merged based on
their property values.
❍ property. Required. Specifies the property for which to check the tolerance range.

❍ tolerance. Optional. Specifies the tolerance. The property option is checked for
violations based on this tolerance. The tolerance must be specified as a range. The
tolerance_type option specifies if the tolerance is a percentage (default) or
absolute value. The default is [-10,+10].
The minimum resolution allowed for tolerance checking is as follows:
■ When schematic_property !=0, the minimum resolution value is
absolute_value(schematic_property*1e-6)

■ When schematic_property ==0, the minimum resolution value is


absolute_value(layout_property*1e-6)

If the specified tolerance range is less than this minimum value, for example, [-0,0],
the property option is checked for violations according to the minimum resolution.
❍ tolerance_type. Optional. Checks property tolerances based on a relative or
absolute property difference. The default is RELATIVE.
■ RELATIVE. Specifies that tolerances are checked based on a percentage
difference.
■ ABSOLUTE. Specifies that tolerances are checked based on an absolute value
difference. The units are based on the lvs_user_unit argument of the
run_options() function.

exclude_function
Optional. Specifies the remote function that defines exclusions based on property
tolerances. If one of the exclusions is satisfied, the devices listed in the device_names
argument are removed. The default is the predefined exclude_device_by_tolerance
function. This function excludes devices that do not meet the specified tolerance.
See “Compare Utility Functions” on page 4-181 for more information about the utility
functions you can use to define a remote function.

Chapter 3: Runset Functions: J - Z


merge_series() 3-108
IC Validator Reference Manual Version N-2017.12-SP2

property_functions
Optional. Lists the functions that define how a merged property for a merged device is
calculated.
❍ property_function. Optional. Specifies the remote function that calculates
properties.
See “Compare Utility Functions” on page 4-181 for more information about the utility
functions you can use to define a remote function.
The available predefined functions are as follows:
■ sum_merge_method. Adds the property values of the individual devices together.

■ average_merge_method. Averages the property values of the individual devices.

■ min_merge_method. Takes the smallest property value of all individual devices.

■ max_merge_method. Takes the largest property value of all individual devices.


If no function is specified, the IC Validator tool uses the default functions listed in the
following tables.
❍ property. Optional. Specifies the property that must satisfy the tolerance range.
Note:
The property name is needed here only if you are using one of the predefined
functions: sum_merge_method, min_merge_method, average_merge_method, or
max_merge_method. If you are using a user-defined function, the property is
specified in the property function.
The default property calculations are shown in the following tables. Table 3-11 shows the
calculations for NMOS and PMOS series merging device properties.
Table 3-11 NMOS and PMOS Series Merging Device Properties

Property Conditions (if any) Merging device properties1


2
l (length) merge_connected_gates = false List of lengths of member devices.

l (length) merge_connected_gates = true n

L eq =  Li
i=1

w (width) merge_connected_gates = false List of widths of member devices.


2

Chapter 3: Runset Functions: J - Z


merge_series() 3-109
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-11 NMOS and PMOS Series Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

w (width) merge_connected_gates = true n

 Mi Wi
i=1
W eq = -----------------------
n

 Mi
i=1

m (multiplier) List of multipliers of member


2
devices.

nrs and nrd n


Ni
N eq =  ------
Mi
i=1

1. Mi = 1 if multiplier is not specified


2. Property list can be compared for devices by gate order and values. Certain properties cannot be combined
into a single value for a merged device. For example, the length and width properties are maintained as separate
values for MOS devices merged into series and path devices. The number of values in the property list
corresponds to the number of MOS devices that are members of the merged element.

Table 3-12 shows the calculations for resistor series merging device properties.
Table 3-12 Resistor Series Merging Device Properties

Property Conditions (if any) Merging device properties1

r (resistance) n
Ri
R eq =  ------
Mi
i=1

l (length) Unequal widths && L is not legal


unequal lengths

l (length) Only lengths are given && L is not legal


unequal lengths

l (length) Equal widths n

L eq =  Li
i=1

Chapter 3: Runset Functions: J - Z


merge_series() 3-110
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-12 Resistor Series Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

l (length) Unequal widths && L eq = L 1


equal lengths

w (width) Unequal widths && W is not legal


unequal lengths

w (width) Only widths are given && W is not legal


unequal widths

w (width) Equal widths W eq = M 1 W 1

w (width) Unequal widths && 1 -


equal lengths W eq = -----------------------
n
1 -
 Mi Wi -------------
i=1

1. Mi = 1 if multiplier is not specified

Table 3-13 shows the calculations for capacitor series merging device properties.
Table 3-13 Capacitor Series Merging Device Properties

Property Conditions (if any) Merging device properties1

c (capacitance) 1
C eq = ---------------------
n
-
1
 -----------
Mi Ci
-
i 1
l (length) Only lengths are given && L is not legal
unequal lengths

l (length) Equal widths 1 -


L eq = --------------
n
1
 L-----i
i=1

l (length) Unequal widths && L eq = L 1


equal lengths

Chapter 3: Runset Functions: J - Z


merge_series() 3-111
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-13 Capacitor Series Merging Device Properties (Continued)

Property Conditions (if any) Merging device properties


1

w (width) Only widths are given && W is not legal


unequal widths

w (width) Equal widths W eq = M 1 W 1

w (width) Unequal widths && 1 -


equal lengths W eq = -----------------------
n
1 -
 Mi Wi -------------
i=1

1. Mi = 1 if multiplier is not specified

merge_connected_gates
Optional. Specifies whether connected gate pins of series-merged transistors are
merged. The default is false.
❍ true. If connected gate pins of series-merged transistors are tied to the same net, the
gate pins are merged into a gate pin.
❍ false. If connected gate pins of series-merged transistors are tied to the same net,
the gate pins are not merged into a gate pin.

multiple_paths
Optional. Specifies when transistors are combined. The default is false.
❍ true. Searches the schematic and layout netlists for stacks of NMOS or PMOS
devices that can be rearranged to create a logically equivalent structure. When two
or more transistors are found in a path, they are combined into a single device with
logically equivalent gate-pin inputs. Recognition of these constructs allows devices in
the schematic to be equated to devices in the layout that are logically equivalent even
though their implementations might not match.
❍ false. Does not search for these paths.

equiv_cells
Optional. Specifies the schematic and layout cell name pairs for which the
merge_series() function applies. You must specify the equiv_cells pairs in the
equiv_options() function before calling the merge_series() function. If only one cell
name in the pair is specified, the names are assumed to be the same.

Chapter 3: Runset Functions: J - Z


merge_series() 3-112
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The merge_series() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the merge_series() instruction is
discarded for the content of the exploded cell.

gendev_series_pins
Optional. Specifies the names of the two pins being connected in series of a generic
device.
The gendev_series_pins argument is required when the device_type argument is set
to GENERIC. It is not necessary when device_type is set to a primitive device type, such
as NMOS, PMOS, or RESISTOR.
❍ pin_a. Optional. Specifies the name of the first pin in the series to be merged.

❍ pin_b. Optional. Specifies the name of the second pin in the series to be merged.
Note:
The series pins can only be swapped among themselves. The swappable pins are
defined in the gendev() and map_gendev() functions.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
This example uses previously defined remote functions my_exclude_function and
my_user_calculation.
merge_series(compare_state, PMOS, {"pm1"},
exclude_tolerances = {{"w",[-20,+20]},
{"l",[-30,+30]}},
exclude_function = "my_exclude_function",
/* by using built-in functions,
* my_exclude_function
* retrieves the tolerances
* specified for "l" & "w" */
property_functions = {{"sum_merge_method","w"},
{"average_merge_method","l"},
{"my_user_calculation"}},
multiple_paths = false
);

Chapter 3: Runset Functions: J - Z


merge_series() 3-113
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
init_compare_matrix()
merge_parallel()
merge_parallel_off()
merge_series_off()
recalculate_property()
recognize_gate()

Chapter 3: Runset Functions: J - Z


merge_series() 3-114
IC Validator Reference Manual Version N-2017.12-SP2

merge_series_off()
The merge_series_off() function disables series merging for specific devices.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
merge_series_off(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
merge_series_off() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices that are not merged. Each device must match a
device specified in a device_name argument of a device configuration function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which the
merge_series_off() function applies. You must specify the equiv_cells pairs in the
equiv_options() function before calling the equiv_options() function. If only one cell
name in the pair is specified, the names are assumed to be the same.
Note:
The merge_series_off() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent

Chapter 3: Runset Functions: J - Z


merge_series_off() 3-115
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

equivalence cell pair while comparing the parent, the merge_series_off()


instruction is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
merge_series()

Chapter 3: Runset Functions: J - Z


merge_series_off() 3-116
IC Validator Reference Manual Version N-2017.12-SP2

milkyway_library()
The milkyway_library() function defines a Milkyway library name and returns a handle to
be used by the output_library argument of the write_milkyway() function.
Limitation:
The milkyway_library() function cannot be called more than one time with the same
library_name and library_path arguments. The result, however, can be used in more
than one write_milkyway() function.

Syntax
milkyway_library(
library_name = "string",
library_path = "string" //optional
);

Returns
milkyway_library_handle

Arguments
library_name
Required. Specifies the Milkyway library name. See the output_library argument of
the write_milkyway() function for more information.

library_path
Optional. Specifies the path to the Milkyway library. The default is ".".

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
write_milkyway()

Chapter 3: Runset Functions: J - Z


milkyway_library() 3-117
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

milkyway_merge_library_options()
The milkyway_merge_library_options() function specifies a mapping from the master
and reference Milkyway libraries to replacement GDSII, OASIS. and OpenAccess libraries
that are read in with Milkyway data at the start of a verification run. This function can be
called only one time in a runset.
You can use the -ml command-line option to override the settings in the
milkyway_merge_library_options() function. See the Command-Line Options section
in the “IC Validator Basics” chapter of the IC Validator User Guide for more information.
For example, if cell “A” has a FRAM view and a CEL view in the Milkyway library, the CEL
view is replaced with the GDSII or OASIS data for cell “A”. If cell “A” only has a FRAM view
in the Milkyway library, the missing CEL view data is created with data from the GDSII or
OASIS replacement library.
When using the milkyway_merge_library_options() function, read all required GDSII,
OASIS, OpenAccess, and Milkyway data during an IC Validator run to emulate the complete
mask data set for a designated top-level structure. The lower-level cells in the replacement
data are not permanently merged into the input Milkyway library. Data is temporarily merged
for only this run.
Note:
The master Milkyway library and top-level cell are identified in the runset by the
library() function. The mapping specified in the
milkyway_merge_library_options() function never looks for a replacement of the top
cell.
When using the milkyway_merge_library_options() function, you should be familiar
with
• Master Milkyway libraries and reference libraries, and the order in which Milkyway
searches these libraries to find a cell. See the Milkyway Database Application Note,
which is available on SolvNet.
• The milkyway_options() function. Use this function to control the reading of FRAM
and CEL views, and the reading of other Milkyway data.
• The -lf command-line option. Use this command-line option to specify mapping of the
Milkyway layers to the runset layers. See the Command-Line Options section in the
“IC Validator Basics” chapter of the IC Validator User Guide for more information.

You can see the replacements in the run_details/top_cell.tree0 file. A tree file is shown in the
Example section.

Syntax
milkyway_merge_library_options(

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-118
IC Validator Reference Manual Version N-2017.12-SP2

libraries = {{library_name = "string",


library_path = "string",
replacement_libraries = {{
file = "string",
format = GDSII | OASIS | OPENACCESS,
cell_name_map = {{search_string = "string",
replace_string = "string"},
...},
layer_map_file = "string",
layout_integrity = {{db_name = "string",
missing_db = ABORT | IGNORE,
cell_name_map =
{{search_string = "string",
replace_string = "string"},
...}},
...},
openaccess = {library = "string",
view = "string",
cell_mapping_file = "string"}},
object_mapping_file = "string"}},
...},
...}},
missing_cell = ABORT | USE_MILKYWAY, //optional
icc_cell_map_file = "string", //optional
report = {USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS,
DUPLICATE_CELLS), //optional
missing_library = ABORT | CONTINUE, //optional
lef_foreign_cell_name = USE | IGNORE, //optional
unmatched_reference_library = ABORT | WARN //optional
);

Returns
void

Arguments
libraries
Required. Lists the Milkyway and replacement libraries.
❍ library_name. Required. Specifies the Milkyway library name. You only need to list
the Milkyway libraries for which you want to do replacements.
❍ library_path. Optional. Specifies the Milkyway library path, which can be either
relative or absolute. Use the library_path argument if your library is not in the run
directory. The default is the current working directory.
❍ replacement_libraries. Required. Specifies the replacement libraries. The
IC Validator tool searches the replacement libraries in the order specified looking for
cells. The first cell found is the one used.

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-119
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
A GDSII or OASIS file can be gzipped. The IC Validator tool automatically detects
if a GDSII or OASIS file is gzipped.
■ file. Specifies the replacement file. It is the library definition file when the format
option is OPENACCESS.
■ format. Specifies the format of the replacement libraries, GDSII, OASIS, or
OpenAccess.
■ cell_name_map. Optional. Specifies a list that tells how cell names are mapped
as data is read in. Use this list when the GDSII, OASIS, or OpenAccess cell name
does not match the corresponding Milkyway cell name. If you do not use this list
to map duplicate cell names, the IC Validator tool automatically does the mapping
and resolves all hierarchical references to the new name.
- search_string. Specifies the cell name in the GDSII, OASIS, or OpenAccess
data that is renamed.
- replace_string. Specifies the new cell name given to the cell in the GDSII,
OASIS, or OpenAccess data. This cell name is used within the IC Validator
tool after the input data is read.
■ layer_map_file. Optional. Specifies the layer mapping file for the replacement
library. You can map GDSII, OASIS, or OpenAccess data to Milkyway data.
Note:
When the OpenAccess layer mapping format is used, OpenAccess data is
mapped directly to the runset. This behavior differs from when the GDSII or
OASIS layer mapping formats are used, as there is no standard layer mapping
file format from OpenAccess to Milkyway that supports color mapping.
Note:
The layer_map_file option is required for the OpenAccess format. For the
OpenAccess layer map format, see the cell_mapping_file argument of the
openaccess_options() function.
The file format for Milkyway is:
MilkywayLayer[:MilkywayDatatype] SrcLayer[:SrcDatatype]

Note:
The maximum layer and datatype values for Milkyway are 0–255, inclusive, for
libraries in normal layer mode or 0–4095, inclusive, for libraries in extended
layer mode.
Comments are specified with a semicolon. All text following the semicolon on the
current line is part of the comment.
For example, to map

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-120
IC Validator Reference Manual Version N-2017.12-SP2

GDSII layer 3 to the new layer 5:


5 3

GDSII layer 3, datatype 6 to layer 13 and datatype 16:


13:16 3:6

GDSII layer 3, all datatypes to layer 13 and datatype 0:


13:0 3

■ layout_integrity. Optional. Specifies the list of layout integrity databases that


the IC Validator tool uses for layout integrity checking. By default, the IC Validator
tool does not check layout integrity.
Note:
The layout integrity database applies to cells in the replacement library.
Milkyway cells are checked against global layout integrity options, if any.
- db_name. Required. Specifies the path to the layout integrity database.

- missing_db. Optional. Specifies the behavior when the IC Validator tool does
not find the specified layout integrity database. The default is ABORT.
¤ ABORT. Specifies that the run stops when the layout integrity database is not
found.
¤ IGNORE. Continues the IC Validator run if the tool cannot find the layout
integrity database.
- cell_name_map. Optional. Specifies a list that tells how cell names are
remapped as data is read from the layout integrity databases (LIDBs). By
default, the IC Validator tool does not remap cell names.
¤ search_string. Required. Specifies the existing cell name in the input
LIDB.
¤ replace_string. Required. Specifies the cell name used for layout
integrity checking within IC Validator.
■ openaccess. Required when the replacement library format is OpenAccess; that
is when the format option is OPENACCESS. (Do not use this openaccess option
when the replacement library format is GDSII or OASIS.) Maps OpenAccess data
to Milkyway data. See the cell_mapping_file argument of the
openaccess_options() function for more information.

- library. Required. Specifies the OpenAccess library name that is in the


library definition file.
- view. Optional. Specifies the view. The default is "layout".

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-121
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- cell_mapping_file. Optional. Specifies the OpenAccess cell mapping file


that allows you to specify the unique name that the IC Validator tool uses for a
given library/cell/view triplet.
Note:
This cell mapping file is applied, then the mapping specified in the
cell_name_map option is applied.

- object_mapping_file. Optional. Specifies the OpenAccess object mapping


file that allows you map OpenAccess objects to a runset layer and data type.
Note:
The object_mapping_file option does not map to NDM layers and data
types. This behavior is consistent with the behavior of the OpenAccess layer
mapping file.

missing_cell
Optional. Specifies the action taken if a cell is missing from the replacement file. The
default is ABORT.
❍ ABORT. Specifies if the run stops when a cell in the Milkyway library is not found in a
replacement file.
❍ USE_MILKYWAY. If a cell in the Milkyway library is not found in a GDSII, OASIS, or
OpenAccess replacement file, takes the Milkyway CEL view from the Milkyway
library.

icc_cell_map_file
Optional. Specifies the global cell map that applies to all GDSII, OASIS, or OpenAccess
files. It maps GDSII and OASIS cells only and not Milkyway cells. The cell_name_map
option of the replacement_libraries option applies to only one GDSII, OASIS, or
OpenAccess file. You can use both the cell_name_map option and the
icc_cell_map_file argument if the two maps are mutually exclusive; that is, the
arguments do not define the same cell names.
Because the master library is in Milkyway format, use this icc_cell_map_file
argument instead of the cell_name_map argument of the gds_options() or
oasis_options() function or the cell_mapping_file argument of the
openaccess_options() function. The gds_options(), oasis_options(), and
openaccess_options() functions can be used only when a GDSII, OASIS, or
OpenAccess library is the main library. See the library() function for more information.
The IC Compiler cell mapping file format is:
NewCellName OldCellName

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-122
IC Validator Reference Manual Version N-2017.12-SP2

Note:
In the cell_name_map option in this function and the cell_name_map argument in the
gds_options() or oasis_options() function, the strings are mapped in the reverse
order, with the replacement string being in the second place.
For example, to map TOP.CEL to NEWTOP.CEL, enter:
NEWTOP TOP

report
Optional. Specifies the information written to the milkyway_merge_library_options.log
file. The categories you can specify for output are USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS, and DUPLICATE_CELLS. The default output reports all
categories.

missing_library
Optional. Specifies the IC Validator action when the replacement library does not exist.
The default is ABORT.
❍ ABORT. Issues an error message when a replacement library does not exist.

❍ CONTINUE. Behaves as if the replacement library was never specified and continues
running.

lef_foreign_cell_name
Optional. Specifies if LEF (Library Exchange Format) foreign cell names are used for
replacement cells. The default is IGNORE.
❍ USE. Uses LEF foreign cell names for replacement cells.

❍ IGNORE. Does not use LEF foreign cell names for replacement cells.

unmatched_reference_library
Optional. Specifies the IC Validator action when the reference library is unmatched. The
default is WARN.
❍ ABORT. Stops the run if the two Milkyway library names are the same, with two
different paths in this function and in the reference libraries.
❍ WARN. Writes a warning message in the milkyway_merge_library_options.log file and
continues to run.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-123
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
In the following example, the design has seven libraries: A, B1, B2, C1, C2, C3, and C4. “A”
is the master library and cell “A” is the top cell of the entire design. To make the example
easy to study, each library has the same name as its top cell. Here is the mapping
represented as a table:
Table 3-14 Mapping Milkyway Libraries

Milkyway library Replacement GDSII library

B1

B2

C1 ./C1_REPL.gds

C2

C3 ./C3_REPL.gds

C4

In the runset file, the milkyway_merge_library_options() function maps the cells, as


shown here:
#include "icv.rh"

library(
library_name = "A",
library_path = ".",
cell = "A",
format = MILKYWAY
);

milkyway_merge_library_options(
libraries = {
{"C1", ".",
{{"./C1_REPL.gds", GDSII, {{"C1_GEORGE","C1"}, {"E1_GEORGE", "E1"}}, "lmf1"}}
},
{"C3", ".",
{{"./C3_REPL.gds", GDSII, {{"C3_IGLOP","C3"}, {"E3_IGLOP", "E3"}}, "lmf3"}}
}
},

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-124
IC Validator Reference Manual Version N-2017.12-SP2

missing_cell = ABORT,
icc_cell_map_file = "cmf"
);

Example 3-1 shows the resulting tree file.


Note:
Indentation is used to represent cell references. For example, the following indentation
means that there is an instance of cell G under cell F.
F
G

The .DUP# suffix is only used for Milkyway cells with the same name. For example,
Milkyway libraries C1, C2, C3, and C4 all have a “D” cell. Therefore, all but the first one are
renamed to avoid conflict. This functionality is not part of the
milkyway_merge_library_options() function, but is done when Milkyway data is read.
The cells that are replaced are C1 and C3, and their replacements, are unconditionally
appended with the suffix .REPL#, regardless of whether or not their name conflicts with an
existing Milkyway cell name. You can see this in the hierarchical tree. For example,
C1
C1.REPL#0

C1 is the original Milkyway cell (CEL view data suppressed) and C1.REPL#0 is the
replacement GDSII cell. The numeral following the # corresponds to the order in which the
replacement GDSII and OASIS libraries are specified in the
milkyway_merge_library_options() function.

Example 3-1 Tree File Example


A
B1
C1
C1.REPL#0
D.REPL#0
E1.REPL#0
C2
D.DUP#1
E2
D.DUP#1
B2
C3
C3.REPL#1
D.REPL#1
E3.REPL#1
C4
D
E4
D
D

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-125
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In addition to the tree file, the milkyway_merge_library_options.log file gives detailed


information about all Milkyway replacements that have been made. Example 3-2 shows the
resulting milkyway_merge_library_options.log file.
Example 3-2 milkyway_merge_library_options.log File Example
********
Used Cells (GDSII/OASIS)
********
Cell Name Name Mapping Final Used Name GDSII/OASIS File
(from GDSII/OASIS) (from icc_cell_map_file option) (in Milkyway) (cell pulled from)
------------------ ------------------------------- --------------- ------------------
C1_GEORGE C1 C1.REPL#0 ./C1_REPL.gds
C3_IGLOP C3 C3.REPL#1 ./C3_REPL.gds
E1_GEORGE E1 E1.REPL#0 ./C1_REPL.gds
D_GEORGE D D.REPL#0 ./C1_REPL.oas
E3_IGLOP E3 E3.REPL#1 ./C3_REPL.oas
D_IGLOP D D.REPL#1 ./C3_REPL.oas

********
Unused Cells (GDSII/OASIS)
********
Cell Name GDSII/OASIS File Name
(from GDSII/OASIS) (cell pulled from)
------------------ ---------------------

********
Missing Cells (milkyway cell exists but corresponding GDSII/OASIS cell does not)
********
Cell Name
(from GDSII/OASIS) Milkyway Library Name
------------------ ---------------------

********
Layer Maps (from GDSII/OASIS to Milkyway)
********
GDSII/OASIS File Layer Map File
---------------- --------------
./C1_REPL.gds lmf1
./C3_REPL.oas lmf3

See Also
milkyway_options()
ndm_merge_library_options()
openaccess_merge_library_options()

Chapter 3: Runset Functions: J - Z


milkyway_merge_library_options() 3-126
IC Validator Reference Manual Version N-2017.12-SP2

milkyway_options()
The milkyway_options() function specifies the behavior of the IC Validator tool when
reading a Milkyway library.

Syntax
milkyway_options(
drc_black_box_cells = {"string", ...}, //optional
lvs_black_box_cells = {{schematic_cell = "string",
layout_cell = "string"},
...}, //optional
merge_fram_view = NONE | PINS, //optional
missing_required_view = IGNORE | ABORT, //optional
generate_pin_text = NONE | TOP | ALL, //optional
merge_view_library_mode = ALL | MAIN | SAME, //optional
merged_view_list = {{name = "string",
outdated_views = ABORT | USE | DISCARD},
...}, //optional
pin_text = NET_NAME | PIN_NAME | REASSIGN, //optional
replace_instance_name_characters = {{search_string = "string",
replace_string = "string"},
...}, //optional
alternate_cel_view = NONE | FRAM, //optional
cell_types = {cell_type, ...}, //optional
exclude_cell_types = {cell_type, ...}, //optional
net_types = {net_type, ...}, //optional
route_guide_layers = {layer_type, ...}, //optional
route_types = {route_type, ...}, //optional
generate_polygon_text = NONE | TOP | ALL, //optional
datatype_mappings = {high_voltage_text = integer,
low_voltage_text = integer}, //optional
rule_name_delimiter = {search_string = "string",
ignore_case = true | false}, //optional
cut_table_datatype_mapping = ALWAYS | NEVER | DATATYPE_ZERO_ONLY,
//optional
instance_names = KEEP | DISCARD //optional
);

Returns
void

Arguments
drc_black_box_cells
Optional. Specifies the black-box cells for DRC. For these cells, polygon data from the
FRAM view is read, and the CEL view is not read. For other cells, polygons from CEL
view and pins from FRAM view are read. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-127
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
If DRC black-box cells are listed, the lvs_black_box_cells argument cannot be
used. If neither DRC nor LVS black-box cells are specified, polygons from CEL view
and pins from FRAM view are read. If the milkyway_merge_library_options()
function is used in the same IC Validator session, it has precedence over any of its
replacement cells that might also exist in the DRC black-box cell list.
For the top cell, all data from the CEL view is read. If the CEL view does not exist for
the top cell, an error is reported and the run stops.

lvs_black_box_cells
Optional. Lists the black-box cells for LVS. For these cells, only pins from FRAM view are
read. For other cells, polygons from CEL view and pins from FRAM view are read.
Note:
If LVS black-box cells are listed, the drc_black_box_cells argument cannot be
used. If neither DRC nor LVS black-box cells are specified, pins from FRAM view are
read. If the milkyway_merge_library_options() function is used in the same
IC Validator session, it has precedence over any of its replacement cells that might
also exist in the LVS black-box cell list.
For the top cell, all data from the CEL view is read. If the CEL view does not exist for
the top cell, an error is reported and the run stops.

merge_fram_view
Optional. Controls the reading of the FRAM view of cells that are not in the DRC or LVS
black-box cells lists. The default is PINS.
Note:
If a cell is either a DRC or LVS black-box cell, the FRAM view is read and the CEL
view is not. The CEL view is always read for the top cell.
❍ PINS. Reads pins from the FRAM view in addition to data from the CEL view.

❍ NONE. Does not read the FRAM view.

missing_required_view
Optional. Specifies behavior if a cell is missing a required view, as defined by the
drc_black_box_cells and lvs_black_box_cells arguments. The default is IGNORE.

❍ IGNORE. Continues the IC Validator run. A warning is reported and missing Milkyway
cells are empty.
❍ ABORT. Writes an error message and the run stops. If a cell is in either the DRC or LVS
black-box cells list, the FRAM view is required for that cell. If the cell is not in a
black-box cells list, the CEL view is required.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-128
IC Validator Reference Manual Version N-2017.12-SP2

generate_pin_text
Optional. Specifies if pin text is generated. In some design styles, generating net names
from pin text can create false text-open error messages. To avoid these error messages,
set this argument to NONE or TOP. The default is ALL.
❍ NONE. Specifies that net names of pins in the hierarchy are not converted to text.

❍ TOP. Specifies that only net names of pins in the top-level cell are converted to text.

❍ ALL. Specifies that net names of all pins in the hierarchy are converted to text.

merge_view_library_mode
Optional. Specifies the libraries to search to find a non-CEL cell. The default is SAME.
❍ ALL. Searches all libraries.

❍ MAIN. Specifies that only the main library for an associated cell is searched.

❍ SAME. Searches for a non-CEL cell in the same library as the cell that references it (by
placement or association).

merged_view_list
Optional. Lists the merging of views other than CEL and FRAM. These views of the top
cell of the design are read and merged into the top cell. By default, the IC Validator tool
merges the FILL view.
❍ name. Required. Specifies the view.

❍ outdated_views. Optional. Specifies the behavior of the function if the timestamp of


the view is older than the timestamp of the CEL view. The default is ABORT.
■ ABORT. If the timestamp of the specified view is older than the timestamp of the
CEL view, an error is reported and the run stops.
■ USE. If the timestamp of the specified view is older than the timestamp of the CEL
view, the view is read and the run continues.
■ DISCARD. If the timestamp of the specified view is older than the timestamp of the
CEL view, a warning is reported, the view is not read, and the run continues.

pin_text
Optional. Determines where to get generated text for pins in the Milkyway library. The
default is NET_NAME.
❍ NET_NAME. Reads texts from the net names of the pins.

❍ PIN_NAME. Reads texts from the pin names.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-129
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ REASSIGN. Reads texts from both the pin name and net name for pins. If the pin name
and net name are the same, the IC Validator tool uses the pin name. If the pin name
and net name are different, the IC Validator tool uses the net name and tags the text
as an assigned net for hierarchical net assignment.
Setting pin_text(REASSIGN) has the same functionality as manually entering cell
and net names in the reassign_text argument of the text_options() function.
Using pin_text(REASSIGN) provides automated assignments when you are using a
Milkyway library.

replace_instance_name_characters
Optional. Lists the strings to be replaced in instance names. Neither string can use string
matching. By default, the IC Validator tool does not replace any characters.
❍ search_string. Required. Specifies the string to replace.

❍ replace_string. Required. Specifies the replacement string. An empty string ("")


results in the removal of the specified search string.

alternate_cel_view
Optional. Specifies behavior if the CEL view is missing. The default is FRAM.
❍ NONE. Applies the behavior specified by the missing_required_view argument.

❍ FRAM. Reads the entire FRAM view of a cell if the CEL view is missing. If both the CEL
and FRAM views are missing, the behavior specified by the
missing_required_view argument applies.
Note:
The CEL view is always required for the top cell of the design.

cell_types
Optional. Specifies the cell types that determine which cells are read from the Milkyway
library. Using the milkyway argument of the assign() and assign_edge() functions,
you can specify the cell types for certain layers. You can use the
exclude_milkyway_cell_types() function to obtain a list of all possible cell types
except those specified by the exclude argument. By default, the IC Validator tool reads
all cell types. Table 3-15 lists the cell types.
Table 3-15 Milkyway cell_types Options

ANTENNA_CELL ARC_PLAN_CELL BV_CELL

CHIP_CELL CLOCK_BUFFER_CELL CORNER_PAD_CELL

COVER_CELL DOUBLE_HEIGHT_STANDARD FC_BUMP_CELL


_CELL

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-130
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-15 Milkyway cell_types Options (Continued)

FC_DRIVER_CELL FILLER_CELL FLIP_CHIP_PAD_CELL

FLIP_FLOP_CELL GALAXY_AND_XO_CELL GALAXY_CELL

IMAGE_CELL IO_PAD_CELL LATCH_CELL

MACRO_CELL MODULE_CELL MORE_THAN_TRIPLE_HEIGHT_


CELL

NONE PAD_FILLER_CELL PG_PIN_ONLY_CELL

RAM_CELL ROM_CELL SOFT_MACRO_IO_FIXED_CELL

SOG_DESIGN_CELL SPECIAL_VIA_CELL STACK_VIA_CELL

STANDARD_CELL STANDARD_FILLER_CELL TAP_CELL

TRIPLE_HEIGHT_STANDARD_ TSV_CELL UNKNOWN_L_MODEL_CELL


CELL

XO_CELL

exclude_cell_types
Optional. Specifies the cell types that determine which cells are not read from the
Milkyway library. If a cell type is listed in the cell_types and exclude_cell_types
arguments, it is excluded. By default, the IC Validator tool does not exclude any cell
types. See Table 3-15 for more information.
Note:
If a cell type is excluded, no data is read from the cell and no subtrees under the cell
are placed.

net_types
Optional. Specifies the net types that are read from the Milkyway library. Using the
milkyway argument of the assign() and assign_edge() functions you can specify the
net types for specific layers. You can use the exclude_milkyway_net_types() function

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-131
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

to obtain a list of all possible net types except those specified. By default, the IC Validator
tool reads all net types. Table 3-16 lists the net types.
Table 3-16 Milkyway net_types Options

CLOCK CLOCK_AND_SPLIT_CLOCK FLIP_CHIP

1
GROUND NON_CONT_PG NONE

POWER SIGNAL SLEEP_CONTROL

SPECIAL_POWER SPLIT_CLOCK TIE_HIGH

2
TIE_LOW UNCONNECTED

1.NONE specifies that connected objects which do not have a set net type are read.
2.UNCONNECTED specifies that objects which do not have an associated net are read.

route_guide_layers
Optional. Specifies the route guides that are read from the Milkyway library. Route guides
are rectangles on a specific layer that have a BlockLayer property set which defines the
blocked layers. This argument filters based on the BlockLayer property. Using the
milkyway argument of the assign() function you can specify which route guides are
read for specific layers. You can use the exclude_milkyway_route_guide_layers()
function to obtain a list of all possible route guides except those specified by the exclude
argument. By default, the IC Validator tool reads all route guides. Table 3-17 lists the
route guide layers.
Table 3-17 Milkyway route_guide_layers Options

M1_ROUTE_GUIDE M10_ROUTE_GUIDE M11_ROUTE_GUIDE

M12_ROUTE_GUIDE M13_ROUTE_GUIDE M14_ROUTE_GUIDE

M15_ROUTE_GUIDE M2_ROUTE_GUIDE M3_ROUTE_GUIDE

M4_ROUTE_GUIDE M5_ROUTE_GUIDE M6_ROUTE_GUIDE

M7_ROUTE_GUIDE M8_ROUTE_GUIDE M9_ROUTE_GUIDE

1
NONE POLY_ROUTE_GUIDE

1. NONE specifies that polygons which do not have a BlockLayer property are read.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-132
IC Validator Reference Manual Version N-2017.12-SP2

route_types
Optional. Specifies the route types that are read from the Milkyway library. Using the
milkyway argument of the assign() and assign_edge() functions you can specify the
route types for specific layers. You can use the exclude_milkyway_route_types()
function to obtain a list of all possible route types except those specified. By default, the
IC Validator tool reads all route types. Table 3-18 lists the route types.
Note:
The route type is only used for the shapes RECTANGLE, PATH, HORIZONTALWIRE, and
VERTICALWIRE, as specified in the milkyway argument of the assign() and
assign_edge() functions.
Table 3-18 Milkyway route_types Options

ALIEN BUS CLOCK_0_SKEW

CLOCK_RING CLOCK_STRIPE DYNAMIC_SHIELD

FILL_TRACK FIXED HPB

1
NONE PG_FOLLOW_PIN PG_PIN

PG_RING PG_STRIPE SIGNAL_DETAIL

SIGNAL_GLOBAL SIGNAL_USER

1.NONE specifies that objects that do not have a route type set are read. In the route type specified
in layers and errors arguments of the write_milkyway() function, NONE specifies to not set
a route type even if writing rectangles to the FILL view.

generate_polygon_text
Optional. Specifies if text points are generated from polygon net names. In some design
styles, generating text from polygon net names can create false text-open error
messages. To avoid these error messages, set this argument to NONE or TOP. The default
is ALL.
❍ NONE. Specifies that net names of polygons in the hierarchy are not converted to text.

❍ TOP. Specifies that only net names of polygons in the top-level cell are converted to
text.
❍ ALL. Specifies that net names of all polygons in the hierarchy are converted to text.

datatype_mappings
Optional. Specifies datatypes that identify the layers in the Milkyway library from which
operating voltage text is selected.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-133
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ high_voltage_text. Optional. Specifies the datatype for selecting the high voltage
text.
❍ low_voltage_text. Optional. Specifies the datatype for selecting the low voltage
text.
For example,
milkyway_options(...,
datatype_mappings = {high_voltage_text = 231,
low_voltage_text = 230}
);

You can use the -lf command-line option instead of the datatype_mappings argument
to specify a layer mapping file that has voltage text mapping. For information about -lf,
see the Command-Line Options section in the “IC Validator Basics” chapter of the
IC Validator User Guide. For example, the layer mapping could specify:
PL * *:230
PH * *:231

PL indicates the low voltage text, and PH indicates the high voltage text.

rule_name_delimiter
Optional. Defines a delimiter for rule names. Use this argument to separate the rule
name from the violation comment. The violation comment is truncated at the first
instance of this delimiter for reporting in the icv_sdrc.conclude file.
Note:
This delimiter is used only to determine the rule name for the Milkyway
icv_sdrc.conclude file.
If the delimiter is not matched, the entire violation comment is reported in the
icv_sdrc.conclude file. The violation comment might be truncated for length; the
maximum length of a violation comment is 1024 characters.
❍ search_string. Specifies the delimiter. The search string must be a GNU extended
regular expression. The default is
"[[:space:]]+:|[[:space:]]*:[[:space:]]"
That is, the default is one of the following:
■ One or more white space characters followed by a colon.
■ Zero or more white space characters followed by a colon followed by one white
space character.
❍ ignore_case. Specifies if the character case in the violation comment is considered
when matching the delimiter. The default is false.
■ true. The search is case-sensitive.

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-134
IC Validator Reference Manual Version N-2017.12-SP2

■ false. The search is not case-sensitive.

cut_table_datatype_mapping
Optional. Specifies how the IC Validator tool uses cutDataTypeTbl table definitions in the
Milkyway technology file.
❍ ALWAYS. Always uses the cut datatype table, if available in the Milkyway technology
file, and sets datatypes for cut layer shapes as defined in the table.
❍ NEVER. Always uses the datatype of the shape stored in the Milkyway database and
does not change the datatype based on cut datatype table information in the
technology file.
❍ DATATYPE_ZERO_ONLY. Sets datatypes for cut layer shapes as defined in the cut
datatype table only if the datatype of the Milkyway shape is zero. If the datatype of a
Milkyway shape is non-zero, the datatype is preserved.

instance_names
Optional. Specifies whether instance names from the input layout should be retained by
the IC Validator tool. The instance names can be used for netlisting or possibly reused
for the output layout. Retaining instance names could result in extra processing time
during the reading of the input layout. The default is KEEP.
❍ KEEP. Retains instance names from the input layout.

❍ DISCARD. Does not retain instance names from the input layout.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
milkyway_options (
merge_fram_view = NONE,
replace_instance_name_characters = {{"AND", "AND_A"},
{"OR", "OR_A"}}
);

See Also
assign()
assign_edge()
assign_text()

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-135
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

gds_options()
oasis_options()
openaccess_options()

Chapter 3: Runset Functions: J - Z


milkyway_options() 3-136
IC Validator Reference Manual Version N-2017.12-SP2

milkyway_route_directives()
The milkyway_route_directives() function provides better control over automatic DRC
repair. (The ADR flow uses the signoff_autofix_drc command within the IC Compiler
tool.) The bounding boxes are output to the LAYOUT_ERRORS file, and VUE displays the
specified display markers. The directive layers specified in this function, including
combinations of add shapes, subtract shapes, and multiple error markers, are passed
directly to the IC Compiler tool in the ADR flow.
This function is also compatible with IC Validator pattern matching.

Syntax
milkyway_route_directives(
display_marker = polygon_layer,
group_marker = polygon_layer,
error_layers = {layername = polygon_layer, ...}, //optional
route_directives = {{add_layer = polygon_layer,
subtract_layer = polygon_layer}, ...} //optional
);

Returns
void

Arguments
display_marker
Required. Specifies the layer that contains the shapes used to display the errors.

group_marker
Required. Specifies the layer with the shapes that enclose the shapes defined by the
display_marker, error_layers, and route_directives arguments.

error_layers
Optional. Specifies the layers that are used to specify the errors. These layers are
interpreted by the signoff_autofix_drc command as alternative representations.
Each of these layers is used in an independent fixing attempt in the ADR flow.

route_directives
Optional. Specifies the layers that contain shapes which identify surgical fixes for the
IC Compiler Zroute router. For a given set of add_layer and subtract_layer shapes
contained by a single group_marker layer, the shapes are implemented by the Zroute
router if they are allowed actions.

Chapter 3: Runset Functions: J - Z


milkyway_route_directives() 3-137
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ add_layer. The shapes on this layer are added, as if by an OR operator, to the


database by the Zroute router, inheriting properties and connectivity based on the
shapes they are touching.
❍ subtract_layer. The shapes on this layer are subtracted, as if by a NOT operator,
from the database by the Zroute router, possibly leaving behind partial shapes in the
database.

Description
The following restrictions apply to the milkyway_route_directives() function:
• All shapes altered by the route_directives argument must be on the minimum
manufacturing grid. (The manufacturing grid is specified in the Milkyway technology file.)
• An add_layer directive must not create a short, even if a subtract_layer directive
would resolve it.
• The result of a route directive must not be an open or floating shape.
• A layer specified by a subtract_layer argument must not interact with any via
enclosure.
• Any route_directives layer must not overlap with power and ground straps, shapes
that have a route type of fixed or user enter, and pins.
• A subtract layer can interact only with shapes having a route type of SIGNAL_DETAIL.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
Use the pattern_learn() function to create a new pattern library, patternLib.
pattern_learn(
pattern_library_name = "patternLib",
pattern_layers = {layerInput},
pattern_marker = layerMarker,
optional_pattern_markers = {
layerPatternExtent,
layerAdd,
layerRemove
}
);

Chapter 3: Runset Functions: J - Z


milkyway_route_directives() 3-138
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-20 shows an example of user-specified layers that are represented in the pattern
library, patternLib.
Figure 3-20 Pattern in patternLib Library

layerInput layerMarker layerAdd layerRemove

layerPatternExtent

Use the pattern_match() function to capture patterns on a design that match patterns in a
pattern library. Then, use the optional_pattern_markers() function to list polygon layers
associated with the pattern marker layer, allowing you to do additional error filtering. Finally,
use the milkyway_route_directives() function to specify error markers that are used in
the ADR flow.
marker_layer = pattern_match(
pattern_library_name = "patternLib",
pattern_layers = {metal1}
);

extra_layers = optional_pattern_markers(
pattern_library_name = "patternLib",
layerMarker = marker_layer
);

pattern_extent = extra_layers[0];
m1_add = extra_layers[1];
m1_subtract = extra_layers[2];

@ “Add/Remove Layer”;

Figure 3-21 shows an example of layers in the pattern database in the context of a pattern
match for the layout. These layers are used as the directive layers for the
milkyway_route_directives() function.

Chapter 3: Runset Functions: J - Z


milkyway_route_directives() 3-139
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-21 Pattern Matched in the Layout

metal1 marker_layer m1_add m1_remove

pattern_extent

Add to the pattern library the exact modifications you want, as specified in the
milkyway_route_directives() function.
milkyway_route_directives(
marker_layer = metal1,
group_marker = pattern_extent,
route_directives = {{add_layer = m1_add,
subtract_layer = m1_subtract}}
);

Zroute implements the modifications.


• The standard ADR algorithm is bypassed in this flow.
• Shapes are bundled into groups.
• On a per-group basis, Zroute applies either all or none of the shapes exactly as
prescribed.
• Zroute guarantees: the shapes are
❍ Technology file clean.
❍ Appropriate for downstream ECOs.

Chapter 3: Runset Functions: J - Z


milkyway_route_directives() 3-140
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-22 shows an example of what the input layers might look like at the completion of
the ADR flow, with the directive layers shown for context. Note that the jog on the metal1
layer has moved north to cover the m1_add shape and to uncover the m1_remove shape.
Figure 3-22 Layers After ADR

metal1 marker_layer m1_add m1_remove

pattern_extent

See Also
pattern_learn()
pattern_match()

Chapter 3: Runset Functions: J - Z


milkyway_route_directives() 3-141
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

mos_select()
The mos_select() function selects device polygons from MOS devices on the specified
layers that fit the specified criteria. A remote function specifies arithmetic conditions relative
to MOS parameters.

Syntax
mos_select(
drain = polygon_layer,
gate = polygon_layer,
source = polygon_layer,
mos_func = function,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK},
...}, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
recognition_layer = polygon_layer, //optional
connect_sequence = connect_database, //optional
source_drain_config = {NORMAL, SINGLE}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL |
LEVEL_SOURCE_DRAIN //optional
);

Returns
polygon layer or error result

Arguments
drain
Required. Specifies the drain layer of the MOS device. Drain and source terminal layers
are required to determine the gate direction.

gate
Required. Specifies the gate layer of the MOS device.

source
Required. Specifies the source layer of the MOS device. Drain and source terminal
layers are required to determine the gate direction.

mos_func
Required. Specifies the remote function that selects devices based on geometric criteria.
See Chapter 4, “Utility Functions,” for more information about the utility functions you can
use to define a remote function.

Chapter 3: Runset Functions: J - Z


mos_select() 3-142
IC Validator Reference Manual Version N-2017.12-SP2

optional_pins
Optional. Lists additional bulk or terminal layers.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".

❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

recognition_layer
Optional. Specifies the layer used to form a MOS transistor when the gate polygon layer
does not interact with all other terminal polygons. All polygons required to form a
transistor must interact with a single polygon on this layer.

connect_sequence
Optional. Specifies the connect database. If specified, the connection is considered in
the device checking process.

Chapter 3: Runset Functions: J - Z


mos_select() 3-143
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

source_drain_config
Optional. Specifies the MOS device types to be checked. The default is {NORMAL,
SINGLE}.

❍ SINGLE. Extracts only MOS devices that touch a single source or drain.

❍ NORMAL. Extracts only MOS devices that have separate regions for source and drain.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

❍ LEVEL_SOURCE_DRAIN. Specifies that MOS devices which hierarchically share source


or drain are brought into the same cell.
Note:
Source and drain properties that are hierarchically shared by MOS devices are
accurately calculated. This behavior can cause MOS devices to be formed at a
higher level and, therefore, can result in difficulties during the compare process.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
check_device : function (void) returning void {
L : double = mos_length_min();
if (dblgt(L, 0.1))
{dev_set_error("L = " + L);}
};

output_layer = mos_select(drain = nsd,


gate = ngate,
source = nsd,

Chapter 3: Runset Functions: J - Z


mos_select() 3-144
IC Validator Reference Manual Version N-2017.12-SP2

optional_pins = {{bulk}},
connect_sequence = cdb1,
mos_func = check_device);

output_layer2 @= { @ "comment";
mos_select(drain = nsd,
gate = ngate,
source = nsd,
optional_pins = {{bulk}},
connect_sequence = cdb1,
mos_func = check_device);
};

See Also
gendev_select()
res_select()

Chapter 3: Runset Functions: J - Z


mos_select() 3-145
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

move()
The move() function creates polygons by shifting all polygons on the input layer by the
specified offsets. See the prototype_options() function for more information about
defining the criteria for the creation of prototype cells during hierarchical preprocessing.

Syntax
move(
layer1 = polygon_layer,
x = double,
y = double,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

x
Required. Specifies the offset in the x-direction.

y
Required. Specifies the offset in the y-direction.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


move() 3-146
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 3-23 shows the shifting of the gate polygon according to the specified xy offsets.
Result = move( gate, -5, 5);

Figure 3-23 move() Function Example


y gate Result
10
8
6
4
2
x
-8 -6 -4 -2 0 2 4 6 8

See Also
move_edge()
polygons()
shrink()
size()

Chapter 3: Runset Functions: J - Z


move() 3-147
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

move_edge()
The move_edge() function creates edges by shifting all edges on the input layer by the
specified offsets.

Syntax
move_edge(
layer1 = edge_layer,
x = double,
y = double,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

x
Required. Specifies the offset in the x-direction.

y
Required. Specifies the offset in the y-direction.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


move_edge() 3-148
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = move_edge( gate_edges, .1, .2 );

See Also
edge_size()
extend_edge()
move()

Chapter 3: Runset Functions: J - Z


move_edge() 3-149
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndm_library()
The ndm_library() function defines an NDM library name and returns a handle to be used
by the output_library argument of the write_ndm() function.
Limitation:
The ndm_library() function cannot be called more than one time with the same
library_name and library_path arguments. The result, however, can be used in more
than one write_ndm() function.

Syntax
ndm_library(
library_name = "string",
library_path = "string"
);

Returns
ndm_library_handle

Arguments
library_name
Required. Specifies the NDM library name. See the output_library argument of the
write_ndm() function for more information.

library_path
Optional. Specifies the path to the NDM library. The default is ".".

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
ndm_merge_library_options()
ndm_options()
write_ndm()

Chapter 3: Runset Functions: J - Z


ndm_library() 3-150
IC Validator Reference Manual Version N-2017.12-SP2

ndm_merge_library_options()
The ndm_merge_library_options() function specifies a mapping from the master and
reference NDM libraries to replacement GDSII and OASIS libraries that are read in with
NDM data at the start of a verification run. This function can be called only one time in a
runset.
Note:
You can use the -ml command-line option to override the settings in the
ndm_merge_library_options() function. See the Command-Line Options section in
the “IC Validator Basics” chapter of the IC Validator User Guide for more information.
For example, if cell “A” has a frame view and a design view in the NDM library, the design
view is replaced with the GDSII or OASIS data for cell “A”. If cell “A” only has a frame view
in the NDM library, the missing design view data is created with data from the GDSII or
OASIS replacement library.
Using the ndm_merge_library_options() function, you can read all required GDSII,
OASIS, and NDM data during an IC Validator run to emulate the complete mask data set for
a designated top-level structure. The lower-level cells in the replacement data are not
permanently merged into the input NDM library. Data is temporarily merged for only this run.
Note:
The master NDM library and top-level cell are identified in the runset by the library()
function. The mapping specified in the ndm_merge_library_options() function never
looks for a replacement of the top cell.
When using the ndm_merge_library_options() function, you should be familiar with
• Master NDM libraries and reference libraries, and the order in which NDM searches
these libraries to find a cell.
• The ndm_options() function. Use this function to control the reading of frame and
design views, and the reading of other NDM data.
• The -lf command-line option. Use this command-line option to specify mapping of the
NDM layers to the runset layers. See the Command-Line Options section in the
“IC Validator Basics” chapter of the IC Validator User Guide for more information.

You can see the replacements in the run_details/top_cell.tree0 file. A tree file is shown in the
Example section.

Syntax
ndm_merge_library_options(
libraries = {{library_name = "string",
library_path = "string",
replacement_libraries = {{
file = "string",

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-151
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

format = GDSII | OASIS | OPENACCESS,


layer_map_file = "string",
openaccess = {library = "string",
view = "string",
cell_mapping_file = "string"}},
object_mapping_file =
"string"}},
...}},
...},
missing_cell = ABORT | USE_NDM, //optional
report = {USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS,
DUPLICATE_CELLS}, //optional
missing_library = ABORT | CONTINUE, //optional
lef_foreign_cell_name = USE | IGNORE, //optional
unmatched_reference_library = ABORT | WARN, //optional
default_replacement_libraries = {{file = "string",
format = GDSII | OASIS |
OPENACCESS,
layer_map_file = "string",
openaccess =
{library = "string",
view = "string",
cell_mapping_file =
"string"}},
object_mapping_file =
"string"}},
...}},
...} //optional
);

Returns
void

Arguments
libraries
Required. Lists the NDM and replacement libraries.
❍ library_name. Required. Specifies the NDM library name. You only need to list the
NDM libraries for which you want to do replacements.
❍ library_path. Optional. Specifies the NDM library path, which can be either relative
or absolute. Use the library_path argument if your library is not in the run directory.
The default is the current working directory.
❍ replacement_libraries. Required. Specifies the replacement libraries. The
IC Validator tool searches the replacement libraries in the order specified looking for
cells. The first cell found is the one used.

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-152
IC Validator Reference Manual Version N-2017.12-SP2

Note:
A GDSII or OASIS file can be gzipped. The IC Validator tool automatically detects
if a GDSII or OASIS file is gzipped.
■ file. Specifies the replacement file.

■ format. Specifies the format of the replacement libraries, GDSII, OASIS, or


OPENACCESS.

■ layer_map_file. Optional. Specifies the layer mapping file for the replacement
library. You can map GDSII, OASIS, or OpenAccess data to NDM data.
Note:
When the OpenAccess layer mapping format is used, OpenAccess data is
mapped directly to the runset. This behavior differs from when the GDSII or
OASIS layer mapping formats are used, as there is no standard layer mapping
file format from OpenAccess to NDM or MILKYWAY that supports color
mapping.
The NDM layer mapping format used for the replacement libraries is:
ndm_layer_no[:ndm_purpose][:use_type][:mask_type]
oasis_or_gdsii_layer_no[:oasis_or_gdsii_data_type]

The allowed values are


- ndm_layer_no: 0 to 65535, inclusive

- ndm_purpose: 0 to 32767, inclusive

- use_type: signal, power, ground, clock, layer_boundary,


hard_placement_blockage, soft_placement_blockage, and
routing_blockage.

- mask_type: mask_one, mask_two, mask_three, mask_same, and mask_none.


The default is mask_none.
- oasis_or_gdsii_layer_no: 0 to 65535, inclusive

- oasis_or_gdsii_data_type: 0 to 65535, inclusive


Comments are specified with a semicolon. All text following the semicolon on the
current line is part of the comment.
In the following example, all the geometric and text data on layer 10 and data type
2 in the GDSII or OASIS file are mapped to NDM layer 56 and purpose 4 as the
power net type:
56:4:power 10:2

■ openaccess. Required when the replacement library format is OpenAccess; that


is when the format option is OPENACCESS. (Do not use this openaccess option

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-153
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

when the replacement library format is GDSII or OASIS.) Maps OpenAccess data
to NDM data. See the cell_mapping_file argument of the
openaccess_options() function for more information.

- library. Required. Specifies the OpenAccess library definition file that is in


the library definition file.
- view. Optional. Specifies the view. The default is "layout".

- cell_mapping_file. Optional. Specifies the OpenAccess cell mapping file


that allows you to specify the unique name that the IC Validator tool uses for a
given library/cell/view triplet.
Note:
This cell mapping file is applied, then the mapping specified in the
cell_name_map option is applied.

- object_mapping_file. Optional. Specifies the OpenAccess object mapping


file that allows you map OpenAccess objects to a runset layer and data type.
Note:
The object_mapping_file option does not map to NDM layers and data
types. This behavior is consistent with the behavior of the OpenAccess layer
mapping file.

missing_cell
Optional. Specifies the action taken if a cell is missing from the replacement file. The
default is ABORT.
❍ ABORT. Specifies if the run stops when a cell in the NDM library is not found in a
replacement file.
❍ USE_NDM. If a cell in the NDM library is not found in a GDSII or OASIS replacement
file, takes the NDM design view from the NDM library.

report
Optional. Specifies the information written to the ndm_merge_library_options.log file.
The categories you can specify for output are USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS, and DUPLICATE_CELLS. The default output reports all
categories.
The ndm_merge_library_options.log file contains the information about cell usage during
replacement, layer mapping, and cell name modifications caused by mapping. This file
is in the run_details directory.
Note:
For errors, the error messages are written to the summary file (cell.sum) and to the
screen when you use the -verbose option, but not listed in the
ndm_merge_library_options.log file.

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-154
IC Validator Reference Manual Version N-2017.12-SP2

missing_library
Optional. Specifies the IC Validator action when the replacement library does not exist.
The default is ABORT.
❍ ABORT. issues an error message when a replacement library does not exist.

❍ CONTINUE. Behaves as if the replacement library was never specified and continues
running.

lef_foreign_cell_name
Optional. Specifies if LEF (Library Exchange Format) foreign cell names are used for
replacement cells. The default is IGNORE.
❍ USE. Uses LEF foreign cell names for replacement cells.

❍ IGNORE. Does not use LEF foreign cell names for replacement cells.

unmatched_reference_library
Optional. Specifies the IC Validator action when the reference library is unmatched. The
default is WARN.
❍ ABORT. Stops the run if the two NDM library names are the same, with two different
paths in this function and in the reference libraries.
❍ WARN. Writes a warning message in the ndm_merge_library_options.log file and
continues to run.

default_replacement_libraries
Optional. Specifies the replacement libraries to be used for all NDM libraries that are not
specified in the libraries argument of the ndm_merge_library_options() function.
❍ file. Specifies the replacement file.

❍ format. Specifies the format of the replacement libraries, GDSII, OASIS, or


OPENACCESS.

❍ layer_map_file. Optional. Specifies the layer mapping file for replacement library.
You can map GDSII, OASIS, OpenAccess data to NDM data.
Note:
When the OpenAccess layer mapping format is used, OpenAccess data is
mapped directly to the runset. This behavior differs from when the GDSII or
OASIS layer mapping formats are used, as there is no standard layer mapping file
format from OpenAccess to NDM or Milkyway that supports color mapping.
The NDM layer mapping format used for the replacement libraries is:
ndm_layer_no[:ndm_purpose][:use_type][:mask_type]
oasis_or_gdsii_layer_no[:oasis_or_gdsii_data_type]

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-155
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The allowed values are


■ ndm_layer_no: 0 to 65535, inclusive

■ ndm_purpose: 0 to 32767, inclusive

■ use_type: signal, power, ground, clock, layer_boundary,


hard_placement_blockage, soft_placement_blockage, and
routing_blockage.

■ mask_type: mask_one, mask_two, mask_three, mask_same, and mask_none. The


default is mask_none.
■ oasis_or_gdsii_layer_no: 0 to 65535, inclusive

■ oasis_or_gdsii_data_type: 0 to 65535, inclusive


Comments are specified with a semicolon. All text following the semicolon on the
current line is part of the comment.
In the following example, all the geometric and text data on layer 10 and data type 2
in the GDSII or OASIS file are mapped to NDM layer 56 and purpose 4 as the power
net type:
56:4:power 10:2

❍ openaccess. Required when the replacement library format is OpenAccess; that is


when the format option is OPENACCESS. (Do not use this openaccess option when
the replacement library format is GDSII or OASIS.) Maps OpenAccess data to NDM
data. See the cell_mapping_file argument of the openaccess_options()
function for more information.
■ library. Required. Specifies the OpenAccess library definition file that is in the
library definition file.
■ view. Optional. Specifies the view. The default is "layout".

■ cell_mapping_file. Optional. Specifies the OpenAccess cell mapping file that


allows you to specify the unique name that the IC Validator tool uses for a given
library/cell/view triplet.
Note:
This cell mapping file is applied, then the mapping specified in the
cell_name_map option is applied.

■ object_mapping_file. Optional. Specifies the OpenAccess object mapping file


that allows you map OpenAccess objects to a runset layer and data type.

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-156
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The object_mapping_file option does not map to NDM layers and data
types. This behavior is consistent with the behavior of the OpenAccess layer
mapping file.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
In the following example, the design has seven libraries: A, B1, B2, C1, C2, C3, and C4. “A”
is the master library and cell “A” is the top cell of the entire design. To make the example
easy to study, each library has the same name as its top cell. Here is the mapping
represented as a table:
Table 3-19 Mapping NDM Libraries

NDM library Replacement GDSII library

B1

B2

C1 ./C1_REPL.gds

C2

C3 ./C3_REPL.oas

C4

In the runset file, the ndm_merge_library_options() function maps the cells, as shown
here:
#include "icv.rh"

library(
library_name = "A",
library_path = ".",
cell = "A",
format = NDM

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-157
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

ndm_merge_library_options(
libraries = {
{"C1", ".", {{"./C1_REPL.gds", GDSII, "lmf1"}}},
{"C3", ".", {{"./C3_REPL.oas", OASIS, "lmf3"}}}
},
missing_cell = ABORT
);

Example 3-1 shows the resulting tree file.


Note:
Indentation is used to represent cell references. For example, the following indentation
means that there is an instance of cell G under cell F.
F
G

The .DUP# suffix is only used for NDM cells with the same name. For example, NDM
libraries C1, C2, C3, and C4 all have a “D” cell. Therefore, all but the first one are renamed
to avoid conflict. This functionality is not part of the ndm_merge_library_options()
function, but is done when NDM data is read. The cells that are replaced are C1 and C3, and
their replacements, are unconditionally appended with the suffix .REPL#, regardless of
whether or not their name conflicts with an existing Milkyway cell name. You can see this in
the hierarchical tree. For example,
C1
C1.REPL#0

C1 is the original NDM cell (CEL view data suppressed) and C1.REPL#0 is the replacement
GDSII cell. The numeral following the # corresponds to the order in which the replacement
GDSII and OASIS libraries are specified in the ndm_merge_library_options() function.
Example 3-3 Tree File Example
A
B1
C1
C1.REPL#0
D.REPL#0
E1.REPL#0
C2
D.DUP#1
E2
D.DUP#1
B2
C3
C3.REPL#1
D.REPL#1
E3.REPL#1
C4
D

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-158
IC Validator Reference Manual Version N-2017.12-SP2

E4
D
D

In addition to the tree file, the ndm_merge_library_options.log file gives detailed information
about all NDM replacements that have been made. Example 3-2 shows the resulting
ndm_merge_library_options.log file.
Example 3-4 ndm_merge_library_options.log File Example
********
Used Cells (GDSII/OASIS)
********
Cell Name Name Mapping Final Used Name GDSII/OASIS File
(from GDSII/OASIS) (from icc_cell_map_file option) (in NDM) (cell pulled from)
------------------ ------------------------------- --------------- ------------------
C1_GEORGE C1 C1.REPL#0 ./C1_REPL.gds
C3_IGLOP C3 C3.REPL#1 ./C3_REPL.oas
E1_GEORGE E1 E1.REPL#0 ./C1_REPL.gds
D_GEORGE D D.REPL#0 ./C1_REPL.gds
E3_IGLOP E3 E3.REPL#1 ./C3_REPL.oas
D_IGLOP D D.REPL#1 ./C3_REPL.oas

********
Unused Cells (GDSII/OASIS)
********
Cell Name GDSII/OASIS File Name
(from GDSII/OASIS) (cell pulled from)
------------------ ---------------------

********
Missing Cells (ndm cell exists but corresponding GDSII/OASIS cell does not)
********
Cell Name
(from GDSII/OASIS) NDM Library Name
------------------ ---------------------

********
Layer Maps (from GDSII/OASIS to NDM)
********
GDSII/OASIS File Layer Map File
---------------- --------------
./C1_REPL.gds lmf1
./C3_REPL.oas lmf3

See Also
ndm_library()
ndm_options()
write_ndm()

Chapter 3: Runset Functions: J - Z


ndm_merge_library_options() 3-159
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndm_options()
The ndm_options() function specifies the behavior of the IC Validator tool when reading an
NDM library. By default, the tool reads the design view of a cell if it is present. If the design
view is missing, the tool looks for a frame view based on the setting of the alternate_view
argument. If, after looking for the alternate view, the cell cannot be found, the tool either
continues with an empty cell or aborts, depending on the setting of the missing_cell
argument.
This function can be called only one time in a runset.

Syntax
ndm_options(
generate_pin_text = NONE | TOP | ALL, //optional
pin_text = NET_NAME | PIN_NAME |
REASSIGN | PORT_NAME, //optional
generate_polygon_text = NONE | TOP | ALL, //optional
replace_instance_name_characters = {{search_string = "string",
replace_string = "string"},
...}, //optional
rule_name_delimiter = "string", //optional
drc_black_box_cells = {"string", ...}, //optional
lvs_black_box_cells = {"string", ...}, //optional
alternate_view = NONE | FRAME_VIEW | DESIGN_VIEW, //optional
missing_cell = ABORT | IGNORE, //optional
design_types = {ndm_design_type, ...}, //optional
exclude_design_types = {ndm_design_type, ...}, //optional
internal_designs = {{use = FILL_USE | FILL_BLOCKAGE_USE,
out_of_date = ABORT | USE | DISCARD,
read_from = TOP | ALL}, ...}, //optional
search_path = "string", //optional
design_label = "string", //optional
cut_table_datatype_mapping = ALWAYS | NEVER | DATATYPE_ZERO_ONLY,
//optional
merge_blockage_with_layer = {views = {view_type, ...},
cells = {"string", ...}},
//optional
mask_shifted_cell_name_suffix = {name = "string",
extension = NONE | LAYER_NUM_SHIFT},
//optional
instance_names = KEEP | DISCARD, //optional
layout_view_cells = {"string", ...}, //optional
merge_blockage_with_layer_before_layer_map = true | false //optional
);

Returns
void

Chapter 3: Runset Functions: J - Z


ndm_options() 3-160
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
generate_pin_text
Optional. Specifies if pin text is generated. In some design styles, generating net names
from pin text can create false text-open error messages. To avoid these error messages,
set this argument to NONE or TOP. The default is ALL.
❍ NONE. Specifies that net names of pins in the hierarchy are not converted to text.

❍ TOP. Specifies that only net names of pins in the top-level cell are converted to text.

❍ ALL. Specifies that net names of all pins in the hierarchy are converted to text.

pin_text
Optional. Determines where to get generated text for pins in the NDM library. The default
is NET_NAME.
❍ NET_NAME. Reads texts from the net names of the pins.

❍ PIN_NAME. Reads texts from the pin names.

❍ REASSIGN. Reads texts from both the pin name and net name for pins. If the pin name
and net name are the same, the IC Validator tool uses the pin name. If the pin name
and net name are different, the IC Validator tool uses the net name and tags the text
as an assigned net for hierarchical net assignment.
Setting pin_text(REASSIGN) has the same functionality as manually entering cell
and net names in the reassign_text argument of the text_options() function.
Using pin_text(REASSIGN) provides automated assignments when you are using
an NDM library.
❍ PORT_NAME. Reads texts from the port names.

generate_polygon_text
Optional. Specifies if text points are generated from the net names of polygons in the
input library. The default is NONE.
❍ NONE. Does not generate text from polygons in the input library.

❍ TOP. Generates polygon text only for the top cell of the design.

❍ ALL. Generates polygon text for all cells in the hierarchy.

replace_instance_name_characters
Optional. Lists the strings to be replaced in instance names. Neither string can use string
matching. By default, the IC Validator tool does not replace any characters.

Chapter 3: Runset Functions: J - Z


ndm_options() 3-161
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ search_string. Required. Specifies the string to replace.

❍ replace_string. Required. Specifies the replacement string. An empty string ("")


results in the removal of the specified search string.

rule_name_delimiter
Optional. Defines a delimiter for rule names. Use this argument to separate the rule
name from the violation comment. The violation comment is truncated at the first
instance of this delimiter for reporting in the icv_sdrc.conclude file.
Note:
This delimiter is used only to determine the rule name for the NDM icv_sdrc.conclude
file and used for the IC Compiler II error browser in In-Design runs.
If the delimiter is not matched, the entire violation comment is reported in the
icv_sdrc.conclude file. The violation comment might be truncated for length; the
maximum length of a violation comment is 1024 characters.
❍ search_string. Specifies the delimiter. The search string must be a GNU extended
regular expression. The default is
"[[:space:]]+:|[[:space:]]*:[[:space:]]"
That is, the default is one of the following:
■ One or more white space characters followed by a colon.
■ Zero or more white space characters followed by a colon followed by one white
space character.
❍ ignore_case. Specifies if the character case in the violation comment is considered
when matching the delimiter. The default is false.
■ true. The search is case-sensitive.

■ false. The search is not case-sensitive.

drc_black_box_cells
Optional. Specifies the black-box cells for DRC. For these cells, the tool first tries to read
the frame view. If the frame view cannot be found, the tool looks for a design view. If still
no views can be found for the cell, the tool continues with an empty cell. The tool reads
all objects from the frame view. String matching using metacharacters is allowed. See
“String Matching” on page A-11 for more information.
Note:
If DRC black-box cells are listed, the lvs_black_box_cells argument cannot be
used. If neither DRC nor LVS black-box cells are specified, polygons from design
view and pins from frame view are read. If the ndm_merge_library_options()
function is used in the same IC Validator session, it has precedence over any of its
replacement cells that might also exist in the DRC black-box cell list.

Chapter 3: Runset Functions: J - Z


ndm_options() 3-162
IC Validator Reference Manual Version N-2017.12-SP2

For the top cell, all data from the design view is read. If the design view does not exist
for the top cell, an error is reported and the run stops.

lvs_black_box_cells
Optional. Lists the black-box cells for LVS. If the frame view cannot be found, the tool
looks for a design view. If still no views can be found for the cell, the tool continues with
an empty cell. The tool reads only pins from the frame view. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
Note:
If LVS black-box cells are listed, the drc_black_box_cells argument cannot be
used. If neither DRC nor LVS black-box cells are specified, pins from frame view are
read. If the ndm_merge_library_options() function is used in the same
IC Validator session, it has precedence over any of its replacement cells that might
also exist in the LVS black-box cell list.

alternate_view
Optional. Specifies behavior if the design view is missing. The default is FRAME_VIEW.
❍ NONE. Applies the behavior specified by the missing_cell argument.

❍ FRAME_VIEW. Reads the entire frame view of a cell if the design view is missing. If
both the design and frame views are missing, the behavior specified by the
missing_cell argument applies.
Note:
The design view is always required for the top cell of the design.
❍ DESIGN_VIEW.

missing_cell
Optional. Specifies behavior if a cell is missing a required view, as defined by the
drc_black_box_cells and lvs_black_box_cells arguments. The default is IGNORE.

❍ IGNORE. Continues the IC Validator run. A warning is reported and missing NDM cells
are empty.
❍ ABORT. Writes an error message and the run stops. If a cell is in either the DRC or LVS
black-box cells list, the frame view is required for that cell. If the cell is not in a
black-box cells list, the design view is required.

design_types
Optional. Specifies the design types that determine which cells are read from the NDM
library. It does not apply to the top cell. Using the ndm argument of the assign() and
assign_edge() functions, you can specify the design types for certain layers. You can
use the exclude_ndm_design_types() function to obtain a list of all possible design

Chapter 3: Runset Functions: J - Z


ndm_options() 3-163
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

types except those specified by the exclude argument. By default, the IC Validator tool
reads all design types. Table 2-9 in the assign() function lists the design types.

exclude_design_types
Optional. Specifies the design types that determine which cells are not read from the
NDM library. It does not apply to the top cell. If a design type is listed in the
design_types and exclude_design_types arguments, it is excluded. By default, the
IC Validator tool does not exclude any design types. Table 2-9 in the assign() function
lists the design types.
Note:
If a cell type is excluded, no data is read from the cell and no subtrees under the cell
are placed.

internal_designs
Optional. Specifies the data that is read from internal designs. It is only used for fill. The
default is
{{use = FILL_USE, out_of_date = ABORT, read_from = ALL}}
Note:
The fill internal design is read by default. To disable the reading of all internal design
settings including fill, set internal_designs = {}.
❍ use. Optional. Specifies the class of internal designs are read.
Using the ndm argument of the assign() and assign_edge() functions, you can
specify the internal design settings for certain layers.
■ FILL_USE. Specifies reading internal designs that are for fill. These internal
designs have the extension .FILL.
■ FILL_BLOCKAGE_USE. Specifies reading internal designs that are for fill blockage
or guidance. These internal designs have the extension .FILLBLKG.
❍ out_of_date. Optional. Specifies the action taken by the tool if the timestamp of the
internal design is earlier than that of the parent design it is being read from. The
timestamp is only checked on the first level internal design underneath a given parent
design view. The default is ABORT.
■ ABORT. Stop the run if the internal design timestamp is earlier than the design view.

■ USE. Reads the internal design regardless of timestamp.

■ DISCARD. Discards the internal design if the internal design timestamp is earlier
than the design view. A warning is reported.
❍ read_from. Optional. Specifies the design view cells that the tool reads internal
designs from. The default is TOP.

Chapter 3: Runset Functions: J - Z


ndm_options() 3-164
IC Validator Reference Manual Version N-2017.12-SP2

■ TOP. Looks for the internal design only in top cells.

■ ALL. Looks for the internal design in each design view.

search_path
Optional. Specifies the paths to search for reference libraries. The paths are searched in
the order listed. This option is equivalent to the search_path variable within the
IC Compiler II tool.

design_label
Optional. Specifies the design label of the top cell. The default is no design label. This
option might be overridden by the -ndm_design_label command-line option.

cut_table_datatype_mapping
Optional. Specifies how the IC Validator tool uses cutDataTypeTbl table definitions in the
NDM library. The default is ALWAYS.
❍ ALWAYS. Always uses the cut datatype table, if available in the NDM library, and sets
datatypes for cut layer shapes as defined in the table.
❍ NEVER. Always uses the datatype of the shape stored in the NDM library and does not
change the datatype based on cut datatype table information.
❍ DATATYPE_ZERO_ONLY. Sets datatypes for cut layer shapes as defined in the cut
datatype table only if the datatype of the NDM shape is zero. If the datatype of an
NDM shape is non-zero, the datatype is preserved.

merge_blockage_with_layer
Optional. Specifies that a routing blockage, which occurs when the isZeroSpacing
attribute is false, merges with the associated routing layer and is treated as a routing
metal. The blockage considered for merging can further be filtered by views and cells.
❍ views. Includes the list of NDM views to consider for merging blockages. See
Table 2-5 in the assign() function section for a list of views. By default, the
IC Validator tool reads all views.
❍ cells. Includes the list of NDM cells to consider for merging blockages. String
matching using metacharacters is allowed. For more information, see “String
Matching” on page A-11. By default, all cells are included when views are specified.

mask_shifted_cell_name_suffix
Optional. Specifies how the cell name suffix is generated for new cells created from mask
shifting on instance placements.

Chapter 3: Runset Functions: J - Z


ndm_options() 3-165
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ name. Specifies the name to use for the suffix. The default is SHIFT.

❍ extension. Specifies whether to add an additional extension based on layer and shift
values to make the final cell name unique. The default is LAYER_NUM_SHIFT.
■ NONE. Specifies that no additional extension is used.

■ LAYER_NUM_SHIFT. Specifies that an additional extension is added based on layer


number and shift amount.
Table 3-20 shows the default:
mask_shifted_cell_name_suffix={"SHIFT", LAYER_NUM_SHIFT}

Table 3-20 mask_shifted_cell_name_suffix Default

Original cell name Shifted layers Shifted amount Final cell name

A 15 15 by 1 A_SHIFT_15_1

B 17 17 by 1 B_SHIFT_17_1

C 15, 17 Both 15 and 17 by 1 C_SHIFT_15_1_17_1

mask_shifted_cell_name_suffix={"MYSHIFT", NONE}

Table 3-21 shows the shifted cell name changes:


Table 3-21 mask_shifted_cell_name_suffix Shifted Cell Names

Original cell name Shifted layers Shifted amount Final cell name

A 15 15 by 1 A_MYSHIFT

B 17 17 by 1 B_MYSHIFT

C 15, 17 Both 15 and 17 by 1 C_MYSHIFT

instance_names
Optional. Specifies whether instance names from the input layout should be retained by
the IC Validator tool. The instance names can be used for netlisting or possibly reused
for the output layout. Retaining instance names could result in extra processing time
during the reading of the input layout. The default is KEEP.
❍ KEEP. Retains instance names from the input layout.

❍ DISCARD. Does not retain instance names from the input layout.

Chapter 3: Runset Functions: J - Z


ndm_options() 3-166
IC Validator Reference Manual Version N-2017.12-SP2

layout_view_cells
Optional. Specifies the layout view that is used for the cell name. For these cells, the tool
reads the layout view first. If a layout view cannot be found, the tool looks for a design
view. If still no views can be found for the cell, the tool looks for a frame view. The tool
reads all objects from the frame view. String matching using metacharacters is allowed.
See “String Matching” on page A-11 for more information. The default is an empty string
("").
Note:
The layout view cells are always specified prior to DRC or LVS black-box cells, but
not to their GDSII or OASIS replacement cells.

merge_blockage_with_layer_before_layer_map
Optional. Specifies whether the merge_blockage_with_layer argument takes
precedence over layer mapping. The default is false.
❍ true. Specifies that the merge_blockage_with_layer argument takes precedence
over layer mapping.
❍ false. Specifies that layer mapping takes precedence over the
merge_blockage_with_layer argument.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
ndm_library()
ndm_merge_library_options()
write_ndm()

Chapter 3: Runset Functions: J - Z


ndm_options() 3-167
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

negate()
The negate() function creates the inverse of the input layer. The boundaries of the inverse
can be either the layer or chip extents, and can be adjusted with an explicit border. A
boundary with a negative area results in an empty output layer.

Syntax
negate(
layer1 = polygon_layer,
extents = LAYER | CHIP, //optional
border = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

extents
Optional. Specifies the extent used. The default is LAYER.
❍ LAYER. Uses the extents of the input layer.

❍ CHIP. Uses the extents of the entire chip, as defined by the layers specified in assign
functions.

border
Optional. Specifies the value for sizing the extents box. A negative value shrinks the
extents; a positive value expands the extents. The default is 0.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


negate() 3-168
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Consider the input data shown in Figure 3-24. Both layerA and layerB are specified in the
assign() function.

Figure 3-24 negate() Function Example Input


layerA layerB

Figure 3-25 shows the results of four examples.


In Example 1, the result is the inverse of layerA bounded by the extents of layerA.
Result = negate(layer1 = layerA);

In Example 2, the boundary extents are decreased by 4 m.


Result = negate(layer1 = layerA, border = -4);

In Example 3, the boundary extents are increased by 2 m.


Result = negate(layer1 = layerA, border = 2);

In Example 4, the boundary extents are equivalent to the chip extents. In this example, the
chip extents are defined by the extents of layerA and layerB.
Result = negate(layer1 = layerA, extents = CHIP);

Chapter 3: Runset Functions: J - Z


negate() 3-169
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-25 negate() Function Example Results


Example 1 Example 2

Example 3 Example 4

layerA layerB Result

See Also
assign()
negate_in_window()
not()

Chapter 3: Runset Functions: J - Z


negate() 3-170
IC Validator Reference Manual Version N-2017.12-SP2

negate_in_window()
The negate_in_window() function creates the inverse of the layer1 layer that is within the
specified window.

Syntax
negate_in_window(
layer1 = polygon_layer,
window = {left = double, bottom = double,
right = double, top = double},
border = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

window
Required. Specifies the window used for the negate. The window coordinates are in the
context of the top cell.

border
Optional. Specifies the value for sizing the extents box. A negative value shrinks the
extents; a positive value expands the extents. The default is 0.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 3: Runset Functions: J - Z


negate_in_window() 3-171
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In Figure 3-26 layerA is negated in the boundary formed by the specified window region.
Result = negate_in_window(layer1 = layerA, window = {0, 0, 24, 16});

Figure 3-26 negate_in_window() Function Example

(24,16)

(0,0)

window layerA Result

See Also
negate()
not()
polygons()

Chapter 3: Runset Functions: J - Z


negate_in_window() 3-172
IC Validator Reference Manual Version N-2017.12-SP2

net_color_check()
The net_color_check() function checks the specified nets to determine if the color of the
net is expected. In the runset, you must call this function after the
color_conflict_layers() function.

Syntax
net_color_check(
connect_sequence = connect_database,
color_db = color_database,
color_file = "string",
report_file = color_report_handle,
xref_db = xref_database_handle, //optional
error_net_output = ONE | ALL, //optional
report_errors = {UNMATCHED_TEXT}, //optional
ignore_missing_color = true | false, //optional
ignore_terminal_missing_color = true | false, //optional
name = "layer_label" //optional
);

Returns
void

Arguments
connect_sequence
Required. Specifies the connect database. If you are using the xref_db argument, this
database must be the same as the connect database used by device extraction and LVS
comparison; that is, the connect database used by the init_device_matrix() function.

color_db
Required. Specifies the color database generated by the color_conflict_layers()
function. The color database describes the colors of all interested layers. All layers in the
color database must be connected in the connect database.

color_file
Required. Specifies the color rules file, which is an ASCII file. This file defines the rules
that the net_color_check() function checks.

report_file
Required. Specifies the handle of the color report. This report includes all errors and a
summary of the violations for the execution of the net_color_check(). The
color_report_handle must be defined by the net_color_report_file() function before
you call the net_color_check() function.

Chapter 3: Runset Functions: J - Z


net_color_check() 3-173
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xref_db
Optional. Specifies the handle of the database from which all the cell names and net
names in the color file are interpreted as schematic names. If an xref_db is not
provided, all of the names are interpreted as layout names. The handle must be
previously defined by the compare() function.

error_net_output
Optional. Specifies the coordinates used for error reporting. The default is ONE.
The net_color_check() function checks each color rule based on the input color
database and connectivity from the connect database. The checking of each rule is
independent.
Each color rule specifies the expected colors of one net. If the target net connects to an
unexpected color, it is considered as a conflict color layer and violations are reported.
❍ ONE. Reports only one coordinate from each conflict color layer.

❍ ALL. Reports all coordinates of each conflict color layer.

report_errors
Optional. Specifies the types of additional errors to report. The default is an empty list.
❍ UNMATCHED_TEXT. Reports an error if the net is not texted with a net name that is in
the color rules file. The color rules file is specified with the color_file argument.
This option is available only when you specify a database with the xref_db
argument.

ignore_missing_color
Optional. Specifies how missing layers are treated if a device terminal. The default is
false.

❍ true. Ignores missing layers.

❍ false. Treats missing layers as an error.

ignore_terminal_missing_color
Optional. Specifies how missing layers are treated if a device terminal does not interact
with any conflict or correct colors. The default is false.
❍ true. Ignores missing layers.

❍ false. Treats missing layers as an error.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 3: Runset Functions: J - Z


net_color_check() 3-174
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
In the following example,
Result = negate_in_window(layer1 = layerA, window = {0, 0, 24, 16});

Color file format


Two types of commands:
• Cell net color check
Command Format:
cellName netName comma separated color layer names
• Device pin color check
Command Format:
-terminal cellName deviceName netName comma separated color layer names

Color file specifications:


• -terminal is a case insensitive keyword.

• Command types can be mixed in a single color file.


• A double slash "//" is used for comments.
• xref_db must be specified in the net_color_check() function for the device pin color
check.
• If xref_db is not specified, the cellName is the layout name for the cell net color check.
• If no color layers are provided, the rule is ignored.
• Color layer names are always case-sensitive and must match the definitions in the
runset.

Chapter 3: Runset Functions: J - Z


net_color_check() 3-175
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Case sensitivity of cell and net names depends on schematic(uppercase = true |


false) and run_options(uppercase = true | false).

• Each line defines an independent color rule.

Example:
// This is a comment
// Cell Net Color Check
// cellName netName colors
CELL1 net1 M1A, M2A
CELL2 I1/I2/net2 M1B, M2B
CELL3 net3 // Colors missing = rule ignored silently

// Device Pin Color Check


// -terminal cellName deviceName netName comma separated color
layer names
-terminal CELL3 Ndev net3 M1A, M2A

See Also
color_conflict_layers()
net_color_report_file()

Chapter 3: Runset Functions: J - Z


net_color_check() 3-176
IC Validator Reference Manual Version N-2017.12-SP2

net_color_report_file()
The net_color_report_file() function defines a file where the net_color_check()
function reports error data.
Note:
You must define a unique error report file for net_color_check() function.

Syntax
net_color_report_file(
file = "string"
);

Returns
color_report_handle

Arguments
file
Required. Names the error report file.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
net_color_check()

Chapter 3: Runset Functions: J - Z


net_color_report_file() 3-177
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_device_count()
The net_device_count() function selects polygons from nets in the device database that
fit the specified criteria.

Syntax
net_device_count(
device_db = device_database,
count = integer, //optional
devices = {{device_name = "string",
device_layers = {polygon_layer, ...},
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | ALL},
...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
net_type = NOT_TEXTED | TEXTED | ALL, //optional
texted_with = {"string," ...}, //optional
output_from_layers = {polygon_layer, ...}, //optional
error_coordinates = TEXT | POLYGON, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
polygon layer or error result

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

count
Optional. Specifies the number of unique devices that must be on a net for the net to be
selected. These values must be nonnegative. See “Constraints” on page A-4 for more
information. The default is 0.
❍ If count is 0, a net is selected if there are no devices connected to the net. (This net
is a floating net.)
❍ If count is 1, a net is selected if there is only one device connected to the net. (This
net is a one-connection net.)

devices
Optional. Lists the devices and layers that determine if a net is connected to a device.
The default is all devices.

Chapter 3: Runset Functions: J - Z


net_device_count() 3-178
IC Validator Reference Manual Version N-2017.12-SP2

❍ device_name. Required. Specifies the device, which must be defined in the


device_db argument.

❍ device_layers. Optional. Specifies the layers that must be defined for a particular
device. When the layer list is empty, all terminal layers are used.
❍ device_type. Optional. Specifies the device type. The default is ALL.

connected_to_any
Optional. Specifies the layers to be selected for output. At least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

net_type
Optional. Specifies the net types to be considered for selection. The default is ALL.
❍ NOT_TEXTED. Specifies that only untexted nets are considered.

❍ TEXTED. Specifies that only texted nets are considered.

❍ ALL. Specifies that both texted and untexted nets are considered.

texted_with
Optional. Specifies the text strings. To be selected for output, one of these strings must
text the net. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool considers all nets for
selection.

output_from_layers
Optional. Specifies the layers from which polygons are collected from selected nets.
These layers must be in the connect database that is in the device database.
By default, the IC Validator tool collects polygons from all layers specified in the
connected_to_any argument. If the connected_to_any argument is empty, then
polygons from all layers in the connect database are collected.

error_coordinates
Optional. Coordinates used for error reporting. The default is POLYGON.
Note:
This argument is used only for error reporting. It does not affect the derived layer.
❍ POLYGON. Reports an arbitrary coordinate on an arbitrary polygon from an arbitrary
layer in the output_from_layers argument on the selected nets.
❍ TEXT. Reports the coordinate of the text on the selected nets. If there is no text on the
net, then the error_coordinates argument setting reverts to POLYGON.

Chapter 3: Runset Functions: J - Z


net_device_count() 3-179
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
net_device_count(
device_db = device_db, // from previous extract device function
count > 0,
connected_to_any = { M1, M2 },
net_type = TEXTED,
text = {"VSS", "VDD"}
);

See Also
device_net_count()

Chapter 3: Runset Functions: J - Z


net_device_count() 3-180
IC Validator Reference Manual Version N-2017.12-SP2

net_options()
The net_options() function controls the declaration of schematic power, ground, and
global nets in the schematic netlist. Netlists can be modified to join nets in both the
schematic and layout netlists. This function must be called before assign functions.
You can choose the source of the global nets:
Note:
The global net settings in the schematic() function add global netlists into the translated
netlist. The read_netlist_global argument of the net_options() function controls if
the global netlists are used during the compare operation.
• Do not use any global nets by setting
schematic_global = { }
read_netlist_global = false

• Use only runset global nets by setting


schematic_global = { VDD, GND }
read_netlist_global = false

• Use netlist global nets only by setting


schematic_global = { }
read_netlist_global = true

• Use both the runset and netlist global nets by setting


schematic_global = { VDD, GND }
read_netlist_global = true

Syntax
net_options(
schematic_power = {"string", ...}, //optional
schematic_ground = {"string", ...}, //optional
schematic_global = {"string", ...}, //optional
schematic_join_net = {{"string", ...}, ...}, //optional
layout_join_net = {{"string", ...}, ...}, //optional
read_netlist_global = true | false, //optional
report_coordinates = {DEVICE_PIN, EQUIV_PORT} //optional
);

Returns
void

Chapter 3: Runset Functions: J - Z


net_options() 3-181
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
schematic_power
Optional. Specifies the net names used to name a power net in the schematic. These
names are used by compare during merging and filtering operations.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "

schematic_ground
Optional. Specifies the net names used to name the ground net in the schematic. These
names are used by compare during merging and filtering operations.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "

schematic_global
Optional. Specifies the schematic net names that are treated as global during netlist
comparison. These nets are also referred to as runset global nets. Typically, these nets
are power and ground nets, which are assumed to be globally connected. If no nets are
specified in an LVS runset, the compare process attempts to automatically produce them
based on global net information in the schematic netlist and typical global net names.
Global schematic nets not specified as global are treated as local nets.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "

schematic_join_net
Optional. Lists the individual schematic net names to be joined to form single nets. You
can only join top-level nets.

layout_join_net
Optional. Lists the individual layout net names to be joined to form single nets. You can
only join top-level nets.

read_netlist_global
Optional. Selects the reading and processing of global nets from the input netlist. The
default is true.

Chapter 3: Runset Functions: J - Z


net_options() 3-182
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The IC Validator tool uses global nets from the netlist independently of the
schematic_global argument of the net_options() function and the promote_text
argument of the text_options() function.
If the read_netlist_global argument is true and the runset specifies a non-empty list
for the schematic_global argument of the net_options() function or the
promote_text argument of the text_options() function, the list of global nets is the
concatenation of the runset specified values and the values read from the global nets in
the netlist.
❍ true. Reads the global nets from the schematic netlist for schematic global texts.
Also, reads layout global texts from the specified layout file if the layout_file
argument of the read_layout_netlist() function is used. This information is used
for propagating global nets inside the netlist.
❍ false. Ignores the global nets from the specified layout file if the layout_file
argument of the read_layout_netlist() function is used.

report_coordinates
Optional. Controls the reporting of equivalence cell port coordinates in the sum.cell.cell
file and the highlighting of equivalence cell ports in VUE. By default, the IC Validator tool
does not display or report any port or pin coordinates.
❍ EQUIV_PORT. Reports equivalence cell port coordinates in the sum.cell.cell file and
highlights equivalence cell ports in VUE.
❍ DEVICE_PIN. Reports device pin coordinates in the sum.cell.cell file and highlights
device pins in VUE.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
net_options(
schematic_power = {"VCC", "VDD", "AVDD"},
schematic_ground = {"GND", "AGND"},
schematic_global = {"VCC", "VDD", "AVDD", "GND", "AGND"},
schematic_join_net = {{"net1", "net2"}, {"net3", "net4"}}
);

Chapter 3: Runset Functions: J - Z


net_options() 3-183
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
text_net()

Chapter 3: Runset Functions: J - Z


net_options() 3-184
IC Validator Reference Manual Version N-2017.12-SP2

net_path_check()
The net_path_check() function selects polygons from nets on the specified path, path_to
argument, of the device database that fit the specified criteria. This function checks nets to
determine if a path exists to a power or ground net through resistor devices and the source
or drain of MOS devices. All nets are processed within the context of the top cell.

Syntax
net_path_check(
device_db = device_database,
devices = {"string", ...}, //optional
power = {"string", ...}, //optional
ground = {"string", ...}, //optional
other_nets = {"string", ...}, //optional
filter_nets = {TOP_PORT, FLOATING, POWER, GROUND,
OTHER_NETS, BREAK_PATH}, //optional
path_to = NONE | POWER | GROUND | POWER_AND_GROUND |
POWER_OR_GROUND | POWER_XOR_GROUND, //optional
unused_device = CONNECT | IGNORE, //optional
output_from_layers = {polygon_layer, ...}, //optional
break_path = {{texts = {"string", ...},
cells = {"string", ...}},...} //optional
);

Returns
polygon layer or error result

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

devices
Optional. Locates the net paths using the specified devices. The default is all devices.

power
Optional. Determines the text for the power net in the layout using the specified strings.
String matching using metacharacters is allowed. See “String Matching” on page A-11 for
more information.
If no text is specified here, by default, the IC Validator tool uses the text specified in the
layout_power argument of the text_options() function. A runset error occurs if no
text is specified in the layout_power argument of the text_options() function.

Chapter 3: Runset Functions: J - Z


net_path_check() 3-185
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
The net_path_check function searches for power text only in the top cell.

ground
Optional. Specifies the text strings for the ground net in the layout. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
If no text is specified here, the default ({}) is to use the text specified in the
layout_ground argument of the text_options() function. A runset error occurs if no
text is specified in the layout_ground argument of the text_options() function.
Note:
The net_path_check() function searches for ground text in only the top cell.

other_nets
Optional. Specifies the text strings for additional nets when the path_to argument is
NONE. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. The default is all nets.
Note:
The net_path_check() function searches for text in additional nets only in the top
cell.

filter_nets
Optional. During output, ignores the specified net types. The default is no filtering.
❍ TOP_PORT. Ignores nets that are connected to top-level ports.

❍ FLOATING. Ignores nets that are floating (not connected to any device).

❍ POWER. Ignores power nets.

❍ GROUND. Ignores ground nets.

❍ OTHER_NETS. Ignores additional nets when the path_to argument is NONE. See the
other_nets argument for more information.

❍ BREAK_PATH. Ignores the net defined in break_path argument.

path_to
Optional. Specifies the connections required for a net to be selected. The default is NONE.
❍ NONE. Specifies that the net does not connect to the specified power, ground, or other
nets.
❍ POWER. Specifies that the net connects only to power.

❍ GROUND. Specifies that the net connects only to ground.

Chapter 3: Runset Functions: J - Z


net_path_check() 3-186
IC Validator Reference Manual Version N-2017.12-SP2

❍ POWER_AND_GROUND. Specifies that the net connects to both power and ground.

❍ POWER_XOR_GROUND. Specifies that the net connects to power or ground but not both.

❍ POWER_OR_GROUND. Specifies that the net connects to power or ground, or both.

unused_device
Optional. Specifies if unused devices are used in forming paths. The default is CONNECT.
❍ CONNECT. Specifies that unused devices form connections.

❍ IGNORE. Specifies that unused devices do not form connections.


The unused devices for the net_path_check() function are:
❍ MOS devices with source or drain shorted
❍ MOS devices with ground, source, or drain floating
❍ PMOS device with gate connected to power
❍ PMOS with source or drain connected to power
❍ NMOS with gate connected to ground
❍ NMOS with source or drain connected to ground

output_from_layers
Optional. Specifies the layers from which polygons are collected from selected nets to
create the output layer or report errors. These layers must be in the connect database
that is in the device database.
By default, the IC Validator tool collects polygons from all layers in the connect database.

break_path
Optional. Lists the text on specified cells that breaks path propagation.
❍ texts. Required. Specifies the text strings that break path propagation. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for
more information.
❍ cells. Optional. Specifies the cells from which text from the texts option breaks
propagation. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information. By default, path breaking applies to all cells for
text specified in the texts option.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


net_path_check() 3-187
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
net_path_check(
device_db = device_db, // from previous extract device function
power = {"VDD", "VDDIO"},
ground = {"GND", "VSSIO"},
output_from_layers = {M1, M2},
path_to = NONE
);

net_path_check(
device_db = device_db, // from previous extract device function
power = {"VDD"},
ground = {"GND"},
other_nets = {"GRA"},
path_to = NONE
);

LAYOUT_ERRORS File Example


For example, using the path_to argument:
net_path_check {
...
path_to = POWER_OR_GROUND
...
}

Here is an example block.LAYOUT_ERRORS file:


pxl.rs:63:net_path_check:net_path_check
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Parent Struct/
Cell Struct/ Child Coords Net Path To
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
In top block
top (-7.500, 57.250) N6 POWER_AND_GROUND
In top block
top (-7.500, 57.250) N7 POWER
top (114.500, 15.500)
or2 (69.000, 15.000) OUT POWER_AND_GROUND
top (56.500, 20.000)

Chapter 3: Runset Functions: J - Z


net_path_check() 3-188
IC Validator Reference Manual Version N-2017.12-SP2

inva (34.500, 20.000) Y GROUND

In this file,
• Structure Parent Struct is the name of the parent structure where the error is located.
• Cell Struct is the name of the cell structure where the error is located.
• Cell Coords are the coordinates of the error in the cell structure (Note: The same error
(if it is repeated) has different coordinates based on where an instance is located and
what is causing the error.)
• Net is the net name.
• Path To is the state indicating whether the net has a path to None, Net1, Net2, or Net1
XOR Net2.
Note:
If an error is found in all instances of a structure, the first line reports "In All Instances Of."

break_path Argument Example


The following example uses the break_path argument.
net_path_check(
device_db = device_database,
path_to = NONE,
output_from_layers = src_drn,
break_path = {
{{"VDDA", "VSSA"}}, // Break paths at VDDA and VSSA
// anywhere in hierarchy.
{{"GND1", "GND2"}, {"CELLA"}}, // Break paths at GND1 and GND2 in
// CELLA and all descendants.
{{"GND3", "GND4"}, {"CELLB", "CELLC"}}, // Break paths at GND3 and
// GND4 in CELLB and CELLC
// and descendants.
{{"GND5", "GND6"}, {"CELLD"}} // Break paths at GND5 and
// GND6 in CELLD.
}
) ;

See Also
device_net_count()
net_device_count()

Chapter 3: Runset Functions: J - Z


net_path_check() 3-189
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_polygon_by_property()
The net_polygon_by_property() function makes a copy of a polygon layer with
properties collected from net information. A remote function is executed one time for each
polygon specified in the output_from_layer argument. The remote function specifies the
properties to be written for each polygon.
Note:
Properties on a polygon layer are only recognized by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.
For example, you can use this function for a metal spacing based on text check:
1. Call the text_to_double_property() function to convert text to properties.
2. Use the connect() function to add the output of the text_to_double_property()
function to the connect database.
3. Use a remote function called in the net_polygon_by_property() function to
accumulate net properties for each polygon.
4. Perform spacing checks using the IC Validator functions.
5. Use the drc_features() function to check the properties on the polygons associated with
each spacing violation.

Syntax
net_polygon_by_property(
connect_sequence = connect_database,
output_from_layer = polygon_layer,
net_polygon_function = function,
layer_groups = {"string" => {polygon_layer, ...}, ...},
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
connect_sequence
Required. Specifies the connect database.

Chapter 3: Runset Functions: J - Z


net_polygon_by_property() 3-190
IC Validator Reference Manual Version N-2017.12-SP2

output_from_layer
Required. Specifies the layer used for selecting polygons for the output. This layer must
be in the connect database.

net_polygon_function
Required. Specifies the remote function containing the conditions relative to net
properties and characteristics. The function calculates and saves the properties. This
function is called one time for every polygon specified in the output_from_layer
argument. See “Net Polygon by Property Utility Functions” in Chapter 4 for more
information about the utility functions you can use to define this remote function.

layer_groups
Required. Specifies a hash of string to polygon layers. The strings are used by the
remote function to access the layer-based properties on a given net. All of these layers
must be connected.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
text_to_double_property()

Chapter 3: Runset Functions: J - Z


net_polygon_by_property() 3-191
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_polygon_select()
The net_polygon_select() function selects polygons from nets in the specified connect
database that fit the specified criteria.
The function creates two distinct outputs:
• The function returns a layer that is created by selecting polygons from the input property
layer, which is specified by the in_property_layer argument, that fit the specified
constraints.
• Also, the function can create a property layer, which is specified by the
out_property_layer argument, by selecting polygons from the input property layer that
fit the specified constraints. The property layer polygons have specific properties
attached to them.

A remote function specifies arithmetic conditions relative to net parameters and polygon
properties. To be selected, a polygon must meet all specified constraints and must be saved
in the remote function.
For example, accumulation of charge on the gate layer of a CMOS design can be
represented by saving property values to gate layer polygons, adding additional
connectivity, and then reading the polygon properties and including them into new
calculations.
Errors for the selected polygons are reported to the LAYOUT_ERRORS file, and appear as
an X in VUE.

Syntax
net_polygon_select(
connect_sequence = connect_database,
in_property_layer = property_layer,
out_property_layer = out_property_layer,
net_polygon_function = function,
layer_groups = {"string" => {polygon_layer, ...},
...}, //optional
connected_to_all = {polygon_layer, ...}, //optional
not_connected_to_all = {polygon_layer, ...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
not_connected_to_any = {polygon_layer, ...}, //optional
net_type = NOT_TEXTED | TEXTED | ALL, //optional
texted_with = {"string", ...}, //optional
texted_at = TOP_OF_NET | ANY_LEVEL | HIGHEST_TEXT,
//optional
output_from_layers = {polygon_layer, ...}, //optional
group_errors = true | false, //optional
name = "layer_label", //optional
save_layer_properties = true | false //optional
);

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-192
IC Validator Reference Manual Version N-2017.12-SP2

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies the connect database.

in_property_layer
Required. Specifies the property layer where previously stored properties are passed to
the net_polygon_function argument. This layer is created by a previous
net_polygon_select() function or by the initialize_property() function.

out_property_layer
Required. Specifies the output property layer where properties are stored when the
nps_save_property() utility function is called. This layer can be the input property layer
of a subsequent call to the net_polygon_select() function.

net_polygon_function
Required. Specifies the remote function containing the arithmetic conditions for layer
parameters on a net that must be met in order for a polygon or net to be selected. It also
provides access to storing and retrieving properties. See “Net Polygon Select Utility
Functions” in Chapter 4 for more information about the utility functions you can use to
define a remote function.

layer_groups
Optional. Specifies the hash of string to polygon layers. The strings are used by the
remote function to access the layer-based parameters on a given net. The default is an
empty hash ({}).

connected_to_all
Optional. Specifies the layers. To be selected for output, all of these layers must be on
the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_all
Optional. Specifies the layers. If all layers are on the net, the net is not selected. By
default, the IC Validator tool does not exclude any layers.

connected_to_any
Optional. Specifies the layers. To be selected for output, at least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-193
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

not_connected_to_any
Optional. Specifies the layers. If any one of the layers is on the net, the net is not
selected. By default, the IC Validator tool does not exclude any layers.

net_type
Optional. Specifies the net types to be checked. The default is ALL.
❍ NOT_TEXTED. Checks only untexted nets.

❍ TEXTED. Checks only texted nets.

❍ ALL. Checks both texted and untexted nets.

texted_with
Optional. Specifies the text strings. To be selected for output, the text must match at least
one of these strings. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information. Specifying {} ignores all text. The default
({*}) is all texted nets.

texted_at
Optional. Specifies where to search for the text. The default is TOP_OF_NET.
Note:
If the net_type argument is NOT_TEXTED, the texted_with argument is ignored.
❍ TOP_OF_NET. Searches only in the top hierarchical level of each net for text. If text is
not found at the top hierarchical location, the net_select() function considers this
net as untexted.
❍ ANY_LEVEL. Searches nets at all hierarchical levels for text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
See Figure 3-27 in the net_select() function for an example of the HIGHEST_TEXT
option.

output_from_layers
Optional. Specifies the layers from which polygons are collected from selected nets to
create the output layer or report errors. These layers must be in the connect database.
If you specify an empty list ({}), the in_property_layer polygons are output.

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-194
IC Validator Reference Manual Version N-2017.12-SP2

The default is the layers specified in layer_groups argument. If it is empty, all layers in
the connect database are used.

group_errors
Optional. Specifies the type of sorting (grouping) to perform on the errors reported to the
LAYOUT_ERRORS file. The default is false.
❍ true. Sorts errors by their net ID within a given cell.

❍ false. Does not sort errors.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

save_layer_properties
Optional. Specifies if the tool saves the properties on the property layer. The default is
false.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
This following example illustrates the use of two calls to the net_polygon_select()
function to measure accumulation of charge on a CMOS gate layer. The first call computes
the previous_damage property for connectivity up to m1. The second call reads the
previous_damage property and updates it after the connect database is modified to include
m2.
cdb = connect ({
{{psd, nsd, poly, m1}, cont},
{{gate}, poly}

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-195
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

});

property_rule1 : function (void) returning void


{
metal_area_sum = nps_net_area("metal");
metal_perim_sum = nps_net_perimeter("metal") * 0.24;
polygon_area = nps_polygon_area();
damage = metal_area_sum / polygon_area + metal_perim_sum;
if (damage > 25){
nps_save_polygon({"damage"}, {damage});
}
nps_save_property ("previous_damage", damage);
}

p1 = initialize_property (gate, {"previous_damage"});

net_polygon_select (
connect_sequence = cdb,
in_property_layer = p1,
out_property_layer = p2,
net_polygon_function = property_rule1,
layer_groups = {"metal"=> {m1}}
);

cdb = incremental_connect (cdb,


{{{m1, m2}, via1}}
);

property_rule2 : function (void) returning void


{
metal_area_sum = nps_net_area("metal");
metal_perim_sum = nps_net_perimeter("metal") * 0.24;
polygon_area = nps_polygon_area();
old_damage = nps_read_property("previous_damage");
damage = metal_area_sum / polygon_area + metal_perim_sum + old_damage;
if (damage > 25) {
nps_save_polygon({"damage"}, {damage});
}
nps_save_property ("previous_damage", damage);
}

net_polygon_select (
connect_sequence = cdb,
in_property_layer = p2,
out_property_layer = p3,
net_polygon_function = property_rule2,
layer_groups = {"metal"=> {m2}}
);

See Also
net_polygon_by_property()
net_property_select()

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-196
IC Validator Reference Manual Version N-2017.12-SP2

net_select()

Chapter 3: Runset Functions: J - Z


net_polygon_select() 3-197
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_property_select()
The net_property_select() function selects polygons from nets in the connect database
that meet the criteria specified in the function arguments and remote function.
A remote function is used to read and write net properties as well as specify arithmetic
conditions relative to net parameters. To be selected, a net must fit all specified constraints
and must be saved in the remote function.
For example, you can use the net_property_select() function to detect antenna
violations. The ratio of area or perimeter of one layer to another layer is calculated and
summed using the net-based properties for several increments of connect databases. The
remote function can be coded to output errors when the cumulative antenna ratio exceeds
a certain threshold.
Errors are reported to the LAYOUT_ERRORS file, and appear as an X in VUE.

Syntax
net_property_select(
connect_sequence = connect_database,
in_property = net_property,
out_property = out_net_property,
net_property_function = function,
layer_groups = {"string" => {polygon_layer, ...},
...}, //optional
connected_to_all = {polygon_layer, ...}, //optional
not_connected_to_all = {polygon_layer, ...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
not_connected_to_any = {polygon_layer, ...}, //optional
net_type = NOT_TEXTED | TEXTED | ALL, //optional
texted_with = {"string", ...}, //optional
texted_at = TOP_OF_NET | ANY_LEVEL | HIGHEST_TEXT,
//optional
output_from_layers = {polygon_layer, ...}, //optional
group_errors = true | false, //optional
error_net_output = ONE | ALL | TEXT, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies a connect database.

Chapter 3: Runset Functions: J - Z


net_property_select() 3-198
IC Validator Reference Manual Version N-2017.12-SP2

in_property
Required. Specifies the net-based property layer. Use the
initialize_net_property() function to initialize the property.

out_property
Required. Specifies the updated net-based property layer.

net_property_function
Required. Specifies the remote function containing the conditions relative to net
properties and net layers that must be met for a net to be selected. This function is called
one time for every net that meets the constraints specified by the
net_property_select() function. See “Net Property Select Utility Functions” in
Chapter 4 for more information about the utility functions you can use to define this
remote function.

layer_groups
Optional. Specifies the hash of string to polygon layers. The strings are used by the
remote function to access the layer-based properties on a given net. The default is an
empty hash.

connected_to_all
Optional. Specifies the layers. To be selected for output, all of these layers must be on
the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_all
Optional. Specifies the layers. If all layers are on the net, the net is not selected. By
default, the IC Validator tool does not exclude any layers.

connected_to_any
Optional. Specifies the layers. To be selected for output, at least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_any
Optional. Specifies the layers. If any one of the layers is on the net, the net is not
selected. By default, the IC Validator tool does not exclude any layers.

net_type
Optional. Specifies the net types to be checked. The default is ALL.
❍ NOT_TEXTED. Checks only untexted nets.

❍ TEXTED. Checks only texted nets.

Chapter 3: Runset Functions: J - Z


net_property_select() 3-199
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ALL. Checks both texted and untexted nets.

texted_with
Optional. Specifies the strings. To be selected for output, the text must match at least one
of these strings. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information. Specifying {} ignores all text. By default, the
IC Validator tool selects all text nets.
Note:
To select only texted nets, the net_type argument must be set to TEXTED.
If the net_type argument is left at the default setting of ALL, the
net_property_select() function returns both texted and untexted nets. For
example, if you set texted_with={"VCC"} but do not specify the net_type
argument, then the net_property_select() function returns all nets texted with
VCC and all untexted nets.
If the net_type argument is NOT_TEXTED, the texted_with argument is ignored.

texted_at
Optional. Specifies where to search for the text. The default is TOP_OF_NET.
❍ TOP_OF_NET. Searches only in the top hierarchical level of each net for text. If text is
not found at the top hierarchical location, the net_select() function considers this
net as untexted.
❍ ANY_LEVEL. Searches nets at all hierarchical levels for text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
See Figure 3-27 in the net_select() function for an example of the HIGHEST_TEXT
option.

output_from_layers
Optional. Specifies the layers from which polygons are collected from selected nets to
create the output layer or report errors. These layers must be in the connect database.
The default is the layers specified in layer_groups argument. If it is empty, all layers in
the connect database are used.

Chapter 3: Runset Functions: J - Z


net_property_select() 3-200
IC Validator Reference Manual Version N-2017.12-SP2

group_errors
Optional. Specifies the type of sorting (grouping) to perform on the errors reported to the
LAYOUT_ERRORS file. The default is false.
❍ true. Sorts errors by their net ID within a given cell.

❍ false. Does not sort errors.

error_net_output
Optional. Specifies the coordinates used for error reporting. The default is ONE.
Note:
This argument is used only for error reporting and does not affect the derived layer.
❍ ONE. Reports an arbitrary coordinate on an arbitrary polygon from an arbitrary layer
listed in the output_from_layers argument on the selected nets.
❍ ALL. Reports an arbitrary coordinate on every polygon from each layer listed in the
output_from_layers argument on the selected nets.

❍ TEXT. Reports a coordinate of the text on the selected nets.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
THRESHOLD1 = 130;
my_function : function (void) returning void {
metal_area = nprops_net_area("2");
gate_area = nprops_net_area("1");

Chapter 3: Runset Functions: J - Z


net_property_select() 3-201
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

gate_count = nprops_net_data_count( "1");

if ( gate_area <= 0.0 ) {


/* nothing, return */
} else {
damage = nprops_read_property("accu_damage") ;
ratio = metal_area / gate_area;

damage = ratio + damage;

if ( damage >= THRESHOLD1 ){


nprops_save_net(
error_names = {"cumu_damage", "ratio", "marea", "garea", "gate_count"},
values = {damage, ratio, metal_area, gate_area, gate_count}
);
}
nprops_save_property("accu_damage", damage);
}
}

cdb1 = connect({{{ tg_gate, gate, norm_gate}, by_layer = PC}, {{ PC, src_drn},


by_layer = CA}});
cdb2 = incremental_connect(cdb1, {{{ M1}, by_layer = CA}, {{ M1}, by_layer = V1},
{{ mylayer}, by_layer = M1}})

p1 = initialize_net_property({{ "accu_damage", MAX }});


net_property_select(
connect_sequence = cdb2,
net_property_function = my_function,
in_property = p1,
out_property = p2,
layer_groups = { "1" => {gate}, "2" => {M1}},
output_from_layers = {M1},
connected_to_all = {gate}
);

cdb3 = incremental_connect( cdb2, {{{ M2 }, V1 }} );

net_property_select(
connect_sequence = cdb3,
net_property_function = my_function,
in_property = p2,
out_property = p3,
layer_groups = {"1" => {gate}, "2" => {M2}},
output_from_layers = { gate },
connected_to_all= {gate}
);

See Also
initialize_net_property()
net_polygon_select()
net_select()

Chapter 3: Runset Functions: J - Z


net_property_select() 3-202
IC Validator Reference Manual Version N-2017.12-SP2

net_select()
The net_select() function selects polygons from nets in the specified connect database
that fit the specified criteria.
A remote function can be used to specify arithmetic conditions relative to net parameters. To
be selected, a net must fit all specified constraints and must be saved in the remote function.
For example, the net_select() function is used to select layers from all nets that are texted
with VDD and are connected to an n-well polygon. Also, this function is used to detect
antenna violations. These types of net errors result from the ratio of area or perimeter of one
layer on the net compared to another layer or layers on the net not meeting the specification.
Errors are reported to the LAYOUT_ERRORS file, and appear as an X in VUE.

Syntax
net_select(
connect_sequence = connect_database,
net_function = function, //optional
layer_groups = {"string" => {polygon_layer, ...},
...}, //optional
connected_to_all = {polygon_layer, ...}, //optional
not_connected_to_all = {polygon_layer, ...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
not_connected_to_any = {polygon_layer, ...}, //optional
net_type = NOT_TEXTED | TEXTED | ALL, //optional
texted_with = {"string", ...}, //optional
texted_at = TOP_OF_NET | ANY_LEVEL | HIGHEST_TEXT,
//optional
output_from_layers = {polygon_layer, ...}, //optional
group_errors = true | false, //optional
error_net_output = ONE | ALL | TEXT, //optional
coupled_layers = {{"string1" => polygon_layer1,
"string2" => polygon_layer2},
...}, //optional
output_from_coupled_layers = {polygon_layer, ...}, //optional
name = "layer_label", //optional
schematic_nets = {"string", ...}, //optional
schematic_nets_file = "string", //optional
texted_with_file = "string", //optional
xref_db = xref_database_handle //optional
);

Returns
polygon layer or error result

Chapter 3: Runset Functions: J - Z


net_select() 3-203
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
connect_sequence
Required. Specifies the connect database. If you are using the xref_db argument, this
database must be the same as the connect database used by device extraction and LVS
comparison; that is, the connect database used by the init_device_matrix() function.

net_function
Optional. Specifies the remote function containing the conditions relative to the
parameters of layers on a net that must be met for a net to be selected. This function is
called one time for every net that meets the constraints specified by the net_select
argument. The default saves each net. See “Net Select Utility Functions” in Chapter 4 for
more information about the utility functions you can use to define a remote function.

layer_groups
Optional. Specifies the hash of string to polygon layers. The strings are used by the
remote function to access the layer-based parameters on a given net. The default is an
empty hash.

connected_to_all
Optional. Specifies the layers. To be selected for output, all of these layers must be on
the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_all
Optional. Specifies the layers. If all layers are on the net, the net is not selected. By
default, the IC Validator tool does not exclude any layers.

connected_to_any
Optional. Specifies the layers. To be selected for output, at least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_any
Optional. Specifies the layers. If any one of the layers is on the net, the net is not
selected. By default, the IC Validator tool does not exclude any layers.

net_type
Optional. Specifies the net types to be checked. The default is ALL.
❍ NOT_TEXTED. Checks only untexted nets.

❍ TEXTED. Checks only texted nets.

❍ ALL. Checks both texted and untexted nets.

Chapter 3: Runset Functions: J - Z


net_select() 3-204
IC Validator Reference Manual Version N-2017.12-SP2

texted_with
Optional. Specifies the text strings. To be selected for output, the text must match at least
one of these strings. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information. Specifying {} ignores all text. By default,
the IC Validator tool selects all text nets.
Note:
To select only texted nets, the net_type argument must be set to TEXTED.
If the net_type argument is left at the default setting of ALL, the net_select()
function returns both texted and untexted nets. For example, if you set
texted_with={"VCC"} but do not specify the net_type argument, then the
net_select() function returns all nets texted with VCC and all untexted nets.

texted_at
Optional. Specifies where to search for the text. The default is TOP_OF_NET.
Note:
If the net_type argument is NOT_TEXTED, the texted_with argument is ignored.
❍ TOP_OF_NET. Searches only in the top hierarchical level of each net for text. If text is
not found at the top hierarchical location, the net_select() function considers this
net as untexted.
❍ ANY_LEVEL. Searches nets at all hierarchical levels for text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
In Figure 3-27, text B and A are selected as HIGHEST_TEXT. Text A from inst1 and
inst2 is selected because no higher text is found. Text B is also selected because
there is no higher text in the TOPCELL.

Chapter 3: Runset Functions: J - Z


net_select() 3-205
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-27 Example of HIGHEST_TEXT Option

output_from_layers
Optional. Specifies the layers from which polygons are collected from selected nets to
create the output layer or report errors. These layers must be in the connect database.
The default is the layers specified in the layer_groups argument. If no layers are
specified, all layers in the connect database are used.

group_errors
Optional. Specifies the type of sorting (grouping) to perform on the errors reported to the
LAYOUT_ERRORS file. The default is false.
❍ true. Sorts errors by their net ID within a given cell.

❍ false. Does not sort errors.

error_net_output
Optional. Specifies the coordinates used for error reporting. The default is ONE.
Note:
This argument is used only for error reporting and does not affect the derived layer.
❍ ONE. Reports an arbitrary coordinate on an arbitrary polygon from an arbitrary layer
listed in the output_from_layers argument on the selected nets.
❍ ALL. Reports an arbitrary coordinate on every polygon from each layer listed in the
output_from_layers argument on the selected nets.

❍ TEXT. Reports a coordinate of the text on the selected nets.

coupled_layers
Optional. Lists the hash of string to polygon layer. Each hash element contains two
paired layers that establish a coupling relationship between different nets. The layer

Chapter 3: Runset Functions: J - Z


net_select() 3-206
IC Validator Reference Manual Version N-2017.12-SP2

name strings are used by the remote net_function function to access layer-based
parameters on a given net. The default is an empty hash.

output_from_coupled_layers
Optional. Specifies the layers from which polygons are collected from selected coupled
nets to create the output layer or to report errors. These layers must be listed in the
coupled_layers argument. The default is the layers specified in the coupled_layers
argument.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

schematic_nets
Optional. Specifies hierarchical schematic net names to select target layout nets based
on LVS comparison results. That is, nets that matched during LVS are supported; any
nets that did not match during LVS are not supported. Note that ports of LVS exploded
cells are not supported. For example, "X1/N1" selects the layout net that LVS found
which matches the N1 schematic net under the X1 schematic cell instance.
Note:
Use the schematic_nets_file argument instead of the schematic_nets argument
if you need to specify more than 20,000 schematic net names. For performance
reasons, IC Validator rejects the runset if schematic_nets contains more than
20,000 entries.
This argument works in conjunction with other arguments of the net_select() function,
such as connected_to_all, not_connected_to_all, texted_with, and net_type. To
select only specified schematic nets, set those arguments so that they do not select data.
For example, only select the layout net corresponding to the schematic net name "X1/
N1",
net_select(
connect_sequence = cdb1,
net_type = TEXTED
texted_with = {},
schematic_nets = {"X1/N1" ...},
xref_db = xref_database_handle
);

Note:
If a schematic net cannot be cross-referenced successfully, a violation is reported to
the LAYOUT_ERRORS file.

Chapter 3: Runset Functions: J - Z


net_select() 3-207
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

schematic_nets_file
Optional. Specifies a file that contains the schematic nets to be checked. The nets in this
file are equivalent to the nets selected by the schematic_nets argument.
The schematic_net_file argument can be used with the schematic_nets argument.
If a net is declared in both the schematic_net_file and schematic_nets arguments,
the net is considered only one time.
The file format is the same for both the schematic_net_file and texted_with_file
arguments. The format is:
❍ There is one net or text string per line.
❍ Each mapping relation must appear on a new line.
The following is an example of a net name file:
1 /I1/I2/N3
2 /I1/I2/N4
3 /I1/I2/I5/N6
4 /I1/I2/I5/N7

Note:
If a schematic net cannot be cross-referenced successfully, a violation is reported to
the LAYOUT_ERRORS file.

texted_with_file
Optional. Specifies a file that contains the text strings to be considered by the
net_select() function. The text strings in this file are equivalent to the text strings
specified by the texted_with argument.
The texted_with_file argument can be used with the texted_with argument. If a text
string is declared in both the texted_with_file and texted_with arguments, the text
is considered only one time. If the texted_with argument is used with the default value,
that is, all text strings are considered, then text strings specified by the
texted_with_file argument are ignored. See Table 3-22.
See the schematic_nets_file argument for the file format.
Table 3-22 texted_with_file Argument Used With texted_with Argument

texted_with texted_with_file Text selected

Not specified Not specified All text

Chapter 3: Runset Functions: J - Z


net_select() 3-208
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-22 texted_with_file Argument Used With texted_with Argument (Continued)

texted_with texted_with_file Text selected

Specified Not specified Text strings specified by texted_with statement

Not specified Specified All text

Specified Specified All unique text strings from both texted_with and
texted_with_file statements

Note:
To enable only text strings from the texted_with_file argument, set the
texted_with argument to an empty string ("").

xref_db
Optional. Specifies the handle of the database from which the layout hierarchical net
corresponding to the names specified in the schematic_nets argument is selected. The
handle must be previously defined by the compare() function. See “Example Using the
xref_db Argument” on page 3-210 for more information.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example

Example 1
do_per_net : published function( void ) returning void
{
Met_area : double = ns_net_area("metal");
Gate_area : double = ns_net_area("gate");
ratio : double = Met_area / Gate_area;
if (ratio > 500)
{

Chapter 3: Runset Functions: J - Z


net_select() 3-209
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ns_save_net({"ratio", "metal area", "gate_area"},


{ratio , Met_area, Gate_area});
}
}

net_select (connect_sequence = condb,


layer_groups = {"metal" => {met1, met2}, "gate" => {gate}},
net_function = do_per_net,
output_from_layers = {gate}
);

Example Using the xref_db Argument


The net_select() function selects schematic hierarchical nets. Therefore, in this example,
the connect sequence database is cdb1, not cdb2, because cdb1 is the connect sequence
database used by the init_device_matrix() function.
cdb1 = connect(...);
cdb2 = incremental_connect(cdb1, ...);
matrix = init_device_matrix(cdb1);
...
xref = compare(...);
net_select(
connect_sequence = cdb1,
...
schematic_nets = {},
xref_db = xref
);

See Also
net_polygon_select()
net_property_select()
net_select_error()
net_select_inside_of_layer()

net_select_error()
The net_select_error() function selects error layer polygons that fit the specified criteria.
A remote function determines which error layer polygons are selected based on coupling
information in the specified connect database and other criteria defined by the
net_function argument.

You can use a remote function to access and process layer-based net parameters. To select
information for output, you must specify an error layer in the
output_from_coupled_layers argument and use the ns_save_coupled_layer() utility
function in the net_select_error() remote function. The output can be written as an error
result to the LAYOUT_ERRORS file or to a runset error layer that can be processed by
another error-layer-processing function, such as the drc_features() function.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-210
IC Validator Reference Manual Version N-2017.12-SP2

The net_select_error() function can use any of the net select functions with the following
exceptions:
• You cannot use the ns_save_net() and ns_save_all_nets() functions.
• You cannot use the ns_coupled_layer_area() function to return the area information
of an error layer defined in the coupled_layer argument.

Syntax
net_select_error(
connect_sequence = connect_database,
net_function = function,
coupled_layers = {{layers = {"string" => geometry_layer},
by_layer = geometry_layer}, ...},
output_from_coupled_layers = {error_layer},
layer_groups = {"string" => {polygon_layer, ...},
...}, //optional
connected_to_all = {polygon_layer, ...}, //optional
not_connected_to_all = {polygon_layer, ...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
not_connected_to_any = {polygon_layer, ...}, //optional
net_type = NOT_TEXTED | TEXTED | ALL, //optional
texted_with = {"string", ...}, //optional
texted_at = TOP_OF_NET | ANY_LEVEL | HIGHEST_TEXT,
//optional
name = "string", //optional
schematic_nets = {"string", ...}, //optional
schematic_nets_file = "string", //optional
texted_with_file = "string", //optional
xref_db = xref_database_handle, //optional
report_net_names = true | false, //optional
report_string_properties = {{error_name = "string",
property_name = "string",
append_to_vue_description =
true | false}} //optional
);

Returns
error layer or error result

Arguments
connect_sequence
Required. Specifies the connect database. If you are using the xref_db argument, this
database must be the same as the connect database used by device extraction and LVS
comparison; that is, the connect database used by the init_device_matrix() function.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-211
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_function
Required. Specifies the remote function containing the conditions, relative to the
parameters of layers on a net, that must be met for a net to be selected. This function is
called one time for each net that meets the constraints specified by the following
arguments: connected_to_all, not_connected_to_all, connected_to_any,
not_connected_to_any, net_type, texted_with, texted_with_file,
schematic_nets, schematic_nets_file, and output_from_coupled_layers.
By default, the remote function is called one time for each net touching the error layer
specified in the output_from_coupled_layers argument.
See “Net Select Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define a remote function. However, do not use the
ns_save_net() utility function because the net_select_error() function does not
have an output_from_layer argument.

coupled_layers
Required. Specifies a list of hash of string to polygon and error layers, which is used to
define the coupling relationships between different nets for certain types of checks.
Each hash in this argument contains two options, a required layers option and an
optional by_layer option. The layers option should contain all of the layers needed to
define the coupling relationship between two nets. Use the by_layer option to specify
an unconnected polygon layer or error layer that defines the coupling relationship
between the connected layers listed in the layers option.
The coupled_layers argument supports two different usage models. When a by layer
is not specified, the layers option must contain two connected layers. These connected
layers are considered to be coupled at locations where they interact. When a by layer is
specified, the layers option must contain one or two connected layers and the by layer.
The connected layers are considered to be coupled at locations where they touch the by
layer. With this usage, the unconnected by layer establishes the coupling relationship
between the connected layers.
❍ layers.
Lists the hash of string to polygon layer. Each hash element can contain two or three
layers that establish a coupling relationship between different nets.
The remote function specified in the net_function argument uses the layer name
strings to access layer-based parameters on a net. If you use the by_layer option,
you must specify the by layer in the layers option.
Figure 3-28 demonstrates the creation of a coupling relationship between the
all_mos_gates layer and the all_moss_diff layers. The coupling relationship is
established through the all_mos_gates layer because it touches both of the
all_mos_diff layers.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-212
IC Validator Reference Manual Version N-2017.12-SP2

coupled_layers = {layers = {"GATE" => all_mos_gates,


"SD" => all_mos_diff}, ...},

In this example, the all_mos_gates and all_moss_diff layers must all be in the
connected database because they are listed as layers in the layers option. No by
layer is needed because the layers all touch each other.
Figure 3-28 Touching Layer Example

❍ by_layer.
Specifies an optional layer that provides coupling between the connected layers
provided in the layers option. This by layer acts as a bridge between two connected
layers without forming a connection between the layers.
The by layer must be either a polygon layer or an error layer and must not be used in
the connection database specified by the connect_sequence argument. If you use
the by_layer option, you must specify the by layer in the layers option.
Note:
The error layer polygon in the by layer must contain only orthogonal shapes. Due
to a rounding issue, the error edges and metal layers cannot be exactly matched.
Figure 3-29 demonstrates the creation of a coupling relationship between the two
separate all_moss_diff layers. The coupling relationship is established through the
all_mos_gates layer because it touches both of the all_mos_diff layers. The
all_mos_gates layer is needed as a by layer because it touches both of the
all_mos_diff layers and these layers do not touch each other.
coupled_layers = {layers = {"GATE" => all_mos_gates,
"SD" => all_mos_diff},
by_layer = all_mos_gates}, ...},

In this example, the all_mos_gates layer must be in the connected database because
it is listed as a layer in the layers option. Because the all_mos_diff layer is listed as
a by layer in the by_layer option, it does not need to be connected to anything and
can be used as demonstrated in this case.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-213
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-29 By Layer Example With 2 Layers

Figure 3-30 demonstrates the creation of a coupling relationship between the M1 and
M2 layers. The coupling relationship is established through the M1_M2_err layer
because it touches both the M1 and M2 layers. The M1_M2_err layer is needed as a
by layer because it touches both the M1 and M2 layers and these layers do not touch
each other.
coupled_layers = {layers = {“M1" => M1, “M2" => M2,
“ERR” => M1_M2_err},
by_layer = M1_M2_err}, ...},

In this example, both the M1 and M2 layers must be in the connect database because
they are listed as layers in the layers option and are not by layers. Because the
M1_M2_err layer is listed as a by layer in the by_layer option, it does not need to be
connected to anything.
Figure 3-30 By Layer Example With 3 Layers

Chapter 3: Runset Functions: J - Z


net_select_error() 3-214
IC Validator Reference Manual Version N-2017.12-SP2

output_from_coupled_layers
Required. Specifies the error layer that is used for output.

layer_groups
Optional. Specifies the hash of string to polygon layers. The strings are used by the
remote function to access the layer-based parameters on a given net. The default is an
empty hash.

connected_to_all
Optional. Specifies the layers. To be selected for output, all of these layers must be on
the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_all
Optional. Specifies the layers. If all layers are on the net, the net is not selected. By
default, the IC Validator tool does not exclude any layers.

connected_to_any
Optional. Specifies the layers. To be selected for output, at least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_any
Optional. Specifies the layers. If any one of the layers is on the net, the net is not
selected. By default, the IC Validator tool does not exclude any layers.

net_type
Optional. Specifies the net types to be checked. The default is ALL.
❍ NOT_TEXTED. Checks only untexted nets.

❍ TEXTED. Checks only texted nets.

❍ ALL. Checks both texted and untexted nets.

texted_with
Optional. Specifies the text strings. To be selected for output, the text must match at least
one of these strings. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information. Specifying {} ignores all text. By default,
the IC Validator tool selects all text nets.
Note:
To select only texted nets, the net_type argument must be set to TEXTED.
If the net_type argument is left at the default setting of ALL, the net_select()
function returns both texted and untexted nets. For example, if you set

Chapter 3: Runset Functions: J - Z


net_select_error() 3-215
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

texted_with={"VCC"} but do not specify the net_type argument, then the


net_select() function returns all nets texted with VCC and all untexted nets.

texted_at
Optional. Specifies where to search for the text. The default is TOP_OF_NET.
Note:
If the net_type argument is NOT_TEXTED, the texted_with argument is ignored.
❍ TOP_OF_NET. Searches only in the highest hierarchical level of each net for text. If text
is not found at the highest hierarchical location, the net_select_error() function
considers this net as untexted.
❍ ANY_LEVEL. Searches nets at all hierarchical levels for text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
See Figure 3-27 in the net_select() function for an example of the HIGHEST_TEXT
option.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

schematic_nets
Optional. Specifies hierarchical schematic net names to select target layout nets based
on LVS comparison results. That is, nets that matched during LVS are supported; any
nets that did not match during LVS are not supported. Note that ports of LVS exploded
cells are not supported. For example, "X1/N1" selects the layout net that LVS found
which matches the N1 schematic net under the X1 schematic cell instance.
This argument works in conjunction with other arguments of the net_select_error()
function, such as connected_to_all, not_connected_to_all, texted_with, and
net_type. To select only specified schematic nets, set those arguments so that they not
select data.
See the schematic_nets argument of the net_select() function for an example.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-216
IC Validator Reference Manual Version N-2017.12-SP2

schematic_nets_file
Optional. Specifies a file that contains the schematic nets to be checked. The nets in this
file are equivalent to the nets selected by the schematic_nets argument.
The schematic_net_file argument can be used with the schematic_nets argument.
If a net is declared in both the schematic_net_file and schematic_nets arguments,
the net is considered only one time.
The file format is the same for both the schematic_net_file and texted_with_file
arguments. The format is:
❍ There is one net or text string per line.
❍ Each mapping relation must appear on a new line.
The following is an example of a net name file:
1 /I1/I2/N3
2 /I1/I2/N4
3 /I1/I2/I5/N6
4 /I1/I2/I5/N7

texted_with_file
Optional. Specifies a file that contains the text strings to be considered by the
net_select() function. The text strings in this file are equivalent to the text strings
specified by the texted_with argument.
The texted_with_file argument can be used with the texted_with argument. If a text
string is declared in both the texted_with_file and texted_with arguments, the text
is considered only one time. If the texted_with argument is used with the default value,
that is, all text strings are considered, then text strings specified by the
texted_with_file argument are ignored.
See the schematic_nets_file argument for the file format. See Table 3-23.
Table 3-23 texted_with_file Argument Used With texted_with Argument

texted_with texted_with_file Text selected

Not specified Not specified All text

Specified Not specified Text strings specified by texted_with statement

Not specified Specified All text

Specified Specified All unique text strings from both texted_with and
texted_with_file statements

Chapter 3: Runset Functions: J - Z


net_select_error() 3-217
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
To enable only text strings from the texted_with_file argument, set the
texted_with argument to an empty string ("").

xref_db
Optional. Specifies the handle of the database from which the layout hierarchical net
corresponding to the names specified in the schematic_nets argument is selected. The
handle must be previously defined by the compare() function. See “Example Using the
xref_db Argument” on page 3-210 for more information.

report_net_names
Optional. Specifies whether layout and schematic net names are added to the
LAYOUT_ERRORS file. This argument is used only for error reporting. For each error
selected from the ns_save_coupled_layer() function, the names of the nets that it
couples are included in the error report. If the xref_db argument is not specified, only
layout net names are included. The default is false.

report_string_properties
Optional. Specifies the string property name for each error and attaches a new string
value to the violation entry.
The report_string_properties argument can only be used with the error report
version argument.
❍ error_name. Specifies the error name that is written to the LAYOUT_ERRORS file.

❍ property_name. Specifies the user-defined name of the property.

❍ append_to_vue_description. Specifies the string property content to the error


description that is shown in VUE. The default is true.
■ true. Specifies the message that is appended to the Netlist Visualizer interface.

■ false. Does not specify the message that is appended to the Netlist Visualizer
interface.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.

Chapter 3: Runset Functions: J - Z


net_select_error() 3-218
IC Validator Reference Manual Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
The following example shows a runset with a net_select_error() function:
err_M1 = external1_error(M1, < 0.05, connectivity = DIFFERENT_NET,
connect_sequence = cdb, extension = RADIAL);

my_coupled_net : function(void) returning void


{
coupled_net_count = ns_coupled_net_count();

for(i = 0 to coupled_net_count - 1)
{
gate_existed = ns_coupled_layer_exist(i, "GATE");
sd_existed = ns_coupled_layer_exist(i, "SD");
err_m1_existed = ns_coupled_layer_exist(i, "err_M1");

if (gate_existed && sd_exised && err_m1_existed)


{
ns_save_coupled_layer(i);
}
}
}

err_M1_coupled1 =
net_select_error(connect_sequence = cdb,
net_function = my_coupled_net,
coupled_layers = {{{"GATE" => GATE, "SD" => SD}},
{{"M1" => M1, "err_M1" => err_M1},
by_layer = err_M1},
{{"GATE" => GATE, "SD" => SD}, by_layer = GATE}},
output_from_coupled_layers = {err_M1});

The following example shows an example of the LAYOUT_ERRORS file for the
report_string_properties argument:
top (-0.0600, -0.3900) (0.2550, 0.0000)
Distance = 0.315
Vmax1 = 0
Vmin1 = 0
Vmax2 = 5
Vmin2 = 2
waiver info = RELAXED RULE: RULE WAS CHECKED USING RELAXED MIN
SPACINGVALUE OF 0.4

The following example shows the drc_remote_function:


drc_remote_function : function (void) returning void {
waiver_string = "RELAXED RULE: RULE WAS CHECKED USING
RELAXED MIN SPACING VALUE OF 0.4";

Chapter 3: Runset Functions: J - Z


net_select_error() 3-219
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ce = df_get_current_data();
df_save_string_property(ce, "waiverMsg", waiver_string);
df_save_data(ce);
}

The following example shows the net_select_error() function:


net_select_error(net_select_error(connect_sequence = cdb_xref,
coupled_layers = {{{"MET" => checkLayer,
"err" => Err},
by_layer = Err}}
output_from_coupled_layers = {Err},
xref_db = xref,
report_net_names = true,
netlist_db = ndb,
report_string_properties = {error_name =
"waiver info",
property_name =
"waiverMsg",
append_to_vue_description = true};

See Also
net_polygon_select()
net_property_select()
net_select()
net_select_inside_of_layer()

Chapter 3: Runset Functions: J - Z


net_select_error() 3-220
IC Validator Reference Manual Version N-2017.12-SP2

net_select_inside_of_layer()
The net_select_inside_of_layer() function selects net polygons inside a layer in the
specified connect database. Only polygons that fit the specified criteria and are located
inside the layer specified by the inside_of_layer argument are selected.
A remote function can be used to specify arithmetic conditions relative to the portion of the
net inside each specified polygon or cluster of polygons with the same net. The polygons are
saved if the net parameters fit all of the constraints specified in the remote function.
The portion of net areas is also available for user-defined equations implemented in the
remote function.
Note:
If the remote function calls the nsil_save_double_property() utility function, any net
polygons that are not enclosed by the inside_of_layer polygon are discarded.
Errors are reported to the LAYOUT_ERRORS file and appear as an X in VUE.

Syntax
net_select_inside_of_layer(
connect_sequence = connect_database,
net_function = function,
layer_groups = {"string" => {polygon_layer, ...},
...},
inside_of_layer = polygon_layer,
output_from_layers = {polygon_layer, ...},
mode = BY_SHAPE | BY_NET, //optional
connected_to_all = {polygon_layer, ...}, //optional
not_connected_to_all = {polygon_layer, ...}, //optional
connected_to_any = {polygon_layer, ...}, //optional
not_connected_to_any = {polygon_layer, ...}, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies the connect database.

net_function
Required. Specifies the remote function that contains the conditions relative to the
parameters of layers on a net inside the polygon (or cluster of polygons with same net)

Chapter 3: Runset Functions: J - Z


net_select_inside_of_layer() 3-221
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

specified by the inside_of_layer argument. This function is called one time for each
portion of each selected net.
See “Net Select Inside of Layer Utility Functions” in Chapter 4 for more information about
the utility functions you can use to define a remote function.

layer_groups
Required. Specifies the hash of string to polygon layers. You must specify at least one
layer group in the hash.

inside_of_layer
Required. Specifies the layer inside of which the polygons are selected. If mode is set to
BY_NET, this layer must be in the connect database.

output_from_layers
Required. Specifies the layers where polygons are collected from selected nets to create
the output layer or report errors. These layers must be in the connect database.

mode
Optional. Specifies how the inside_of_layer argument gathers the net polygons. The
default is BY_SHAPE.
❍ BY_SHAPE. Selects the net polygons from each shape in the layer specified by
inside_of_layer.

❍ BY_NET. Selects the net polygons that touch polygons connected to the same net in
the layer specified by inside_of_layer.
For example, you can apply net_select_inside_of_layer() to determine if a net
contains polygons from multiple connected layers inside a specified shape, by default, or
shapes that belong to the same net when mode is set to BY_NET.
In Figure 3-31, the net_select() function would select both net1 and net2. However,
the net_select_inside_of_layer() function, with the specified layer inside_layer
= I, has no output because the net polygons A and B from layer I are checked separately
inside two individual shapes, P1 and P2, and neither shape contains both A and B from
a net.

Chapter 3: Runset Functions: J - Z


net_select_inside_of_layer() 3-222
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-31 Selecting Net Polygons by Shape

Figure 3-32 shows a similar example in which P1 and P2 are connected. If you set the
mode argument to BY_SHAPE to select a cluster of polygons with the same net, the
net_select_inside_of_layer() function selects both net1 and net2.

Figure 3-32 Selecting Net Polygons by Net

connected_to_all
Optional. Specifies the layers. To be selected for output, all of these layers must be on
the net. By default, the IC Validator tool does not require any specific layers.

not_connected_to_all
Optional. Specifies the layers. If all layers are on the net, the net is not selected. By
default, the IC Validator tool does not exclude any layers.

connected_to_any
Optional. Specifies the layers. To be selected for output, at least one of these layers must
be on the net. By default, the IC Validator tool does not require any specific layers.

Chapter 3: Runset Functions: J - Z


net_select_inside_of_layer() 3-223
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

not_connected_to_any
Optional. Specifies the layers. If any one of the layers is on the net, the net is not
selected. By default, the IC Validator tool does not exclude any layers.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following example shows a simple runset using net_select_inside_of_layer() to
check if a net contains both polygons from connected layers A and B inside a particular
shape I:
my_func : published function (void) returning void
{
L2_area = nsil_net_area("L2");
L3_area = nsil_net_area("L3");

if (L2_area > 0 && L3_area > 0)


{ nsil_save_net({"L2", "L3"}, {L2_area, L3_area}); }
}
net_select_inside_of_layer(connect_sequence = cdb,
net_function = my_func,
layer_groups = {"L2" => {A}, "L3" => {B}},
inside_of_layer = I,
output_from_layers = {A});

See Also
net_polygon_select()
net_property_select()

Chapter 3: Runset Functions: J - Z


net_select_inside_of_layer() 3-224
IC Validator Reference Manual Version N-2017.12-SP2

net_select()
net_select_error()

Chapter 3: Runset Functions: J - Z


net_select_inside_of_layer() 3-225
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net_texted_with() and net_not_texted_with()


The net_texted_with() function selects polygons from nets that are texted with the
specified strings.
The net_not_texted_with() function selects polygons from nets that are not texted with
the specified strings.

Syntax
net_texted_with(
connect_sequence = connect_database,
text = {"string", ...},
output_from_layers = {polygon_layer, ...}, //optional
texted_at = TOP_CELL | TOP_OF_NET | ANY_LEVEL |
HIGHEST_TEXT, //optional
colon_text = EQUATE_NETS | REGULAR_TEXT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

net_not_texted_with(
connect_sequence = connect_database,
text = {"string", ...},
output_from_layers = {polygon_layer, ...}, //optional
texted_at = TOP_CELL | TOP_OF_NET | ANY_LEVEL |
HIGHEST_TEXT, //optional
colon_text = EQUATE_NETS | REGULAR_TEXT, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies the connect database.

text
Required. Specifies the strings that determine the text used for selection. String matching
using metacharacters is allowed. See “String Matching” on page A-11 for more
information.

Chapter 3: Runset Functions: J - Z


net_texted_with() and net_not_texted_with() 3-226
IC Validator Reference Manual Version N-2017.12-SP2

output_from_layers
Optional. Specifies the layers from which polygons are collected to create the output
layer or error report. These layers must be in the connect database. By default, polygons
are collected from all layers in the connect database.

texted_at
Optional. Specifies where to look for the text specified with the text argument. The
default is ANY_LEVEL.
❍ TOP_CELL. Looks only in the top cell of each net for the specified text.
Note:
With this setting, the net_not_texted_with() function is not the complement of
the net_texted_with() function. When the texted_at argument is TOP_CELL,
both functions only select polygons from top cell nets.
❍ TOP_OF_NET. Looks at all cells on the highest hierarchical level on the net for the
specified text. The tool selects the net whose text on the highest level matches the
specified text; the net does not have higher hierarchical levels. This option is not
available when the processing_mode argument is CELL_LEVEL.
❍ ANY_LEVEL. Looks at all cells on the net for the specified text.

❍ HIGHEST_TEXT. Looks for the highest hierarchical level on the net for the specified
text. The tool selects the net whose highest level text matches the specified text even
if the net continues untexted higher up. This option is not available when the
processing_mode argument is CELL_LEVEL.
Note:
Multiple texts are classified as HIGHEST_TEXT for nets that are untexted higher up
and have hierarchically connected sibling branches with different net names.
See Figure 3-27 in the net_select() function for an example of the HIGHEST_TEXT
option.

colon_text
Optional. Specifies how the colon ( : ) is processed. The default is REGULAR_TEXT.
❍ EQUATE_NETS. For net text, ignores the colon and characters following it. For
example, "a:", "a:a", and "a:xyz" all match the text “a”. This setting applies only
when the text_options() function is called with colon_text = EQUATE_NETS.
❍ REGULAR_TEXT. Retains the colon and does not give the colon special processing.

processing_mode
Optional. Specifies how the polygons are collected from selected nets. The default is
HIERARCHICAL.

Chapter 3: Runset Functions: J - Z


net_texted_with() and net_not_texted_with() 3-227
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ CELL_LEVEL. Specifies that only polygons in the cell with the matching text are
collected.
❍ HIERARCHICAL. Specifies that polygons are collected from any hierarchical location
on the selected nets.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
x = net_texted_with(connectdb1, {"VDD"});

See Also
connect()
text_net()
texted_with() and not_texted_with()

Chapter 3: Runset Functions: J - Z


net_texted_with() and net_not_texted_with() 3-228
IC Validator Reference Manual Version N-2017.12-SP2

netlist()
The netlist() function invokes the netlist utility (icv_netlist) to generate the layout netlist
output file for LVS comparison. The output is named cell.net, where cell is the string
specified by library() function cell argument. For an ICV flow, the output is an ICV netlist.
For SPICE flow, the output is SPICE netlist.
The layout netlist data is created using the device database output from the
extract_devices() function and the polygon layers specified in the connect() function.
Therefore, call the netlist() function after these functions.
See the Example section for more information about the output netlist.
Note:
The icv_netlist utility is in the IC Validator installation directory.

Syntax
netlist(
device_db = device_database,
include_empty_cells = NONE | WITH_PORTS | ALL, //optional
precision = integer //optional
);

Returns
layout_netlist_file_handle

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

include_empty_cells
Optional. Specifies which empty cells are written to the cell.net file. Empty cells do not
have devices or instances. A cell is always written out when it is defined as an
equivalence or black-box cell. The default is NONE.
❍ NONE. Does not write empty cells to the cell.net file.

❍ WITH_PORTS. Writes empty cells that have ports to the cell.net file.

❍ ALL. Writes all empty cells to the cell.net file.

precision
Optional. Specifies the number of digits after the decimal point reported in the output
netlist for all device properties and xy coordinates. When the precision argument is <=0,

Chapter 3: Runset Functions: J - Z


netlist() 3-229
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

the IC Validator tool treats this value as the default precision, which is the maximum
precision value supported. The default is the maximum precision value supported.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE and HERCULES_NETLIST
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
The following is an example of the version 2 netlist format.
{NETLIST add4
{VERSION 2 0 0}
/* Level 2 */
{CELL invb
{PORT VDD B GND A}
{PROP top=50.000000 bottom=0.000000 left=0.000000 right=12.000000}
{INST M1=n {TYPE MOS} {COORD x=5.5000 y=10.5000}
{PROP nrd=0.2308 nrs=0.2308 pd=32.0000 ad=39.0000 ps=32.0000
as=39.0000 w=13.0000 l=1.0000}
{PIN A=GATE GND=SRC B=DRN GND=BULK }}
{INST M2=p {TYPE MOS} {COORD x=5.5000 y=35.7500}
{PROP nrd=0.1463 nrs=0.1463 pd=47.0000 ad=61.5000 ps=47.0000
as=61.5000 w=20.5000 l=1.0000}
{PIN A=GATE VDD=SRC B=DRN VDD=BULK }}
}

{CELL nor2b
{PORT VDD QN GND A B}
{PROP top=50.000000 bottom=0.000000 left=0.000000 right=18.000000}
{INST M1=n {TYPE MOS} {COORD x=11.0000 y=10.5000}
{PROP nrd=0.2308 nrs=0.1731 pd=32.0000 ad=39.0000 ps=17.5000
as=29.2500 w=13.0000 l=1.0000}
{PIN B=GATE QN=SRC GND=DRN GND=BULK }}
{INST M2=n {TYPE MOS} {COORD x=5.5000 y=10.5000}
{PROP nrd=0.2308 nrs=0.1731 pd=32.0000 ad=39.0000 ps=17.5000
as=29.2500 w=13.0000 l=1.0000}
{PIN A=GATE QN=SRC GND=DRN GND=BULK }}
{INST M3=p {TYPE MOS} {COORD x=8.5000 y=35.7500}
{PROP nrd=0.2683 nrs=0.0488 pd=52.0000 ad=112.7500 ps=22.5000

Chapter 3: Runset Functions: J - Z


netlist() 3-230
IC Validator Reference Manual Version N-2017.12-SP2

as=20.5000 w=20.5000 l=1.0000}


{PIN B=GATE 9=SRC QN=DRN VDD=BULK }}
{INST M4=p {TYPE MOS} {COORD x=5.5000 y=35.7500}
{PROP nrd=0.1463 nrs=0.0488 pd=47.0000 ad=61.5000 ps=22.5000
as=20.5000 w=20.5000 l=1.0000}
{PIN A=GATE 9=SRC VDD=DRN VDD=BULK }}
}
. . .

See Also
extract_devices()
write_spice()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


netlist() 3-231
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

nmos() and pmos()


The nmos() function collects extraction configuration information about N-type MOS
transistors that have a gate layer, source layer, drain layer, and optional pin layers. The
pmos() function collects extraction configuration information about P-type MOS transistors
that have a gate layer, source layer, drain layer, and optional pin layers. The configuration
information, which contains terminal layers, property extraction information, schematic
device mappings, and pin handling instructions, is stored in the device matrix that is passed
to the extract_devices() function.
The source or drain area of a MOS transistor with a shared source/drain is
area =
(total area)*(gate width)/(sum all gate widths touching shared area)

When the shape is a simple rectangle, the area is simply divided in half.

Syntax
nmos(
matrix =
device_matrix,
device_name =
"string",
drain =
polygon_layer,
gate =
polygon_layer,
source =
polygon_layer,
optional_pins =
{{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE,
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE | NETLIST, |
AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map = {"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional
swappable_pins = {{"string", ...}, ...}, //optional

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-232
IC Validator Reference Manual Version N-2017.12-SP2

schematic_devices = {{device_name = "string",


drain = "string",
gate = "string",
source = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
contact_layers = {polygon_layer, ...}, //optional
source_drain_config = {NORMAL, SINGLE}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
orientation = = {compare_pass = RELATIVE | ABSOLUTE,
simulation_pass = RELATIVE | ABSOLUTE},
//optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

pmos(
matrix =
device_matrix,
device_name =
"string",
drain =
polygon_layer,
gate =
polygon_layer,
source =
polygon_layer,
optional_pins =
{{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE,
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE | NETLIST |
AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map = {"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-233
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

merge_parallel =
true | false, //optional
bulk_relationship =
ENCLOSE | INTERACT, //optional
swappable_pins =
{{"string", ...}, ...}, //optional
schematic_devices =
{{device_name = "string",
drain = "string",
gate = "string",
source = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
contact_layers = {polygon_layer, ...}, //optional
source_drain_config = {NORMAL, SINGLE}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
orientation = = {compare_pass = RELATIVE | ABSOLUTE,
simulation_pass = RELATIVE | ABSOLUTE},
//optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the MOS device. A device name can be reused across multiple calls
of the nmos() function and pmos() function, but not across the two functions, if all calls
have
❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-234
IC Validator Reference Manual Version N-2017.12-SP2

❍ Equivalent settings for x_card argument.


See “Device Names” in Appendix A for the device_name argument restrictions.

drain
Required. Specifies the drain layer of the MOS device. The pin name generated by the
IC Validator tool is “DRN”.

gate
Required. Specifies the gate layer of the MOS device. The pin name generated by the
IC Validator tool is “GATE”.

source
Required. Specifies the source layer of the MOS device. The pin name generated by the
IC Validator tool is “SRC”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named “BULK”.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-235
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
Figure 3-33 illustrates both the interaction method of selection, that is, a range value
of -1, and the window method of selection, that is, a range value >0.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-236
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-33 Interaction and Window Methods of Selection

Figure 3-34 shows the selected polygon set when this setting is used:
processing_layer_hash = { "poly" => {poly, 1.0}, "NW" => {NW, -1.0}}

Figure 3-34 Example of Selected Polygon Set

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-237
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

properties
Optional. Lists the property values that define the device. The default is
properties = {{"l", DOUBLE, MICRO},
{"w", DOUBLE, MICRO}}

❍ name. Required. Specifies the property name. See “Predefined Name Matches” in
Chapter 7, “Compare Functions Basics” of the IC Validator LVS User Guide for the
names and associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Optional. Specifies the data type of the property. The default is DOUBLE.
Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.
❍ scale. Optional. Specifies the scale factor applied to the property values output by
the write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-238
IC Validator Reference Manual Version N-2017.12-SP2

- The output netlist (cell.net) by the netlist() function.


- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_database() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-239
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The property is not written to


- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to
Writes the corresponding property to
- The output netlist (cell.net) by the netlist() function.
The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-240
IC Validator Reference Manual Version N-2017.12-SP2

processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-24.
Table 3-24 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-241
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This behavior is summarized in Table 3-25.


Table 3-25 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using the pin_map
Argument

write_property_to value Dual-hierarchy phase Treatment of terminal layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted device. The default calculations are for the length of the gate region (l) and the
width of the gate region (w). The default calc_capacitor_properties() function is
defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for more information about the utility
functions you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-242
IC Validator Reference Manual Version N-2017.12-SP2

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon.
❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “SRC” and “DRN” can be swapped. Use an empty list
to disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the standard “DRN”, “GATE”, “SRC”, and
“BULK” pin names, in addition to optional pin names provided in the
optional_pins list of structures argument of the device configuration function.

❍ device_name. Required. Specifies the schematic device.

❍ drain. Optional. Specifies the drain terminal of the device. The default is "DRN".

❍ gate. Optional. Specifies the gate terminal of the device. The default is "GATE".

❍ source. Optional. Specifies the source terminal of the device. The default is "SRC".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


pin_name option in the optional_pins argument.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-243
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the nmos() and pmos() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
nmos() and pmos() functions, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

x_card
Optional. Specifies if the instance name prefix is replaced. The default is false.
❍ true. Replaces the default instance name prefix for the layout extracted device with
an X-card. This option facilitates the use of SPICE SUBCKT models to represent
devices in simulation.
❍ false. The default instance name prefix for the layout extracted device is not
replaced.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” on page 4-110 for more information.

contact_layers
Optional. Specifies the additional layers that are used for calculating the nrs and nrd
properties accurately.

source_drain_config
Optional. Specifies the MOS type to be checked. The default is {NORMAL, SINGLE}.
❍ SINGLE. Extracts only MOS devices that touch a single source or drain.

❍ NORMAL. Extracts only MOS devices that have separate regions for source and drain.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Optional. Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the strings are valid and

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-244
IC Validator Reference Manual Version N-2017.12-SP2

unique. (The IC Validator tool does not check values to ensure that they are unique.) The
default is an empty string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

orientation
Optional. Controls the orientation of the measurements. The default is RELATIVE.
Note:
An error occurs when the orientation argument of the mos_proximity_list()
function is ABSOLUTE and the orientation argument of the nmos() or pmos()
function is RELATIVE.
❍ RELATIVE. Specifies that the orientation is relative to the source and drain layers of
the gate.
❍ ABSOLUTE. Specifies that the orientation is relative to the body within the coordinate
space of the top cell.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-245
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the PEX runset
report file, which is used by the StarRC tool. The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” on page 4-114 for more information.

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
In the following nmos() function example, shown in Figure 3-35, notice that an instance of
an NMOS device is formed by the interaction between two psd polygons with one ngate
polygon.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-246
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-35 nmos() Function Example

NMOS device (bulk)

psd ngate psd

ndiff

poly

matrix = init_device_matrix(cdb1);

nmos(
matrix,
device_name = "n",
drain = psd,
gate = ngate,
source = psd,
optional_pins = {{bulk}}
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

In the following pmos() function example, shown in Figure 3-36, notice that an instance of
an PMOS device is formed by the interaction between two nsd polygons with one pgate
polygon.

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-247
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-36 pmos() Function Example


nwell
PMOS device

(bulk)

nsd pgate nsd

pdiff

poly

matrix = init_device_matrix(cdb1);

pmos(
matrix,
device_name = "p",
drain = nsd,
gate = pgate,
source = nsd,
optional_pins = {{bulk}}
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

See Also
np() and pn()
npn() and pnp()

Chapter 3: Runset Functions: J - Z


nmos() and pmos() 3-248
IC Validator Reference Manual Version N-2017.12-SP2

not()
The not() function creates polygons that represent the layer1 polygons that are not
common to the layer2 polygons. Any layer1 polygons that overlap with layer2 polygons
have the overlapping portion removed in the output.

Syntax
not(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


not() 3-249
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-37 shows examples of the not() function.
Figure 3-37 not() Function Examples

lay1

lay2
Result = Result =
lay1 not lay2; lay2 not lay1; Result

See Also
and()
and_edge()
not_edge()
or()
or_edge()
xor()
xor_edge()

Chapter 3: Runset Functions: J - Z


not() 3-250
IC Validator Reference Manual Version N-2017.12-SP2

not_contained_by() and contained_by()


These functions are used to check multiple containment specifications for rectangles using
a logical operation.
The not_contained_by() function selects rectangles from the layer1 layer that do not fit
containment specifications within layer2. This function selects
• The layer1 rectangles that do not fit the containment enclosure specifications within
layer2.

• The layer1 polygons that are not inside layer2.


• The layer1 data that is not rectangular.

The contained_by() function selects rectangles from the layer1 layer that fit containment
specifications within layer2. It is the complement of the not_contained_by() function.
Four check regions are specified using a distance and extension, one for each edge of the
enclosed rectangles. These check regions are combined to form a containment region for
each rectangle. A selection rule is shown in the Examples section.
• For the not_contained_by() function,
❍ If the containment region cannot fit inside layer2, in any orientation, the rectangle
does not fit the containment specification and is selected for output.
❍ If any orientation of the containment region fits inside layer2, the rectangle is not
selected.
• For the contained_by() function,
❍ If any orientation of the containment region fits inside layer2, the rectangle is
selected.
❍ If the containment region cannot fit inside layer2, in any orientation, the rectangle
does not fit the containment specification and is not selected for output.

Syntax
not_contained_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-251
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

RECTANGLE,
extension_distance = double},
distance3 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

contained_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance3 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-252
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
layer1
Required. Specifies the polygon layer.

layer2
Required. Specifies the polygon layer.

distances
Required. Lists the distances and extensions for check regions. The distances can be
applied in either clockwise or counterclockwise order. That is, a rectangle fits the
specification if the four minimum distances can be satisfied in at least one of the eight
possible permutations: four possible rotations, in forward or reverse order.
❍ distance1, distance2, distance3, distance4. Specify the containment values,
one for each side of the layer1 rectangle. The distances must be positive values.
❍ extension. Optional. Specifies the endpoint extension for the check region. The
default is NONE.
■ NONE. Does not extend the check region.

■ RADIAL. Extends the check region with the distance value past the endpoints of
the edge being checked, forming a radial curve.
■ SQUARE. Extends the check region with the distance value past the endpoints of
the edge being checked, forming a square box.
■ INTERSECTION. Extends the check region with the adjacent distance value past
the endpoints of the edge being checked.
■ RECTANGLE. Extends the check region past the endpoints of the edges using the
extension_distance value with a rectangle. See the diagram in the extension
argument of the enclose() function for more information.
Figure 3-38 illustrates a rectangle and the check regions for a single permutation of
the given distances using the various extension settings.

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-253
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-38 Extension Settings

.8 .8 .8 .8

.4 .4 .4 .4 .4 .4 .4 .4

.8 .8 .8 .8

NONE RADIAL SQUARE INTERSECTION

rectangle check region

The contained_by() and not_contained_by() functions are not spacing checks.


A rectangle might not fit the containment specification even though there are no
spacing violations. In Figure 3-39,
magenta = not_contained_by(blue, red,
{{{.2, SQUARE}, {.4, SQUARE}, {.2, SQUARE}. {.4, SQUARE}}}
);

Figure 3-39 not_contained_by() Function Example

layer1

layer2

containment
region
❍ extension_distance. Optional. Specifies the check region extension distance when
the extension argument is RECTANGLE. The value must be nonnegative. The default
is 0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-254
IC Validator Reference Manual Version N-2017.12-SP2

Description
In cases where the four distances are not symmetric, containment is checked both
clockwise and counterclockwise around the rectangle to determine acceptance. For
example, as shown in Figure 3-40, both rectangles fit the specification
distances = {{{2},{4},{1},{1}}}

Figure 3-40 Nonsymmetrical Distances


1 1

4 1 1 4 layer1

2 2 layer2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-41 shows a line-end rule using the not_contained_by() function. To fail, a
contact must be less than any of the specified distances: 0.02 m and 0.03 m from the
opposing metal line ends and less than 0.01 m from the other two opposing metal sides.
Because these contacts meet the containment specifications, they are not selected.
bad_contact = contact not_contained_by [
distances = {{{0.01, INTERSECTION}, {0.02, INTERSECTION},
{0.01, INTERSECTION}, {0.03, INTERSECTION}}}
] metal;

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-255
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-41 Line-End Rule Using the not_contained_by() Function


0.01
0.02

0.02 0.03
contact layer

0.01

0.01
0.01
metal layer

0.03

In the following example, the not_contained_by() function selects rectangles on the cont
layer that do not fit either of these specifications:
• Enclosed by at least 0.1 on all sides.
• Opposite sides as close as 0.0 if the other two sides are enclosed by at least 0.2.
notcont = not_contained_by(cont, metal,
{{{.1}, {.1}, {.1}, {.1}}, {{.2}, {0}, {.2}, {0}}}
);

See Also
covered_by()
enclose()
not_covered_by()

Chapter 3: Runset Functions: J - Z


not_contained_by() and contained_by() 3-256
IC Validator Reference Manual Version N-2017.12-SP2

not_covered_by()
The not_covered_by() function checks multiple enclosure specifications for rectangles
using a spacing check. This function selects
• The layer1 rectangles that do not fit the enclosure specifications within layer2.
• The layer1 polygons that are not inside layer2.
• The layer1 data that is not rectangular.
When evaluating enclosure specifications, spacing is not checked between the following
edge pairs:
• Between collinear edges; that is, edges along the same line. Figure 3-42 shows an
example.
Figure 3-42 Collinear Edges

layer1

layer2

• Between perpendicular edges, or any edges forming an angle greater than 90 degrees.
Figure 3-43 shows an example.
Figure 3-43 Perpendicular Edges

layer1

layer2

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-257
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Between a layer1 edge and any outside layer2 edge. Figure 3-44 shows an example.
Figure 3-44 Outside Edge

layer1

layer2

For any extension argument setting other than NONE, a point touch satisfies only a distance
of 0. Figure 3-45 shows an example.
Figure 3-45 Point Touch

layer1

layer2

More information about selection rules and check region examples are shown in the
Examples section.

Syntax
not_covered_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-258
IC Validator Reference Manual Version N-2017.12-SP2

distance3 = {distance = double,


extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
intersecting = {ACUTE, POINT_TOUCH, TOUCH}, //optional
not_inside = FAIL | IGNORE, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

layer2
Required. Specifies the enclosing polygon layer.

distances
Required. Lists the distances and extensions for check regions. The distances can be
applied in either clockwise or counterclockwise order. That is, a rectangle fits the
specification if the four minimum distances can be satisfied in at least one of the eight
possible permutations: four possible rotations, in forward or reverse order.
❍ distance1, distance2, distance3, distance4. Specify the minimum enclosure
values, one for each side of the layer1 rectangle. The distances specify the
minimum distance from the outside of layer1 to the inside of layer2. The distances
must be positive values. A distance of 0 indicates that the layers can be touching.
Note:
For the not_covered_by() function, the distances must be less than (<) the
values.
❍ extension. Optional. Specifies the endpoint extension for the check region. The
default is NONE.
■ NONE. Does not extend the check region; only layer1 and layer2 edges with a
positive perpendicular projection between them are measured.

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-259
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ RADIAL. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a radial curve.
■ SQUARE. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a square box.
■ INTERSECTION. Extends the check region with the adjacent distance value past
the endpoints of the layer1 edge being checked.
■ RECTANGLE. Extends the check region past the endpoints of the layer1 edges
using the extension_distance value with a rectangle. The boundary of the
check region is inclusive or exclusive depending on the constraint of the distance
value. See the diagram in the extension argument of the enclose() function for
more information.
Figure 3-46 illustrates a rectangle and the check regions for a single permutation of
the given distances using the various extension argument settings.
Figure 3-46 extension Argument Examples

.8 .8 .8 .8

.4 .4 .4 .4 .4 .4 .4 .4

.8 .8 .8 .8

NONE RADIAL SQUARE INTERSECTION


layer1 layer2

❍ extension_distance. Optional. Specifies the check region extension distance for


the extension argument when it is RECTANGLE. The value must be nonnegative. The
default is 0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

intersecting
Optional. Specifies the intersecting edge types that are included in the measurement. By
default, the IC Validator tool includes all intersecting edge types in the measurement.

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-260
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Intersection edges that are not measured pass the enclosure specification
automatically. For example, if TOUCH is not included in this list, touching edges pass
without measurement and only the remaining nontouching edges must fit the
enclosure specification for the rectangle to pass.
❍ ACUTE. Specifies that intersecting edges that form acute angles fail any nonzero
distance.
❍ POINT_TOUCH. Specifies that intersecting edges that point touch fail any nonzero
distance when the extension argument is not NONE.
❍ TOUCH. Specifies that intersecting edges that edge touch fail any nonzero distance.

not_inside
Optional. Specifies whether layer1 rectangles that are not enclosed in layer2 are
selected. The default is FAIL.
❍ FAIL. Selects rectangles that are not inside layer2.

❍ IGNORE. Ignores rectangles that are not inside layer2.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Description
To determine if a minimum distance is satisfied, the following selection rules apply:
• A given rectangle edge satisfies the minimum distance only if there are no spacing
violations within a specified distance. In Figure 3-47, edge 1 satisfies any distance less
than or equal to x; it does not satisfy a distance of y.
Figure 3-47 Satisfying the Minimum Distance

x layer1
y 1
layer2

• Obstructions are ignored when measuring the enclosure. In Figure 3-48, edge 1 satisfies
any distance less than or equal to x, and edge 2 satisfies any distance less than or equal
to y.

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-261
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-48 Ignoring Obstructions

x y layer1
1 2
layer2

• Measurements always include parallel and nonparallel spacing. In Figure 3-49, edge 1
satisfies any distance less than or equal to x.
Figure 3-49 Parallel and Nonparallel Spacing

x layer1
1
layer2

• Measurements are always made from the enclosed rectangle. This behavior is
significant only in nonparallel situations when the extension argument is NONE. In
Figure 3-50, edge 1 satisfies any distance less than or equal to y. The enclosure distance
x from enclosing layer to enclosed layer is ignored.
Figure 3-50 Satisfying a Distance
x
layer1
1 y
layer2

• In cases where the four distances are not symmetric, measurements are checked both
clockwise and counterclockwise around the rectangle to determine acceptance. For
example, as shown in Figure 3-51, both rectangles fit the specification
distances = {{{2},{4},{1},{1}}}

Figure 3-51 Nonsymmetrical Distances


1 1

4 1 1 4 layer1

2 2 layer2

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-262
IC Validator Reference Manual Version N-2017.12-SP2

• If extension is not NONE, nonprojecting spacing must be included in the check. In


Figure 3-52, if the extension argument is RADIAL, edge 1 satisfies only distances less
than or equal to x.
Note:
When extension is not NONE, a point touch satisfies only a distance of 0.
Figure 3-52 Nonprojecting Spacing

x layer1

layer2
y

• Measurements are made only between edges that oppose; that is, the angle formed
between the check sides of the edges is less than 90 degrees. Figure 3-53 shows an
example. See “Spacing Checks” on page A-18 for more information about the check
side.
Figure 3-53 Check Sides
layer1

layer2
check
region

Passes Fails
Note:
Passes: The enclosing edge falls within the check region but there is no spacing
violation.
Fails: There is a spacing violation within the check region.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-263
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-54 shows a line-end rule using the not_covered_by() function. To fail, a contact
must be less than any of the specified distances: 0.02 m and 0.03 m from the opposing
metal line ends and less than 0.01 m from the other two opposing metal sides. Because
these contacts meet the containment specifications, they are not selected.
bad_contact = contact not_covered_by [
distances = {{{0.01, INTERSECTION}, {0.02, INTERSECTION},
{0.01, INTERSECTION}, {0.03, INTERSECTION}}}
] metal;

Figure 3-54 Line-End Rule Using not_covered_by().

0.01
0.02

0.02 0.03
contact layer
0.01 0.01 0.01
metal layer

0.03

In the following example, the not_covered_by() function selects any rectangles on the
cont layer that do not fit any of the specifications:
• Enclosed by at least 0.1 on all sides.
• Opposite sides as close as 0.0 if the other two sides are enclosed by at least 0.2.
notcont = not_covered_by(cont, metal,
{{{.1}, {.1}, {.1}, {.1}}, {{.2}, {0}, {.2}, {0}}}
);

In Figure 3-55, TOUCH is excluded from the intersecting argument list. As a result the
touching edges are not measured, and the blue rectangle is not selected.
not_covered_by(
blue, red,
{{{0.01,RADIAL}, {0.01,RADIAL}, {0.01,RADIAL}, {0.01,RADIAL}}},
intersecting = {ACUTE, POINT_TOUCH}
);

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-264
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-55 Touching Edges Are Not Measured


blue layer

red layer

In Figure 3-56, TOUCH and ACUTE are excluded from the intersecting argument list.
Therefore, both touching and acute intersecting edges are not measured, and the blue
rectangle is not selected.
not_covered_by(
blue, red,
{{{0.01,RADIAL}, {0.01,RADIAL}, {0.01,RADIAL}, {0.01,RADIAL}}},
intersecting = {POINT_TOUCH}
);

Figure 3-56 Touching and Acute Intersecting Edges Are Not Measured

blue layer

red layer

See Also
covered_by()
not_contained_by() and contained_by()
enclose()

Chapter 3: Runset Functions: J - Z


not_covered_by() 3-265
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

not_edge()
The not_edge() function selects the portion of all layer1 edges that are outside the
layer2 polygons.

Syntax
not_edge(
layer1 = data_layer,
layer2 = polygon_layer,
coincident = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

coincident
Optional. When set to true, outside coincident is included in the result. The default is
true.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


not_edge() 3-266
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 3-57 both layers are polygon layers: magenta is layer1; red is layer2. The results
are the same if magenta is an edge layer.
green = magenta not_edge red;

Figure 3-57 not_edge() Function Example


Input Output 1 Output 2

coincident = true coincident = false

See Also
and_edge()
coincident_edge() and not_coincident_edge()
coincident_inside_edge() and not_coincident_inside_edge()
coincident_outside_edge() and not_coincident_outside_edge()

Chapter 3: Runset Functions: J - Z


not_edge() 3-267
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

not_enclosed_by() and enclosed_by()


The not_enclosed_by() function checks whether rectangles are enclosed. The
complement of this function is the enclosed_by() function.
The order of filtering and checks of the not_enclosed_by() function for LCC and SEC
flows is shown in Figure 3-58.

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-268
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-58 Workflow for not_enclosed_by() Function

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-269
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
not_enclosed_by(
layer1 = polygon_layer,
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance3 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
intersecting_failures = {ACUTE, PERPENDICULAR, POINT_TOUCH,
TOUCH}, //optional
non_orthogonal = CHECK | FAIL | IGNORE,
not_inside = FAIL | CHECK, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

enclosed_by(
layer2 = polygon_layer,
distances = {{distance1 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance2 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance3 = {distance = double,
extension = NONE | RADIAL |
SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
distance4 = {distance = double,
extension = NONE | RADIAL |

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-270
IC Validator Reference Manual Version N-2017.12-SP2

SQUARE | INTERSECTION |
RECTANGLE,
extension_distance = double},
...},
intersecting_failures = {ACUTE, PERPENDICULAR, POINT_TOUCH,
TOUCH}, //optional
non_orthogonal = CHECK | FAIL | IGNORE,
not_inside = FAIL | CHECK, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected. This is the
enclosed layer.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked. This is
the enclosing layer.

distances
Required. Lists the distances and extensions for check regions.
❍ For a logical containment check, only distance values are used.
❍ For a spatial enclosure check, distance, extension, and extension_distance are
all used.
The distances can be applied in either clockwise or counterclockwise order. That is, a
rectangle fits the specification if the four minimum distances can be satisfied in at least
one of the eight possible permutations: four possible rotations, in forward or reverse
order.
❍ distance1, distance2, distance3, distance4. Specify the minimum distance
values, one for each side of the layer1 rectangle. The distances specify the
minimum distance from the outside of layer1 to the inside of layer2.
The distances must be positive values. A distance of 0 indicates that the layers can
be touching.
❍ extension. Optional. Specifies the endpoint extension for the check region. The
default is NONE.

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-271
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ NONE. Does not extend the check region. Only layer1 and layer2 edges with a
positive perpendicular projection between them are measured.
■ RADIAL. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a radial curve.
■ SQUARE. Extends the check region with the distance value past the endpoints of
the layer1 edge being checked, forming a square box.
■ INTERSECTION. Extends the check region with the adjacent distance value past
the endpoints of the layer1 edge being checked.
■ RECTANGLE. Extends the check region past the endpoints of the layer1 edges
using the extension_distance value with a rectangle. The boundary of the
check region is inclusive or exclusive depending on the constraint of the distance
value. See the diagram in the extension argument of the enclose() function for
more information.
❍ extension_distance. Optional. Specifies the check region extension distance when
the extension argument is RECTANGLE. The value must be nonnegative. The default
is 0.

intersecting_failures
Optional. Specifies the intersecting types that are forbidden. If a rectangle intersects its
enclosing layer with a forbidden intersecting type, the rectangle is placed in the output
layer. By default, the IC Validator tool includes all intersecting types in the measurement.
❍ ACUTE. Specifies that intersecting edges that form acute angles fail.

❍ PERPENDICULAR. Specifies that intersecting edges that form right angles fail.

❍ POINT_TOUCH. Specifies that intersecting edges that point touch fail.

❍ TOUCH. Specifies that intersecting edges that edge touch fail.

non_orthogonal
Optional. Specifies how non-orthogonal rectangles are processed. The default is CHECK.
❍ CHECK. Checks nonorthogonal data during the workflow of this function. See
Figure 3-58.
❍ FAIL. Puts nonorthogonal data directly into the output layer.

❍ IGNORE. Ignores nonorthogonal data during the workflow of this function.

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-272
IC Validator Reference Manual Version N-2017.12-SP2

not_inside
Optional. Specifies how to process the inside and not-inside rectangles. The default is
CHECK.

❍ FAIL. Puts directly into the output layer all rectangles that are not fully inside the
enclosing layer.
❍ CHECK. For spatial enclosure checks, checks the sections of rectangles inside the
enclosing layer. If a rectangle is completely outside its enclosing polygon, then it is
not written into the output layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
enclose()
not_contained_by() and contained_by()

Chapter 3: Runset Functions: J - Z


not_enclosed_by() and enclosed_by() 3-273
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

np() and pn()


The np() function collects extraction configuration information about NP diodes extracted
from the specified device body layer. The pn() function collects extraction configuration
information about PN diodes extracted from the specified device body layer. The
configuration information, which contains device body and terminal layers, property
extraction information, schematic device mappings, and pin handling instructions, is stored
in the device matrix that is passed to the extract_devices() function. For the NP or PN
device to be recognized, the device body layer polygons must interact with one polygon from
each terminal layer and from each specified optional pins layer. If an optional pin layer with
the pin_type option set to BULK is specified, the required relationship between the pin layer
polygon and the device body layer polygon is defined by the bulk_relationship
argument. If an optional pin layer with the pin_type option set to TERMINAL is specified, the
optional pin layer polygon must interact with the device body layer polygon but is not
required to enclose the device body layer polygon.
Note:
See “Device Names” on page A-9 for the device_name argument restrictions.

Syntax
np(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
anode = polygon_layer,
cathode = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},

Chapter 3: Runset Functions: J - Z


np() and pn() 3-274
IC Validator Reference Manual Version N-2017.12-SP2

...}, //optional
property_function =function, //optional
merge_parallel =true | false, //optional
bulk_relationship =ENCLOSE | INTERACT, //optional
swappable_pins ={{"string", ...}, ...}, //optional
schematic_devices ={{device_name = "string",
anode = "string",
cathode = "string",
bulk_terms = {"string", ...},
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
extract_shorted_device = true | false, //optional
spice_netlist_function = "string", //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

pn(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
anode = polygon_layer,
cathode = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},

Chapter 3: Runset Functions: J - Z


np() and pn() 3-275
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pin_map = {"string", ...}},


...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
anode = "string",
cathode = "string",
bulk_terms = {"string", ...},
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
extract_shorted_device = true | false, //optional
spice_netlist_function = "string", //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the diode. A device name can be reused across multiple calls of the
np() function or pn() function, but not across both functions, if all calls have

❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.
❍ Equivalent settings for x_card argument.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-276
IC Validator Reference Manual Version N-2017.12-SP2

device_body
Required. Specifies the body layer of the diode.

anode
Required. Specifies the anode layer of the diode. The pin name generated by the
IC Validator tool is “ANODE”.

cathode
Required. Specifies the cathode layer of the diode. The pin name generated by the
IC Validator tool is “CATHODE”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named “BULK”.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-277
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. The default is
properties = {{"area", DOUBLE, PICO},
{"pj", DOUBLE, MICRO}},

❍ name. Specifies the property name. See “Predefined Name Matches” in Chapter 7,
“Compare Functions Basics” of the IC Validator LVS User Guide for the names and
associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Specifies the data type of the property. The default is DOUBLE.
Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-278
IC Validator Reference Manual Version N-2017.12-SP2

❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_database() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-279
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- The annotation file by the write_annotation_file() function.


■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

Chapter 3: Runset Functions: J - Z


np() and pn() 3-280
IC Validator Reference Manual Version N-2017.12-SP2

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-26.
Table 3-26 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

Chapter 3: Runset Functions: J - Z


np() and pn() 3-281
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-27.
Table 3-27 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-282
IC Validator Reference Manual Version N-2017.12-SP2

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted diode. The default calculations are for the area of the diode (area) and the
perimeter of the junction (pj). The default calc_diode_properties() function is defined
in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for more information about the utility
functions you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon.
❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:

Chapter 3: Runset Functions: J - Z


np() and pn() 3-283
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the standard “ANODE”, “CATHODE”, and
“BULK” pin names, in addition to optional pin names provided in the
optional_pins list of structures argument of the device configuration function.

❍ device_name. Required. Specifies the schematic device.

❍ anode. Optional. Specifies the anode terminal of the device. The default is "ANODE".

❍ cathode. Optional. Specifies the cathode terminal of the device. The default is
"CATHODE".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the


pin_name option in the optional_pins argument.

❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the np() and pn() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
np() and pn() functions, that pin can be specified with the ignore_pins. Otherwise,
this optional pin produces an error during the compare operation.

x_card
Optional. Specifies if the instance name prefix is replaced. The default is false.
❍ true. Replaces the default instance name prefix for the layout extracted device with
an X-card. This option facilitates the use of SPICE SUBCKT models to represent
devices in simulation.
❍ false. The default instance name prefix for the layout extracted device is not
replaced.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” on page 4-110 for more information.

extract_shorted_device
Optional. Specifies whether shorted diodes, that is, diodes with only one terminal, are
extracted. The default is true.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-284
IC Validator Reference Manual Version N-2017.12-SP2

❍ true. Extracts shorted diodes.

❍ false. Reports shorted diodes as error devices.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the strings are valid and
unique. (The IC Validator tool does not check values to ensure that they are unique.) The
default is an empty string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

Chapter 3: Runset Functions: J - Z


np() and pn() 3-285
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” on page 4-114 for more information.

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
matrix = init_device_matrix(cdb1);

np(
matrix,
device_name = "DNP_dev",
device_body = l_body,
anode = l_newll,
cathode = l_psd,
reference_layer = l_ref
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

Chapter 3: Runset Functions: J - Z


np() and pn() 3-286
IC Validator Reference Manual Version N-2017.12-SP2

See Also
npn() and pnp()
nmos() and pmos()

Chapter 3: Runset Functions: J - Z


np() and pn() 3-287
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

npn() and pnp()


The npn() function collects extraction configuration information about NPN-type bipolar
transistors that consist of an emitter layer, base layer, collector layer, and an optional bulk
layer. The pnp() function collects extraction configuration information about PNP-type
bipolar transistors that consist of an emitter, base, collector, and optional bulk layer. The
configuration information, which contains device body and terminal layers, property
extraction information, schematic device mappings, and pin handling instructions, is stored
in the device matrix that is passed to the extract_devices() function. When multiple
emitter (or collector) polygons are found that interact with the same base and collector (or
emitter) polygons, multiple NPN-type and PNP-type bipolar transistors are extracted.
Note:
See “Device Names” in Appendix A for the device_name argument restrictions.

Syntax
npn(
matrix = device_matrix,
device_name = "string",
collector = polygon_layer,
base = polygon_layer,
emitter = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-288
IC Validator Reference Manual Version N-2017.12-SP2

swappable_pins = {{"string", ...}, ...}, //optional


schematic_devices = {{device_name = "string",
collector = "string",
base = "string",
emitter = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
body_position = EMITTER | BASE | COLLECTOR, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

pnp(
matrix = device_matrix,
device_name = "string",
collector = polygon_layer,
base = polygon_layer,
emitter = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK,
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,
processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-289
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

bulk_relationship = ENCLOSE | INTERACT, //optional


swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
collector = "string",
base = "string",
emitter = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
body_position = EMITTER | BASE | COLLECTOR, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the bipolar transistor. A device name can be reused across multiple
calls of the npn() function or pnp() function, but not across both functions, if all calls
have
❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.


❍ Equivalent settings for the schematic_devices argument.
❍ Equivalent settings for x_card argument.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-290
IC Validator Reference Manual Version N-2017.12-SP2

collector
Required. Specifies the collector layer of the transistor device. The pin name generated
by the IC Validator tool is “COLL”.

base
Required. Specifies the base layer of the transistor device. The pin name generated by
the IC Validator tool is “BASE”.

emitter
Required. Specifies the emitter layer of the transistor device. The pin name generated by
the IC Validator tool is “EMIT”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named “BULK”.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-291
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() function for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. The default is
properties = {{"area", DOUBLE, PICO}},

❍ name. Specifies the property name. See “Predefined Name Matches” in Chapter 7,
“Compare Functions Basics” of the IC Validator LVS User Guide for the names and
associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Specifies the data type of the property. The default is DOUBLE.
Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-292
IC Validator Reference Manual Version N-2017.12-SP2

the annotation file unless the write_property_to argument is explicitly


specified.
❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is AUTO.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_database() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-293
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-294
IC Validator Reference Manual Version N-2017.12-SP2

- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-28.
Table 3-28 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-295
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-28 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument (Continued)

write_property_to value Dual-hierarchy phase Treatment of processing layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-29.
Table 3-29 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-296
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-29 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted device. The default calculation is for the active area. The default
calc_bjt_properties() function is defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for more information about the utility
functions you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon.
❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-297
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, no pins can be swapped.
In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals used for comparison.
By default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the standard COLL, BASE, EMIT, and BULK
pin names, in addition to optional pin names provided in the optional_pins list
of structures argument of the device configuration function.
❍ device_name. Required. Specifies the schematic device.

❍ collector. Optional. Specifies the collector terminal of the device. The default is
"COLL".

❍ base. Optional. Specifies the base terminal of the device. The default is "BASE".

❍ emitter. Optional. Specifies the emitter terminal of the device. The default is "EMIT".

❍ optional_pins. Optional. Specifies the schematic pins that correspond to the pin
name in the optional_pins argument.
❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the npn() and pnp() functions.
If the schematic device has an optional pin that does not correspond to any pin in the
npn() and pnp() functions, that pin can be specified with the ignore_pins.
Otherwise, this optional pin produces an error during the compare operation.

x_card
Optional. Specifies if the instance name prefix is replaced. The default is false.

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-298
IC Validator Reference Manual Version N-2017.12-SP2

❍ true. Replaces the default instance name prefix for the layout extracted device with
an X-card. This option facilitates the use of SPICE SUBCKT models to represent
devices in simulation.
❍ false. The default instance name prefix for the layout extracted device is not
replaced.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() function. See “Flexible
Netlisting Utility Functions” on page 4-110 for more information.

body_position
Optional. Specifies the body layer of the bipolar transistor. The default is EMITTER.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

unique_identifier
Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the strings are valid and
unique. (The IC Validator tool does not check values to ensure that they are unique.) The
default is an empty string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-299
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” on page 4-114 for more information.

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
matrix = init_device_matrix(cdb1);

npn(
matrix,

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-300
IC Validator Reference Manual Version N-2017.12-SP2

device_name = "npn1",
emitter = emitter,
base = base,
collector = collector
);

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

See Also
np() and pn()
nmos() and pmos()

Chapter 3: Runset Functions: J - Z


npn() and pnp() 3-301
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

oasis_library()
The oasis_library() function defines an OASIS file name and returns a file handle to be
used by the output_library argument of the write_oasis() function.
Limitation:
The oasis_library() function cannot be called more than one time with the same file
argument. The result, however, can be used in more than one write_oasis() function,
in which case the file is overwritten.

Syntax
oasis_library(
file = "string"
);

Returns
oasis_library_handle

Arguments
file
Required. OASIS file name. See the write_oasis() function for more information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
write_oasis()

Chapter 3: Runset Functions: J - Z


oasis_library() 3-302
IC Validator Reference Manual Version N-2017.12-SP2

oasis_options()
The oasis_options() function specifies the behavior of the IC Validator tool when reading
an OASIS file.

Syntax
oasis_options(
duplicate_cell = REPLACE | DROP | MERGE, //optional
cell_name_map = {{search_string = "string",
replace_string = "string"},
...}, //optional
force_cell_name_case = UPPER | LOWER | MIXED, //optional
merge_references = true | false, //optional
circles = DROP | CONVERT_TO_POLYGON | ABORT, //optional
abort_path_extension_3 = true | false, //optional
generate_property_text = NONE | TOP | ALL, //optional
text = {objects = {PROPERTY_TEXT, TEXT},
properties = {integer, ...}}, //optional
named_property_map = {{name = "string",
number = integer}, ...}, //optional
replace_instance_name_characters = {{search_string = "string",
replace_string = "string"},
...} //optional
);

Returns
void

Arguments
duplicate_cell
Optional. Specifies how the duplicate cells are processed when reading multiple OASIS
input files.
❍ REPLACE. Replaces any previously read cells of the same name with the last cell read
for any duplicate cells.
❍ DROP. Does not replace the first cell read with any subsequently read cells of the
same name.
❍ MERGE. Merges all geometric data into a single cell. References, however, are further
controlled by the merge_references argument.

cell_name_map
Optional. Specifies a list that tells how cell names are remapped as data is read in. By
default, the IC Validator tool does not remap cell names.
❍ search_string. Required. Specifies the existing cell name in the input stream.

Chapter 3: Runset Functions: J - Z


oasis_options() 3-303
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ replace_string. Required. Specifies the cell name as it exists within the


IC Validator tool after the input stream is read.

force_cell_name_case
Optional. Forces the character case of cell names. The default is MIXED.
❍ UPPER. Converts all cell names to uppercase characters when the OASIS file is read.

❍ LOWER. Converts all cell names to lowercase characters when the OASIS file is read.

❍ MIXED. Maintains the character case that cell names have in the OASIS file.

merge_references
Optional. Specifies the merging of cell references when duplicate cells are found in
multiple OASIS input files.
The merge_references argument applies only when the duplicate_cell argument is
MERGE. If the duplicate_cell argument is REPLACE, the references in the last cell read
replace any previously read cells of the same name. If the duplicate_cell argument is
DROP, the references of the first cell read are used. The default is true.

❍ true. Merges cell references into existing cells when duplicate cells are found.

❍ false. Does not merge cell references into duplicate cells.

circles
Optional. Specifies the conversion of circles from the input OASIS file to polygons. The
default is CONVERT_TO_POLYGON.
❍ DROP. Does not convert circles to polygons.

❍ CONVERT_TO_POLYGON. Converts circles to 32-point polygons.

❍ ABORT. Stops the run if a circle is encountered.

abort_path_extension_3
Optional. Specifies when the run stops. When set to true, the run stops when
encountering a path with a variable extension (type 3). The default is false.

generate_property_text
Optional. Specifies if text points are generated from polygon properties in the input
library. The default is NONE.
❍ NONE. Does not generate text from properties in the input library.

❍ TOP. Generates property text only for the top cell of the design.

❍ ALL. Generates property text for all cells in the hierarchy.

Chapter 3: Runset Functions: J - Z


oasis_options() 3-304
IC Validator Reference Manual Version N-2017.12-SP2

text
Optional. Controls the reading of text from an OASIS input library for each assigned text
layer. If generate_property_text is TOP or ALL, text points are generated for polygons
with associated properties. The text is located on the polygon and has the same layer
and datatype.
Note:
This global option is overwritten by selections made in the oasis argument of the
assign_text() function.

❍ objects. Optional. Assigns the specified text types to a layer when reading an
OASIS library. The default is TEXT.
■ PROPERTY_TEXT. Assigns automatically generated text for polygons.

■ TEXT. Assigns OASIS text points from the input database.

❍ properties. Optional. Specifies the property numbers to use when objects


contains PROPERTY_TEXT. The property numbers must be in the range of 0–255,
inclusive. If this list is empty, no property text is assigned.

named_property_map
Optional. Lists the name and number pairs that support the reading of named properties
from an OASIS stream. For each pair, properties of the given name are read as
GDSII-compatible numbered properties of the given number.
❍ name. Specifies the property name.

❍ number. Specifies the number to assign to the property. The property numbers must
be in the range of 0–255, inclusive.
For example, this argument reads property “Net” onto property 2:
oasis_options(named_property_map = {"Net", 2});

replace_instance_name_characters
Optional. Lists the strings to be replaced in instance names. Neither string can use string
matching. By default, the IC Validator tool does not replace any characters.
❍ search_string. Required. Specifies the string to replace.

❍ replace_string. Required. Specifies the replacement string. An empty string ("")


results in the removal of the specified search string.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


oasis_options() 3-305
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
oasis_options (
cell_name_map = {{search_string="A", replace_string="B"},
{search_string="C", replace_string="D"}},
circles = ABORT
);

See Also
gds_options()
milkyway_options()
openaccess_options()

Chapter 3: Runset Functions: J - Z


oasis_options() 3-306
IC Validator Reference Manual Version N-2017.12-SP2

off_grid()
The off_grid() function creates squares that indicate vertices and cell placements that are
off the specified grid. This function is a cell-level operation.

Syntax
off_grid(
layer1 = data_layer,
resolution = double,
shape_size = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

resolution
Required. Specifies the resolution value for the grid check.

shape_size
Optional. Specifies the size of the output squares. The value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum value of
twice the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.
Figure 3-59 shows the effect of the resolution argument setting with the off_grid()
function.
Figure 3-59 resolution Argument Example With the off_grid() Function

layer1

0.005 0.010 Result

Chapter 3: Runset Functions: J - Z


off_grid() 3-307
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-60 shows the effect of the shape_size argument setting with the off_grid()
function.
Figure 3-60 shape_size Argument Example With the off_grid() Function

layer1

Result

0.05 0.02

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
metal_grid_error = off_grid(metal, 0.05);

See Also
layout_grid_options()
off_grid_xy()
snap()

Chapter 3: Runset Functions: J - Z


off_grid() 3-308
IC Validator Reference Manual Version N-2017.12-SP2

off_grid_xy()
The off_grid_xy() function supports grid checking in the x- and y-directions. It checks the
center of rectangles, polygons, and edges, as well as polygon and edge vertices.

Syntax
off_grid_xy(
layer1 = data_layer,
x_resolution = double,
y_resolution = double,
coordinates = VERTICES | CENTER,
shape_size = double, //optional
reference_layer = polygon_layer, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

x_resolution
Required. Specifies the x-coordinate resolution value for the grid check.

y_resolution
Required. Specifies the y-coordinate resolution value for the grid check.

coordinates
Optional. Specifies how to check for off-grid coordinates. The default is VERTICES.
❍ VERTICES. Checks edge or polygon vertices.

❍ CENTER. Checks the center of edges or polygons.

shape_size
Optional. Specifies the size of the output squares. The value must be positive. The value
is rounded to the nearest even multiple of the internal resolution, with a minimum value
of twice the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.

Chapter 3: Runset Functions: J - Z


off_grid_xy() 3-309
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reference_layer
Optional. Specifies the reference layer. Only polygons specified by the layer1 argument
that are enclosed by the reference layer are processed. The reference for grid checking
is the lower-left coordinate of the extent of each reference layer polygon.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example, centers must lie on the contact layer x- and y-grid points that are
50 nm in the x-direction and 20 nm in the y-direction.
off_grid_xy(
contact,
x_resolution = 0.05,
y_resolution = 0.02,
coordinates = CENTER,
shape_size = 0.01
);

See Also
off_grid()

Chapter 3: Runset Functions: J - Z


off_grid_xy() 3-310
IC Validator Reference Manual Version N-2017.12-SP2

openaccess_library()
The openaccess_library() function defines an OpenAccess library definition file name
and returns a file handle to be used by the output_library argument of the
write_openaccess() function.
Limitation:
The openaccess_library() function cannot be called more than one time with the
same file argument. The result, however, can be used in more than one
write_openaccess() function.

Syntax
openaccess_library(
library_definition_file = "string"
);

Returns
openaccess_library_handle

Arguments
library_definition_file
Required. OpenAccess file name. See the write_openaccess() function for more
information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
write_openaccess()

Chapter 3: Runset Functions: J - Z


openaccess_library() 3-311
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

openaccess_merge_library_options()
The openaccess_merge_library_options() function specifies a mapping from the
master and reference OpenAccess libraries to replacement GDSII and OASIS libraries that
are read in with OpenAccess data at the start of a verification run. This function can be
called only one time in a runset.
You can use the -ml command-line option to override the settings in the
openaccess_merge_library_options() function. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.
For example, if cell ref1.A.layout is in the OpenAccess library, the layout view is replaced
with the GDSII or OASIS data for cell A.
When using the openaccess_merge_library_options() function, read all required GDSII
and OASIS data during an IC Validator run to emulate the complete mask data set for a
designated top-level structure. The lower-level cells in the replacement data are not
permanently merged into the input OpenAccess library. Data is temporarily merged for only
this run.
Note:
The master OpenAccess library and top-level cell are identified in the runset by the
library() function. The mapping specified in the
openaccess_merge_library_options() function never looks for a replacement of the
top cell.
When using the openaccess_merge_library_options() function, you should be familiar
with OpenAccess library/cell/view triples.

Syntax
openaccess_merge_library_options(
libraries = {{library_name = "string",
view_name = "string",
replacement_libraries = {{
file = "string",
format = GDSII | OASIS,
cell_name_map = {{search_string = "string",
replace_string = "string"},
...},
layer_map_file = "string",
layout_integrity = {{db_name = "string",
missing_db = ABORT | IGNORE,
cell_name_map =
{{search_string = "string",
replace_string = "string"},
...}},
...},
},

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-312
IC Validator Reference Manual Version N-2017.12-SP2

...},
...}},
missing_cell = ABORT | USE_OPENACCESS, //optional
report = {USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS,
DUPLICATE_CELLS}, //optional
missing_library = ABORT | CONTINUE //optional
);

Returns
void

Arguments
libraries
Required. Lists the OpenAccess and replacement libraries.
❍ library_name. Required. Specifies the OpenAccess library name. You only need to
list the OpenAccess libraries for which you want to do replacements.
❍ view_name. Optional. Specifies the OpenAccess view name for cells being replaced.
Use this option if you want to set the view name for these cells to something other
than the default view of “layout.”
❍ replacement_libraries. Required. Specifies the replacement libraries. The
IC Validator tool searches the replacement libraries in the order specified looking for
cells. The first cell found is the one used.
Note:
A GDSII or OASIS file can be gzipped. The IC Validator tool automatically detects
if a GDSII or OASIS file is gzipped.
■ file. Specifies the replacement file.

■ format. Specifies the format of the replacement libraries, GDSII or OASIS.

■ cell_name_map. Optional. Specifies a list that tells how cell names are mapped
as data is read in. Use this list when the GDSII or OASIS cell name does not
match the corresponding OpenAccess cell name. If you do not use this list to map
duplicate cell names, the IC Validator tool automatically does the mapping and
resolves all hierarchical references to the new name.
- search_string. Specifies the cell name in the GDSII or OASIS data that is
renamed.
- replace_string. Specifies the new cell name given to the cell in the GDSII or
OASIS data. This cell name is used within the IC Validator tool after the input
data is read.

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-313
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ layer_map_file. Optional. Specifies the layer mapping file for this set of libraries.
You can map GDSII or OASIS data to OpenAccess data. The file can be a basic
layer/datatype mapping or OpenAccess format:
- Basic format:
DestinationLayer[:DestinationDatatype] SrcLayer[:SrcDatatype]

All the geometric and text data on SrcLayer and SrcDatatype are moved to
DestinationLayer and DestinationDatatype.
When using this format, the layer/datatype are mapped from the replacement
GDSII or OASIS file directly to the runset assigns.
- OpenAccess format:
#layer_name layerPurpose layerNo. layerDataType
layer1 layerPurpose1 layerNo1 layerDataType1
layer2 layerPurpose2 layerNo2 layerDataType2
...

All the geometric and text data on layerNo1 and layerDataType1 in GDSII and
OASIS are moved to the OpenAccess layer1 layer and the layerPurpose1
purpose.
When using this format, the layer/datatype are mapped from the replacement
GDSII or OASIS file to OpenAccess layer/purpose in the main OpenAccess
database. If a layer mapping file is provide in the openaccess_options()
function, then that mapping is applied after the mapping specified with this
layer_map_file option to map from OpenAccess layer/purpose to the runset
layer/datatype.
See the layer_mapping_file argument of the openaccess_options()
function for more information.
■ layout_integrity. Optional. Specifies the list of layout integrity databases that
the IC Validator tool uses for layout integrity checking. By default, the IC Validator
tool does not check layout integrity.
Note:
The layout integrity database applies to cells in the replacement library.
OpenAccess cells are checked against global layout integrity options, if any.
- db_name. Required. Specifies the path to the layout integrity database.

- missing_db. Optional. Specifies the behavior when the IC Validator tool does
not find the specified layout integrity database. The default is ABORT.
¤ ABORT. Specifies that the run stops when the layout integrity database is not
found.

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-314
IC Validator Reference Manual Version N-2017.12-SP2

¤ IGNORE. Continues the IC Validator run if the tool cannot find the layout
integrity database.
- cell_name_map. Optional. Specifies a list that tells how cell names are
remapped as data is read from the layout integrity databases (LIDBs). By
default, the IC Validator tool does not remap cell names.
¤ search_string. Required. Specifies the existing cell name in the input
LIDB.
¤ replace_string. Required. Specifies the cell name used for layout
integrity checking within IC Validator.

missing_cell
Optional. Specifies the action taken if a cell is missing from the replacement file. The
default is ABORT.
❍ ABORT. Specifies if the run stops when a cell in the OpenAccess library is not found in
a replacement file.
❍ USE_OPENACCESS. If a cell in the OpenAccess library is not found in a GDSII or OASIS
replacement file, then the tool uses the OpenAccess cell that is supposed to be
replaced.

report
Optional. Specifies the information written to the openaccess_merge_library_options.log
file. The categories you can specify for output are USED_CELLS, UNUSED_CELLS,
MISSING_CELLS, LAYER_MAPS, and DUPLICATE_CELLS. The default output reports all
categories. This file is in the run_details directory.

missing_library
Optional. Specifies the IC Validator action when the replacement library does not exist.
The default is ABORT.
❍ ABORT. issues an error message when a replacement library does not exist.

❍ CONTINUE. Behaves as if the replacement library was never specified and continues
running.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-315
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information about
licensing.

Example
The openaccess_merge_library_options() function allows the direct replacement of
child cells in an OpenAccess library with cells from GDSII and OASIS files. When each cell
is replaced, the OpenAccess library, view, and name (L,C,V) triplets are used to find a cell in
GDSII and OASIS files.
For example, in the OpenAccess library:
main.top.layout
• main.sub_blockA.layout
❍ main.f_block.layout
■ stdlib.gateA.layout
■ stdlib.gateB.layout
• main.sub_blockB.layout
❍ vendorA.ipblockA.frame
■ vendorA.ipblockA.layout
• main.sub_blockC.layout
❍ vendorB.ipblock1.layout
❍ vendorC.ipblock2.layout
❍ vendorD.ipblock3.layout

To replace library references and the layout view with layout data from file an OASIS file:
openaccess_merge_library_options(
libraries = {
{library_name = "vendorA",
view_name = "layout",
replacement_libraries = {
{file = "vendorA.oasis", format = OASIS }
}}
{library_name = "vendorB",
view_name = "layout",
replacement_libraries = {
{file = "vendorB.oas", format = OASIS}
}}

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-316
IC Validator Reference Manual Version N-2017.12-SP2

{library_name = "vendorC",
view_name = "layout",
replacement_libraries = {
{file = "vendor_c.gds", format = GDSII}
}}
}
);

The replacements are:


• vendorA.ipblockA.layout with ipblockA from vendorA.oasis
• vendorB.ipblockB.layout with ipblockB from vendorB.oas
• vendorC.ipblockC.layout with ipblockC from vendor_c.gds

If you have multiple GDSII and OASIS files, then use multiple replacement_libraries
entries. The precedence follows the order in the specified replacement libraries. For
example,
openaccess_merge_library_options(
libraries = {
{library_name = "stdlib",
view_name = "layout",
replacement_libraries = {
{file = "stdcells_group1.gds", format = GDSII },
{file = "stdcells_rev2_3.oas", format = OASIS}
}}
}
);

See Also
assign()
assign_openaccess()
assign_openaccess_edge()
assign_openaccess_text()
milkyway_merge_library_options()
ndm_merge_library_options()
openaccess_options()

Chapter 3: Runset Functions: J - Z


openaccess_merge_library_options() 3-317
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

openaccess_options()
The openaccess_options() function specifies the behavior of the IC Validator tool when
reading OpenAccess input.
In an OpenAccess database, every cell is specified by library, cell, and view. When reading
OpenAccess, each library/cell/view triplet is read into a unique cell in IC Validator. In the
IC Validator output files, the naming scheme for cells is
• The name of any cell that is part of the original library and view of the top cell is used
unmodified.
• The name of any cell with a different library or view name from the top cell is renamed as
library.cell.view
• If this new name conflicts with an existing cell in the design or if it is very long, the
IC Validator tool ensures a unique name by further renaming.

Layer-purpose names for blockage and boundary OpenAccess objects are not predefined.
To extract polygon layer objects from the OpenAccess oaBoundary and oaBlockage family
objects, use the pr_boundary, area_blockage, area_halo, area_boundary,
layer_blockage, and layer_halo arguments. If you do not specify these objects in the
openaccess_options() function, they are not read by the IC Validator tool.

Syntax
openaccess_options(
view =
"string", //optional
layer_mapping_file =
"string", //optional
generate_pin_text =
NONE | TOP | ALL, //optional
pin_text =
NET_NAME | PIN_NAME | REASSIGN,
//optional
replace_instance_name_characters = {{search_string = "string",
replace_string = "string"},
...}, //optional
generate_polygon_text = NONE | TOP | ALL, //optional
merged_view_list = {{view = "string",
cell = "string",
library = "string",
outdated_views = ABORT | USE | DISCARD},
...}, //optional
pr_boundary = {layer_name = "string",
purpose_name = "string"}, //optional
area_blockage = {layer_name = "string",
purpose_name = "string"}, //optional
area_halo = {layer_name = "string",
purpose_name = "string"}, //optional
area_boundary = {layer_name = "string",
purpose_name = "string"}, //optional
layer_blockage = "string", //optional

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-318
IC Validator Reference Manual Version N-2017.12-SP2

layer_halo = "string", //optional


cell_mapping_file = "string", //optional
generate_terminal_text = NONE | TOP | ALL, //optional
terminal_text = NET_NAME | TERMINAL_NAME, //optional
triplet_naming = LIBRARIES_AND_VIEWS | CONFLICT, //optional
instance_names = KEEP | DISCARD, //optional
object_mapping_file = "string" //optional
);

Returns
void

Arguments
view
Optional. Specifies the view to be read for the top cell of the design. The default is
"layout".

layer_mapping_file
Optional. Specifies the OpenAccess layer mapping file that specifies which layer/
purpose pairs are read from the OpenAccess database and the layer/datatype numbers
onto which the pairs are read. This file is required if you use the assign(),
assign_edge(), or assign_text() functions for OpenAccess data. If an object is
mapped in the layer mapping file as well as the object mapping file, the object mapping
file takes precedence.
In the OpenAccess layer mapping file,
❍ Each mapping relation must appear on a new line.
❍ Each attribute on a line must be separated with a space.
❍ Comments are specified with a pound sign (#). All text following the pound sign on the
current line is part of the comment.
❍ If there are duplicate rows, the IC Validator tool uses the last row in the file.
The OpenAccess layer mapping file contains data columns in a table-like structure,
where each row defines the relationship between the layer/purpose pairs and the
corresponding layer/datatype numbers.
Note:
If a row contains any of the three optional OpenAccess attributes, which come after
the four required attributes, the optional attributes are ignored by IC Validator.
The format of the OpenAccess layer mapping file for shapes which have a layer name
and purpose name is:
#layer_name layerPurpose layerNo layerDataType
layer1 layerPurpose1 layerNo1 layerDataType1

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-319
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layer2 layerPurpose2 layerNo2 layerDataType2


...

The format of the OpenAccess layer mapping file for objects, which do not have a
purpose name or layer name, except for layer blockages which do have layer names is:
#layerName layerPurpose layerNo. layerDataType
#Map for PR Boundary objects
pr_boundary boundary layerNo layerDataType

#Map for Snap Boundary objects


snap boundary layerNo1 layerDataType1

#Map for Area Blockage objects


PinBorder blockage layerNo2 layerDataType2

#Map for Layer Blockage objects


layer_name blockage layerNo3 layerDataType3
...

The pr_boundary, snap, PinBorder, boundary, and blockage strings are literal values.
You cannot have multiple mappings of the PR Boundary, Snap Boundary, or Area
Blockage objects.
For example, the first mapping means that nwell layer and drawing purpose are moved
to geometries and texts at layer1 and datatype0.
#layerName layerPurpose layerNo layerDataType
nwell drawing 1 0
diff drawing 2 0
pplus drawing 4 0
nplus drawing 5 0
pr_boundary boundary 6 0
snap boundary 7 0
PinBorder blockage 8 0
M1 blockage 9 0
M2 blockage 10 0

In addition to these basic mappings, the IC Validator tool supports some standard
extensions to the layer mapping file for layer mapping based on multiple patterning color
attributes. These extensions appear as extra columns after the layer and datatype
numbers, and they have one of two formats:
mask1Color|mask2Color|mask3Color [locked|unlocked]

color:<colorname> [locked|unlocked]

Example using color names:

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-320
IC Validator Reference Manual Version N-2017.12-SP2

metal1 drawing 10 0
metal1 drawing 10 1 color:red
metal1 drawing 10 2 color:green locked
metal1 drawing 10 3 color:green unlocked
metal1 drawing 10 4 color:same

Example using mask color keywords:


metal1 drawing 10 0
metal1 drawing 10 1 mask1Color
metal1 drawing 10 2 mask2Color locked
metal1 drawing 10 3 mask2Color unlocked

The IC Validator tool also supports a standard extension to the OpenAccess layer
mapping file, which can map cut layer rectangles of specified dimensions to certain layer
and datatype numbers. The cut size specification comes after the layer and datatype
numbers (and typically after the optional “material” specifier), and it has the following
format:
cutsize:<width>:<height>

where width and height are floating point numbers representing the dimensions of the
rectangle to be mapped in microns. For example:
via1 drawing 51 0 cut
via1 drawing 51 1 cut cutsize:0.05:0.05
via1 drawing 51 2 cut cutsize:0.10:0.20

This example maps via1 rectangles that are 0.05x0.05 microns to layer 51:1, via1
rectangles that are 0.10x0.20 microns to layer 51:2, and all other via1 rectangles to layer
51:0.

generate_pin_text
Optional. Specifies if pin text is generated. In some design styles, generating net names
from pin text can create false text-open error messages. To avoid these error messages,
set this argument to NONE or TOP. The default is ALL.
❍ NONE. Specifies that net names of pins in the hierarchy are not converted to text.

❍ TOP. Specifies that only net names of pins in the top-level cell are converted to text.

❍ ALL. Specifies that net names of all pins in the hierarchy are converted to text.

pin_text
Optional. Determines where to get generated text for pins in the OpenAccess database.
The default is NET_NAME.
❍ NET_NAME. Reads texts from the net names of the pins.

❍ PIN_NAME. Reads texts from the pin names.

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-321
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ REASSIGN. Reads texts from both the pin name and net name for pins. If the pin name
and net name are the same, the IC Validator tool uses the pin name. If the pin name
and net name are different, the IC Validator tool uses the net name and tags the text
as an assigned net for hierarchical net assignment.
Setting pin_text(REASSIGN) has the same functionality as manually entering cell
and net names in the reassign_text argument of the text_options() function.
Using pin_text(REASSIGN) provides automated assignments when you are using
an OpenAccess database.

replace_instance_name_characters
Optional. Lists the strings to be replaced in instance names. Neither string can use string
matching. By default, the IC Validator tool does not replace any characters.
❍ search_string. Required. Specifies the string to replace.

❍ replace_string. Required. Specifies the replacement string. An empty string ("")


results in the removal of the specified search string.

generate_polygon_text
Optional. Specifies if text points are generated from polygon net names. In some design
styles, generating text from polygon net names can create false text-open error
messages. To avoid these error messages, set this argument to NONE or TOP. The default
is NONE.
❍ NONE. Specifies that net names of polygons in the hierarchy are not converted to text.

❍ TOP. Specifies that only net names of polygons in the top-level cell are converted to
text.
❍ ALL. Specifies that net names of all polygons in the hierarchy are converted to text.

merged_view_list
Optional. Specifies a list used for the merging of views. These views of the top cell of the
design are read and merged into the top cell. By default, the IC Validator tool does not
merge any views.
❍ view. Required. Specifies the view to be merged.

❍ cell. Optional. Specifies the cell to be merged. The default is the top cell name of the
design.
❍ library. Optional. Specifies the library name for the view to be merged. The default
is the top library of the design.
❍ outdated_views. Optional. Specifies the behavior of the function if the timestamp of
the merged view is older than the timestamp of the top cell view. The default is
ABORT.

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-322
IC Validator Reference Manual Version N-2017.12-SP2

■ ABORT. If the merged view is older than the top cell view, the run stops.

■ USE. If the merged view is older than the top cell view, the newer view is read and
the run continues.
■ DISCARD. If the merged view is older than the top cell view, the merged view is not
read, and the run continues.

pr_boundary
Optional. Specifies the layer name and purpose name pair of an oaPRBoundary object.
To read an oaPRBoundary object, both the layer and purpose must be specified.
Polygons representing the oaPRBoundary are created on the specified layer and
purpose. These polygons can be used in an assign() or assign_openaccess()
function.
For example,
openaccess_options(pr_boundary = {"prBoundary","prBoundary"});

Using assign_openaccess():
prBoundary = assign_openaccess({{{"prBoundary"},{"prBoundary"}}});

Using assign() with the OpenAccess layer mapping file having


prBoundary prBoundary 50 0

The runset has


prBoundary = assign({{50,0}});

area_blockage
Optional. Specifies the layer name and purpose name pair of an oaAreaBlockage object.
This object is a blockage not associated with a specific layer. To read oaAreaBlockage
objects, both the layer and purpose must be specified. Polygons representing the
oaAreaBlockage are created on the specified layer. These polygons can be used in an
assign() or assign_openaccess() function.
Note:
You can filter by blockage type in the assign() and assign_openaccess()
functions.
For example,
openaccess_options(area_blockage = {"area","blockage"});

Using assign_openaccess():
area_blockages = assign_openaccess({{{"area"},{"blockage"}}});
placement_blockages = assign_openaccess(
{{{"area"},{"blockage"}}},
blockage_types = {PLACEMENT_BLOCKAGE}

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-323
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

Using assign() with the OpenAccess layer mapping file having:


area blockage 100 100

The runset has:


area_blockages = assign({{100,100}});
placement_blockages = assign({{100,100}},
openaccess = {blockage_types = {PLACEMENT_BLOCKAGE}}
);

area_halo
Optional. Specifies the layer name and purpose name pair of an oaAreaHalo object. This
object is an oversized ring around an instance or PRBoundary. To read oaAreaHalo
objects, both the layer and purpose must be specified. The object around which the halo
is created must be rectilinear. The halo specifies offsets for top, left, right, and bottom.
Polygons representing the oaAreaHalo are created on the specified layer and purpose.
These polygons can be used in an assign() or assign_openaccess() function.
Note:
You can filter by blockage type in the assign() and assign_openaccess()
functions.
For example,
openaccess_options(area_halo = {"area","halo"});

Using assign_openaccess():
area_halo = assign_openaccess({{{"area"},{"halo"}}});

Using assign() with the OpenAccess layer mapping file having:


area halo 100 200

The runset has


area_halo = assign({{100,200}});

area_boundary
Optional. Specifies the layer name and purpose name pair of an oaAreaBoundary object.
To read an oaAreaBoundary object, both the layer and purpose must be specified.
Polygons representing the oaAreaBoundary are created on the specified layer and
purpose. These polygons can be used in an assign() or assign_openaccess()
function.
Note:
You can filter area boundaries by name in the assign() and assign_openaccess()
functions.

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-324
IC Validator Reference Manual Version N-2017.12-SP2

For example,
openaccess_options(area_boundary = {"area","boundary"});

Using assign_openaccess():
all_area_boundaries = assign_openaccess({{{"area"},{"boundary"}}});

Using assign() with the OpenAccess layer mapping file having:


area boundary 51 0

The runset has


all_area_boundaries = assign({{51,0}});

layer_blockage
Optional. Specifies the purpose name of an oaLayerBlockage object, which is needed
because an oaLayerBlockage is associated with a given layer but not a specific purpose.
Polygons representing the oaLayerBlockage objects are created on their associated
layer and the purpose given here. These polygons can be used in an assign() or
assign_openaccess() function.
Note:
You can filter by blockage type in the assign() and assign_openaccess()
functions.
For example, to read metal1 fill blockages:
openaccess_options(layer_blockage = "blockage");

Using the assign_openaccess() function:


m1_fill_blockage = assign_openaccess(
{{{"m1"},{"blockage"}}},
blockage_types = {FILL_BLOCKAGE}
);

Using the assign() function with the OpenAccess layer mapping file having:
M1 drawing 17 0
M1 blockage 17 100

The runset has:


M1_fill_blockage = assign(
{{17,100}},
openaccess = {blockage_types = {FILL_BLOCKAGE}}
);

layer_halo
Optional. Specifies the purpose name of an oaLayerHalo object. This object is an
oversized ring around an instance or PRBoundary. The purpose name is needed

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-325
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

because an oaLayerHalo is associated with a given layer, but not a specific purpose.
Polygons representing the oaLayerHalo objects are created on their associated layer
and the purpose specified here. These polygons can be used in an assign() or
assign_openaccess() function.
Note:
You can filter by blockage type in the assign() and assign_openaccess()
functions.
For example,
openaccess_options(layer_halo = "halo");

Using the assign_openaccess() function:


m1_halo = assign_openaccess({{{"m1"},{"halo"}}});

Using the assign() function with the OpenAccess layer mapping file having:
m1 drawing 17 0
m1 halo 17 200

The runset has


m1_halo = assign({{17,200}});

cell_mapping_file
Optional. Specifies the OpenAccess cell mapping file that allows you to specify the
unique name IC Validator tool uses for a given library/cell/view triplet. The IC Validator
tool creates a unique name for each library/cell/view triplet read from an OpenAccess
layout. If the IC Validator tool encounters a library/cell/view triplet in the OpenAccess
database that is not defined in the cell mapping file, it uses the default cell naming
scheme described in the openaccess_options() description.
In the OpenAccess cell mapping file:
❍ Each mapping relation must appear on a new line.
❍ Each attribute on a line must be separated with a space.
❍ Comments are specified with a pound sign (#). All text following the pound sign on the
current line is part of the comment.
❍ The IC Validator tool issues an error message if the same unique name is used more
than one time.
The OpenAccess cell mapping file contains data columns in a table-like structure. Each
row defines the relationship between a library/cell/view triplet and the unique cell name
used by the IC Validator tool for that triplet. The format of the OpenAccess cell mapping
file is:
# library cell view unique_name

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-326
IC Validator Reference Manual Version N-2017.12-SP2

library1 cell1 view1 unique1


library2 cell2 view2 unique2
library3 cell1 view3 unique3

For example,
# library cell view unique_name
mainlib inv layout inv
reflib1 inv layout inv_ref1
mainlib buf layout buf

The -oa_cell_map command-line option overrides this name. See the Command-Line
Options section in the “IC Validator Basics” chapter of the IC Validator User Guide for
more information.

generate_terminal_text
Optional. Specifies which terminal names are converted to text. In some design styles,
generating text from terminal names can create false text-open error messages. To avoid
these error messages, set this argument to NONE or TOP. The default is NONE.
❍ NONE. Does not convert terminal names of polygons in the hierarchy to text.

❍ TOP. Converts only terminal names of polygons in the top-level cell to text.

❍ ALL. Converts terminal names of all polygons in the hierarchy to text.

terminal_text
Optional. Selects the type of text used for instance terminals in the OpenAccess
database. To use the text, set the objects argument to TERMINAL_TEXT in the
OpenAccess assign function. The default is NET_NAME.
❍ NET_NAME. Reads texts from the net names of the pins.

❍ TERMINAL_NAME. Reads texts from the terminals.

triplet_naming
Optional. Specifies how the IC Validator tool determines a unique name for OpenAccess
cells. The default is LIBRARIES_AND_VIEWS.
❍ LIBRARIES_AND_VIEWS. Renames cells in libraries or views except those of the top
cell of the design with the full triplet, library.cell.view. Any remaining conflicts in cell
names are resolved by appending a suffix.
❍ CONFLICT. Uses the original cell name as the unique cell name in the IC Validator
tool. Conflicting cell names are renamed using the full triplet, library.cell.view. Any
remaining conflicts in cell names are resolved by appending a suffix.

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-327
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

instance_names
Optional. Specifies whether instance names from the input layout should be retained by
the IC Validator tool. The instance names can be used for netlisting or possibly reused
for the output layout. Retaining instance names could result in extra processing time
during the reading of the input layout. The default is KEEP.
❍ KEEP. Retains instance names from the input layout.

❍ DISCARD. Does not retain instance names from the input layout.

object_mapping_file
Optional. Specifies the OpenAccess object mapping file. If an object is mapped in the
layer mapping file as well as the object mapping file, the object mapping file takes
precedence.
The format of the OpenAccess object mapping file is:
#objectType subType layerNo layerDataType
#Map for PR Boundary objects
Boundary PR layerNo layerDataType

#Map for Snap Boundary objects


Boundary Snap layerNo1 layerDataType1

#Map for Area Blockage objects


Boundary Area layerNo2 layerDataType2

#Map for wiring Layer Blockage objects


layerBlockage Wiring layerNo3 layerDataType3

#Map for fill Layer Blockage objects


layerBlockage fill layerNo4 layerDataType4

#Map for slot Layer Blockage objects


layerBlockage slot layerNo5 layerDataType5

#Map for pin Layer Blockage objects


layerBlockage pin layerNo6 layerDataType6

#Map for feedthru Layer Blockage objects


layerBlockage feedthru layerNo7 layerDataType7

#Map for screen Layer Blockage objects


layerBlockage screen layerNo8 layerDataType8

#Map for viaRounting Layer Blockage objects


layerBlockage viaRouting layerNo9 layerDataType9

#Map for routing Layer Blockage objects


layerBlockage routing layerNo10 layerDataType10
...

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-328
IC Validator Reference Manual Version N-2017.12-SP2

The Boundary, layerBlockage, and all subType strings are literal values.
You cannot have multiple mappings of the Boundary or Layer Blockage objects.
For example, the first mapping means that nwell layer and drawing purpose are moved
to geometries and texts at layer1 and datatype0.
#objectType subType layerNo layerDataType
nwell drawing 1 0
diff drawing 2 0
pplus drawing 4 0
nplus drawing 5 0
Boundary boundary 6 0
PR boundary 7 0
Snap blockage 8 0
Area blockage 9 0
wiring blockage 10 0
fill blockage 11 0
slot blockage 12 0
pin blockage 13 0
feedthru blockage 14 0
screen blockage 15 0
viarouting blockage 16 0
routing blockage 17 0

The -oa_object_map command-line option overrides this name. See the


Command-Line Options section in the “IC Validator Basics” chapter of the IC Validator
User Guide for more information.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
Here are examples of using the OpenAccess functions.
Using OpenAccess with native assigns:
#include <icv.rh>
library(
format=OPENACCESS,
library_definition_file="./lib.defs", // the lib.defs file contains
// the actual paths to all
// libraries in the database
library_name="MYLIB"
);

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-329
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

openaccess_options(
view="layout"
);

l1 = assign_openaccess({{{"metal1"},{"drawing"}}});
l2 = assign_openaccess({{{"poly"},{"drawing"}}});
all_metal1 = assign_openaccess({{{"metal1"}}});
metal1_rect = assign_openaccess({{{"metal1"}}},
objects={RECTANGLE});

Using numeric assigns with an OpenAccess layer mapping file:


#include <icv.rh>

library(
format=OPENACCESS,
library_definition_file="./lib.defs",
library_name="MYLIB"
);

openaccess_options(
view="layout",
layer_mapping_file="layer1.map"
);

l1 = assign({{==1},{==0}});
l2 = assign({{==2},{==0}});
all_metal1 = assign({{==1}});
metal1_rect = assign({{==1}},openaccess={objects={RECTANGLE}});

In the following example, different types of text are assigned to different layers: m1_pin_text
gets the pin names, m1_text gets the actual text objects, m1_net_text gets the polygon net
names, and m1_all_text gets all text points.
openaccess_options(
generate_pin_text = ALL,
pin_text = PIN_NAME,
generate_polygon_text = ALL
);

m1 = assign_openaccess({{{"metal1"},{"drawing"}}});
m1_pin_text = assign_openaccess_text({{{"metal1","drawing"}}},
objects={PIN_TEXT});
m1_text = assign_openaccess_text({{{"metal1","drawing"}}},
objects={TEXT,TEXT_DISPLAY});
m1_net_text = assign_openaccess_text({{{"metal1","drawing"}}},
objects={POLYGON_TEXT});
// Default is all text objects
m1_all_text = assign_openaccess_text({{{"metal1","drawing"}}});

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-330
IC Validator Reference Manual Version N-2017.12-SP2

See Also
assign()
assign_openaccess()
assign_openaccess_edge()
assign_openaccess_text()
gds_options()
milkyway_options()
oasis_options()

Chapter 3: Runset Functions: J - Z


openaccess_options() 3-331
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

optional_pattern_markers()
The optional_pattern_markers() function returns the optional pattern markers for
matched patterns. The optional pattern markers are attached to patterns during pattern
library creation and might vary in size and location when retrieved, as compared with the
original pattern markers in the pattern library. This function is useful for post
pattern-matching processes, such as error filtering and passing the user-defined fixing
guidance to the router for the ADR flow.

Syntax
optional_pattern_markers(
pattern_library_name = "string",
pattern_marker = marker_layer,
pattern_library_handle = NULL_PATTERN_LIBRARY //optional
);

Returns
list of polygon layers

Arguments
pattern_library_name
Required. Specifies the pattern library used for performing pattern matching with the
pattern_match() function.

pattern_marker
Required. Specifies the marker layer, which is returned by the pattern_match()
function.

pattern_library_handle
Optional. Specifies the handle of the pattern library that is used for performing pattern
matching with the pattern_match() function. The handle must be previously defined by
the pattern_library() function.
Note:
The pattern_library_name argument has backward compatible support for
previous pattern matching runset. The pattern_library_handle argument is
selected if defined.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


optional_pattern_markers() 3-332
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
In the following example, the optional_pattern_markers() function is applied to separate
level-one hotspots from level-two hotspots following pattern matching. See the
pattern_learn() function for how to use the optional_pattern_markers argument to
attach hotspot severity information during pattern library creation.
// define pattern library handle
TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "./pattern_lib"
);

// generate pattern marker layer


matched_pattern = pattern_match(
pattern_library_name = " ",
pattern_library_handle = TEST_CASE_Mx,
pattern_layers = {Metal2}
);

//retrieve optional marker layers


hotspot_level_marker = optional_pattern_markers(
pattern_library_name = " ",
pattern_library_name = TEST_CASE_Mx,
pattern_marker = matched_pattern
);

// generate level one and level two hotspot markers


hotspot_level_one = hotspot_level_marker[0];
hotspot_level_two = hotspot_level_marker[1];

See Also
marker_merge()
pattern_learn()
pattern_library_lock()
pattern_library_read()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


optional_pattern_markers() 3-333
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

or()
The or() function creates a polygon that represents the union of the polygons on the two
input layers.
Note:
If you want to OR a list of layers, use the or_list() function.

Syntax
or(
layer1 = polygon_layer,
layer2 = polygon_layer,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


or() 3-334
IC Validator Reference Manual Version N-2017.12-SP2

Example
In Figure 3-61, layerA is merged with layerB.
Result = layerA or layerB;

Figure 3-61 or() Function Example

layerA

layerB

Result

See Also
and()
and_edge()
and()
not()
not_edge()
or_edge()
or_list()
xor()
xor_edge()

Chapter 3: Runset Functions: J - Z


or() 3-335
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

or_edge()
The or_edge() function combines the edges of the two input layers. Redundant data points
are removed.

Syntax
or_edge(
layer1 = edge_layer,
layer2 = edge_layer,
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

layer2
Required. Specifies the edge layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


or_edge() 3-336
IC Validator Reference Manual Version N-2017.12-SP2

Examples
Figure 3-62 shows an example of the or_edge() function.
Figure 3-62 or_edge() Function Example

in_layer1

in_layer2

out_layer

Figure 3-62 shows how the edges are output from the or_edge() function.
out_layer = or_edge(in_layer1, in_layer2);

Figure 3-63 or_edge() Function Output Edges Example


Input Output

layer1 and layer1 and edges edges


layer2 edges layer2 edges merged remain
in same in opposing separate
direction directions

in_layer1 in_layer2 out_layer


(edge layer) (edge layer) (edge layer)

See Also
and()
and_edge()
not()
not_edge()
or()
or_edge()
or_error()
or_list()

Chapter 3: Runset Functions: J - Z


or_edge() 3-337
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xor()
xor_edge()

Chapter 3: Runset Functions: J - Z


or_edge() 3-338
IC Validator Reference Manual Version N-2017.12-SP2

or_error()
The or_error() function combines the errors of the two input layers. Redundant data
points are removed.

Syntax
or_error(
layer1 = error_layer,
layer2 = error_layer,
name = "layer_label" //optional
);

Returns
error layer

Arguments
layer1
Required. Specifies an error layer.

layer2
Required. Specifies an error layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


or_error() 3-339
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
and()
and_edge()
not()
not_edge()
or()
or_edge()
or_list()
xor()
xor_edge()

Chapter 3: Runset Functions: J - Z


or_error() 3-340
IC Validator Reference Manual Version N-2017.12-SP2

or_list()
The or_list() function creates a polygon that represents the union of the polygons on the
input layers.

Syntax
or_list(
layers = {polygon_layer, ...},
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layers
Required. Specifies a list of polygon layers.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
See the or() function for an example of an OR operation.

Chapter 3: Runset Functions: J - Z


or_list() 3-341
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
and()
and_edge()
and()
not()
not_edge()
or()
or_edge()
or_error()
or_list()
xor()
xor_edge()

Chapter 3: Runset Functions: J - Z


or_list() 3-342
IC Validator Reference Manual Version N-2017.12-SP2

outside() and not_outside()


The outside() function selects layer1 polygons that do not share any of their active area
with layer2 polygons. Outside touching is considered outside. The complement of this
function is the not_outside() function.

Syntax
outside(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_outside(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


outside() and not_outside() 3-343
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 3-64, all polygons from layer2 that are outside layer1 are selected.
Result = layer1 outside layer2

Figure 3-64 outside() Function Example


layer1

layer2

Result

In Figure 3-65, all polygons from layer2 that are not outside layer1 are selected.
Result = layer1 not_outside layer2

Figure 3-65 not_outside() Function Example

layer1

layer2

Result

See Also
inside() and not_inside()
inside_touching_edge() and not_inside_touching_edge()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()

Chapter 3: Runset Functions: J - Z


outside() and not_outside() 3-344
IC Validator Reference Manual Version N-2017.12-SP2

touching() and not_touching()


touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


outside() and not_outside() 3-345
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

outside_point_touching_edge() and
not_outside_point_touching_edge()
The outside_point_touching_edge() function selects entire layer1 edges that have the
specified outside point touching with layer2 edges. The complement of this function is the
not_outside_touching_edge() function.

See the Description section of the inside_point_touching_edge() function for more


information.

Syntax
outside_point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_outside_point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 3: Runset Functions: J - Z


outside_point_touching_edge() and not_outside_point_touching_edge() 3-346
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

layer2 is a Polygon Layer


In Figure 3-66 the red edges are all outside point touch because there is an outside line
touch with the point touch polygon that includes the endpoint of point touch. Therefore, the
output includes all of the red edges.
Figure 3-66 outside_point_touching_edge() Function Example 1
layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

In Figure 3-67 the red edges are all outside point touch because they are outside polygon
near point touch. Note that for the rightmost red edge, the inside/outside line touch
elsewhere is irrelevant to the type of point touch.

Chapter 3: Runset Functions: J - Z


outside_point_touching_edge() and not_outside_point_touching_edge() 3-347
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-67 outside_point_touching_edge() Function Example 2

layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

layer2 is an Edge Layer


In Figure 3-68 the output includes all blue edges.
Figure 3-68 output_point_touching_edge() Function Example 3

layer2 (edge layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

See Also
inside() and not_inside()
inside_point_touching_edge() and not_inside_point_touching_edge()
outside() and not_outside()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
point_touching_edge() and not_point_touching_edge()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


outside_point_touching_edge() and not_outside_point_touching_edge() 3-348
IC Validator Reference Manual Version N-2017.12-SP2

outside_touching() and not_outside_touching()


The outside_touching() function selects polygons that do not share active area with
layer2 and outside touch a layer2 polygon. The complement of this function is the
not_outside_touching() function.

Syntax
outside_touching(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
point_touch = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

not_outside_touching(
layer1 = polygon_layer,
layer2 = polygon_layer,
count = integerconstraint, //optional
point_touch = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
count_parity = ALL | ODD | EVEN, //optional
count_by = SHAPE | NET, //optional
connect_sequence = connect_database, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the polygon layer against which the layer1 layer is checked.

count
Optional. Specifies the number of layer2 polygons that must touch layer1. See
“Constraints” on page A-4 for more information. The default is >0.

Chapter 3: Runset Functions: J - Z


outside_touching() and not_outside_touching() 3-349
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-69 shows the effect of the count argument settings with the
outside_touching() function.

Figure 3-69 count Argument Example With the outside_touching() Function

layer1

layer2

Result
count=1 count>=2

Figure 3-70 shows the effect of the count argument settings with the
not_outside_touching() function.

Figure 3-70 count Argument Example With the not_outside_touching() Function

layer1

layer2

Result
count=1 count>=2

point_touch
Optional. Specifies whether point touch is considered a touch. The default is false.
Figure 3-71 shows the effect of the point_touch argument settings with the
outside_touching() function.

Figure 3-71 point_touch Argument Example With the outside_touching() Function

layer1

layer2

Result
point_touch = point_touch =
false true

Figure 3-72 shows the effect of the point_touch argument settings with the
not_outside_touching() function.

Chapter 3: Runset Functions: J - Z


outside_touching() and not_outside_touching() 3-350
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-72 point_touch Argument Example With the not_outside_touching() Function

layer1

layer2

Result
point_touch = point_touch =
false true

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

count_parity
Optional. Specifies the parity of the number of layer2 polygons that must touch layer1
polygons. The default is ALL.
❍ EVEN. Specifies that the layer1 polygons must have an even number of interactions
with layer2 data.
❍ ODD. Specifies that the layer1 polygons must have an odd number of interactions
with layer2 data.
❍ ALL. Does not check the parity based on the number of interactions.
The count argument can be used with the count_parity argument. For example, when
count = [4, 9] and count_parity is EVEN, the layer1 polygons that interact with four,
six, or eight layer2 polygons are selected.

count_by
Optional. Provides selection by net feature. The default is SHAPE.
❍ NET. Selects a layer1 polygon if it touches with distinct nets on the layer2 layer the
number of times specified by the count argument.
❍ SHAPE. Selects a layer1 polygon if it touches the layer2 layer the number of times
specified by the count argument.
Refer to Figure 3-73 for the following examples.

Chapter 3: Runset Functions: J - Z


outside_touching() and not_outside_touching() 3-351
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-73 count_by Argument Example

L1

L2

The following commands select polygon B of layer L1.


❍ Nets 1, 2, and 3 are not counted because only outside touching polygons are
considered. Net 4 is counted one time because the count_by argument is NET.
Therefore, polygon B meets the count=1 restriction.
outside_touching (L1, L2, count==1, count_by=NET,
connect_sequence=cdb);

❍ Nets 1, 2, and 3 are not counted because only outside touching polygons are
considered. Net 4 is counted two times. Therefore, polygon B meets the count=2
restriction.
outside_touching (L1, L2, count==2);

connect_sequence
Optional. Specifies the connect database that has the layer2 connection. The database
is used when the count_by argument is NET.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


outside_touching() and not_outside_touching() 3-352
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In the following example,
• In Output 1, all data from layerB that touches layerA is selected.
Result = layerB outside_touching layerA;

• In Output 2, all data from layerB that touches only one polygon of layerA is selected.
Result = layerB outside_touching layerA(count = 1);

Input layerA

layerB

Result
Output 1 Output 2

See Also
inside() and not_inside()
inside_touching_edge() and not_inside_touching_edge()
outside() and not_outside()
outside_touching_edge() and not_outside_touching_edge()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


outside_touching() and not_outside_touching() 3-353
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

outside_touching_edge() and not_outside_touching_edge()


The outside_touching_edge() function selects entire layer1 edges that have any
outside coincidence with layer2 edges. The complement of this function is the
not_outside_touching_edge() function.

Syntax
outside_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

not_outside_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

count
Optional: Specifies the number of touches that must occur for an edge to be selected. If
layer2 is a polygon layer, polygons are counted. If layer2 is an edge layer, individual
edges are counted. See “Constraints” on page A-4 for more information. The default
is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.

Chapter 3: Runset Functions: J - Z


outside_touching_edge() and not_outside_touching_edge() 3-354
IC Validator Reference Manual Version N-2017.12-SP2

❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

coincidence
Optional. Specifies the types of coincidence that cause a selection. The default is EDGE.
❍ EDGE. Only edge coincidence causes an edge to be selected.

❍ ENDPOINT. Only those edges that have no edge coincidence, but have collinear,
endpoint, coincidence are selected.
❍ ALL. All types of coincidence cause an edge to be selected.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In Figure 3-74, both layers are polygon layers: magenta is layer1; red is layer2. The
results are the same if either layer is an edge layer.
green = magenta outside_touching_edge red;

Chapter 3: Runset Functions: J - Z


outside_touching_edge() and not_outside_touching_edge() 3-355
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-74 outside_touching_edge() Function Example


Input Output

See Also
inside() and not_inside()
inside_touching_edge() and not_inside_touching_edge()
outside() and not_outside()
outside_touching() and not_outside_touching()
touching() and not_touching()
touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


outside_touching_edge() and not_outside_touching_edge() 3-356
IC Validator Reference Manual Version N-2017.12-SP2

partition()
The partition() function breaks complex shapes into regular rectangles. The IC Validator
tool finds the maximum number of largest rectangles in the region being partitioned. The
output partitions interact by no more than a point touch.

Syntax
partition(
layer1 = polygon_layer,
min_space = double, //optional
min_width = double, //optional
output_type = {HORIZONTAL, VERTICAL, SQUARE}, //optional
name = "layer_label", //optional
orientation = NONE | HORIZONTAL | VERTICAL, //optional
min_space_x = double, //optional
min_space_y = double, //optional
min_height = double //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer that is partitioned.

min_space
Optional. Specifies the minimum spacing between partitions. The value must be greater
than 0.0. If the min_space_x and min_space_y arguments are specified, the min_space
argument is ignored. If the orientation argument specifies a horizontal or vertical
orientation, the min_space value applies only the direction that is perpendicular to the
orientation.

min_width
Optional. Specifies the minimum length of a partition side. Each side of a rectangular
partition must have a length of at least the minimum width value. The default is 0.0.
When you specify a min_width value greater than 0.0, the IC Validator tool partitions the
input layer based on the shapes specified by the output_type argument. If you do not
specify a min_width value, the tool partitions the layer based on the direction specified
by the orientation argument and ignores the output_type argument.

Chapter 3: Runset Functions: J - Z


partition() 3-357
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

output_type
Optional. Specifies the shapes of partitions selected for output. The default is
{HORIZONTAL, VERTICAL, SQUARE}, which means that all rectangles are selected
irrespective of their aspect ratio. At least one option must be selected; that is, an empty
list is not allowed.
❍ HORIZONTAL. Selects partitions with a dimension in the x-direction that is greater than
the dimension in the y-direction.
❍ VERTICAL. Selects partitions with a dimension in the y-direction that is greater than
the dimension in the x-direction.
❍ SQUARE. Selects partitions with a dimension in the x-direction that equals the
dimension in the y-direction.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

orientation
Optional. Controls the direction in which the IC Validator tool partitions the input layer.
The default is NONE.
When you specify a horizontal or vertical orientation, the min_space value applies only
to the direction that is perpendicular to the orientation.
❍ NONE. Partitions the layer based on the shapes specified by the output_type
argument.
❍ HORIZONTAL. Partitions the layer in the x-direction along the horizontal edges.

❍ VERTICAL. Partitions the layer in the y-direction along the vertical edges.

min_space_x
Optional. Specifies the minimum spacing between partitions in the x-direction. The value
must be greater than 0.0. If the min_space_x and min_space_y arguments are
specified, the min_space argument is ignored.

min_space_y
Optional. Specifies the minimum spacing between partitions in the y-direction. The value
must be greater than 0.0. If the min_space_x and min_space_y arguments are
specified, the min_space argument is ignored.

Chapter 3: Runset Functions: J - Z


partition() 3-358
IC Validator Reference Manual Version N-2017.12-SP2

min_height
Optional. Specifies the minimum height of each partition. The value must be greater than
0.0 and can be used only when the min_width argument is specified.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the following example, all polygons on the input layer, in_layer, are broken into regular
rectangles. The partitions are spaced apart by 0.01 m. The smallest allowed partition is a
square with a side of 0.05 m.
rect_layer = partition(in_layer, min_space = 0.01, min_width = 0.05);

Figure 3-75 partition() Function Example

0.01 m

rect_layer

in_layer

In the following example, all the square partitions in addition to rectangles that have a
dimension in the x-direction greater than the dimension in the y-direction are selected.
rect_layer = partition(in_layer, min_space = 0.01, min_width = 0.05,
output_type = {HORIZONTAL, SQUARE});

Chapter 3: Runset Functions: J - Z


partition() 3-359
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
aspect_ratio() and not_aspect_ratio()
rectangles() and not_rectangles()

Chapter 3: Runset Functions: J - Z


partition() 3-360
IC Validator Reference Manual Version N-2017.12-SP2

partition_chip()
The partition_chip() function breaks the extents of the top-level cell into a specified
number of horizontal or vertical partitions with equal areas of the input polygon layer.

Syntax
partition_chip(
layer = polygon_layer,
max_partitions = integer,
overlap = double,
min_partition_size = double,
orientation = HORIZONTAL | VERTICAL,
exclude_layers = {polygon_layer, ...} //optional
);

Returns
list of polygon layers

Arguments
layer
Required. Specifies the polygon layer used to calculate the area considered for
partitioning.

max_partitions
Required. Specifies the number of partitions. This value must be greater than 1.

overlap
Required. Specifies the size of the overlap between adjacent partitions. This value
should always be greater than 0 (zero).

min_partition_size
Required. Specifies the minimum size of the partition (the partition height if orientation
= HORIZONTAL or the partition width if orientation = VERTICAL).

orientation
Required. Specifies the direction of the partition. The default is HORIZONTAL.

exclude_layers
Optional. Specifies a list of polygon layers to exclude from the layer argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


partition_chip() 3-361
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following example shows horizontal partitioning to four partitions from the bottom up.
The return list consists of four layers, with one layer per partition.

Adjacent partitions overlap


by the overlap value

The following example shows horizontal partitioning with exclude layers.

Chapter 3: Runset Functions: J - Z


partition_chip() 3-362
IC Validator Reference Manual Version N-2017.12-SP2

Adjacent partitions overlap


by the overlap value

If the resulting layer is empty after removing all of the exclude_layers from layer, the
partition_chip() function returns an empty list.

The partition_chip() function can return fewer layers in the output list than the number
specified in max_partitions argument.
For example, if the size of the remaining fillable region (green rectangle) after removing the
exclude layers (white rectangles) is H < (count * min_slice_size), the number of layers
that the function returns depends on the values of H and the min_partition_size
argument.

Chapter 3: Runset Functions: J - Z


partition_chip() 3-363
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_learn()
The pattern_learn() function creates a new pattern library or updates an existing pattern
library with source patterns. It can be called multiple times within a runset.
For pattern library generation, two types of results are reported to the
cell.LAYOUT_ERRORS file: patterns that fail to be registered to the pattern library due to
invalid input and patterns that are successfully registered to the pattern library. For more
information about types of invalid input, see the descriptions of the pattern_layers,
pattern_marker, edge_tolerance_layers, pattern_type, and pattern_extent
arguments.

Syntax
pattern_learn(
pattern_library_handle =
pattern_library_handle,
pattern_layers =
{polygon_layer, ...},
pattern_marker =
polygon_layer,
pattern_text_id =
text_layer, //optional
pattern_extent =
polygon_layer, //optional
ignore_region_layers =
{polygon_layer, ...}, //optional
edge_tolerance_layers =
{polygon_layer, ...}, //optional
match_ambit =
{left=double, bottom=double,
right=double, top=double}, //optional
ambit_mode = PM_MARKER_CENTER | PM_MARKER_EDGE,
//optional
pattern_fuzziness = PM_EXACT | PM_EDGE_UNIFORM |
PM_EDGE_NONUNIFORM, //optional
uniform_fuzzy_size = double, //optional
edge_jog_size = double, //optional
pattern_reflect = true | false, //optional
pattern_rotate = true | false //optional
ignore_extra_polygons = true | false, //optional
output_pattern_xml = true | false, //optional
pattern_prefix = "string", //optional
anchor = FIRST_PATTERN_LAYER | AUTO, //optional
optional_pattern_markers = {polygon_layer, ...}, //optional
pattern_text_properties = {{property_name = "string",
property_text_layer = text_layer,
property_type = STRING | DOUBLE},
...}, //optional
pattern_type = PM_TWO_DIMENSIONAL | PM_ONE_DIMENSIONAL,
//optional
optional_region_layers = {polygon_layer, ...}, //optional
pattern_naming_mode = PM_NAME_SEQUENTIAL | PM_NAME_UNIQUE,
//optional
pattern_anchor_optimization = PM_ALL | PM_SIZE | PM_ANGLE |
PM_ENCLOSE | PM_CENTER, //optional
optional_pattern_marker_type = FIXED | DYNAMIC //optional
pattern_run_length = ALL | RUN_LENGTH_GE //optional
);

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-364
IC Validator Reference Manual Version N-2017.12-SP2

Returns
marker layer or error result
The marker layer is an unmerged layer under the geometry layer. The marker layer can be
converted to a polygon layer using the marker_merge() function.

Arguments
pattern_library_handle
Required. Specifies the handle of a pattern library to be created or updated. The handle
must be previously defined by the pattern_library() function.
The pattern_learn() function writes pattern information to a binary file named
pattern.dat. It also records pattern library creation parameters and pattern statistics to a
text file named log. Both files are saved to the directory defined by the
pattern_library_handle argument.
Note:
When you add new patterns to an existing pattern library, the new pattern library must
have the same set of arguments and values as the existing pattern library. Otherwise,
a runtime error occurs.
The pattern_library_handle argument replaces the previous
pattern_library_name argument for better usability, but it breaks the backward
compatibility of the previous runset, which is defined using the
pattern_library_name argument.

pattern_layers
Required. Lists the input layers. A multiple-layer source pattern, such as a pattern
consisting of a metal layer and a via layer, is supported. A maximum of 32 layers can be
specified.
Limitation:
Do not use different layer names for the same pattern layer in the pattern layer list.
This can cause the IC Validator run to stop.

pattern_marker
Required. Specifies the layer that contains polygons placed on each source pattern. The
pattern marker specifies the location of interest, such as the pinch and bridge locations
of a lithographic hotspot or a DRC violation location. This marker is output to report the
match between the pattern in the pattern library and the input design captured by the
pattern_match() function.

pattern_text_id
Optional. Specifies the text layer that contains the text ID of the source patterns. To be
recognized, the coordinates of the text ID must be located inside the pattern marker. If

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-365
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

the text ID is not defined, or defined but resides outside of the pattern marker, a
tool-generated text ID is attached to each pattern registered to the pattern library. The
pattern_match() function reports the pattern ID to the error database and
cell.LAYOUT_ERRORS file.
If the same text ID is used for different source patterns, the text ID of the corresponding
registered patterns in the pattern library is suffixed by a sequence number to resolve the
name conflict. For example, if hs_1 is used for three different source patterns, the three
patterns are named hs_1, hs_1_1, and hs_1_2.
If a different text ID is used for the same source pattern, only one text ID is kept for the
registered pattern in the pattern library.

pattern_extent
Optional. Specifies the layer that contains polygons that define the bounding region of a
source pattern. The pattern layers inside the bounding region are processed and
registered to the pattern library. When the pattern_extent argument is set, the
match_ambit argument is ignored. Pattern extent can also be defined using the
match_ambit and ambit_mode arguments.
The following situations can cause the corresponding source pattern to not be added to
the pattern library and be reported in the cell.LAYOUT_ERRORS file as invalid input.
❍ Nonrectangular pattern extent.
❍ Unpaired pattern marker and pattern extent, such as a pattern extent interacting with
no pattern marker or more than one pattern marker.
Figure 3-76 illustrates the use of the pattern_extent argument to define a pattern
during pattern library creation.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-366
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-76 Defining a Pattern With the pattern_extent Argument

Note:
The pattern extent must not exceed 50 m on every side or the IC Validator tool
reports an invalid input to the cell.LAYOUT_ERRORS file.
---------------------------------------
Violation/Invalid input: pattern extent > 50 m is not supported
pattern_learn ...................................... 1 violation
found.
---------------------------------------

ignore_region_layers
Optional. Lists the input polygon layers that define areas on a source pattern excluded
from the pattern_match() function matching process.
This argument applies only when the pattern_extent argument is specified.
The restrictions for using the argument are:
❍ You must specify the ignore region layer list in the same order as the pattern layer list.
❍ The ignore region layer list must be either empty or contain the same number of
layers as the pattern layer list.
Additional restrictions for using the argument for one-dimensional pattern types are:
❍ The ignore region layer must have the same direction as the pattern layer.
❍ The ignore regions must be rectilinear polygons.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-367
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ There must be two or more true pattern layer edges inside of the pattern extent that
are not covered by the ignore region and are not on the pattern boundary.
❍ The number of the pattern layer must be one.
Figure 3-77 shows edges, including partial edges that interact with the ignore regions,
that are excluded from pattern registration during pattern library creation. Therefore, any
edge specification attached to those edges or partial edges, such as the edge tolerance,
are not registered with the pattern in the pattern library.
Figure 3-77 Defining Ignore Regions on a Source Pattern

Avoid overlapping valid edge tolerance with the ignore region area. As shown in
Figure 3-78, the edge tolerance of the right vertical edge of the source pattern is lost after
pattern registration. This edge tolerance loss can cause missing patterns during pattern
matching.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-368
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-78 Defining Ignore Regions on a Source Pattern With Edge Tolerance.

edge_tolerance_layers
Optional. Lists the input layers that contain polygons which define the edge placement
variation of each pattern edge. This argument applies only when the
pattern_fuzziness argument is PM_EDGE_NONUNIFORM. Any pattern on a design with
all edges falling inside of the edge tolerance layers is reported as a match by the
pattern_match() function.
This argument supports both one-dimensional and two-dimensional pattern types.
The restrictions for using the argument are:
❍ You must specify the edge tolerance layer list in the same order as in the pattern layer
list.
❍ The edge tolerance layer list must be either empty or contain the same number of
layers as that of the pattern layer list.
❍ The following incorrect edge tolerance definitions are reported as invalid input and
can cause the corresponding source pattern to not be registered to the pattern library.
■ Any edge of a pattern layer interacting with any nonrectangular polygon on the
corresponding edge tolerance layer.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-369
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ Any edge of a pattern layer interacting with more than one polygon on the
corresponding edge tolerance layer.
■ More than one edge of a pattern layer interacting with the same polygon on the
corresponding edge tolerance layer.
■ For a one-dimensional pattern type, the edge tolerance layer must be
one-dimensional and on the same direction as the pattern layer.
Figure 3-79 illustrates the use of the edge_tolerance_layers argument to define a
pattern during pattern library creation.
Figure 3-79 Defining a Pattern With the edge_tolerance_layers Argument

match_ambit
Optional. Specifies the extensions for generating the pattern extent based on the pattern
marker in the direction order of left, bottom, right, and top. The default is 0. Set
match_ambit to >0 when the ambit_mode argument is PM_MARKER_CENTER. See
Figure 3-80 for an example of how to use the match_ambit argument with the
ambit_mode argument to define a pattern extent during pattern library creation. The
pattern extent can also be specified using the pattern_extent argument.
This argument supports only the two-dimensional pattern type.
Note:
The x-direction extensions can be different from the y-direction extensions, but
extensions in the same direction must be the same.

ambit_mode
Optional. Specifies the starting point for the ambit extension specified in the
match_ambit argument. The default is PM_MARKER_CENTER.

❍ PM_MARKER_CENTER. Starts from the center of the pattern marker.

❍ PM_MARKER_EDGE. Starts from each of the four edges of the pattern marker.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-370
IC Validator Reference Manual Version N-2017.12-SP2

This argument supports only the two-dimensional pattern type.


Figure 3-80 shows how to use the match_ambit and ambit_mode arguments to define a
pattern during pattern library creation.
Figure 3-80 Defining a Pattern With the match_ambit and ambit_mode Arguments

pattern_fuzziness
Optional. Specifies the pattern matching mode of the pattern library. The
pattern_match() function performs the pattern matching. The default is PM_EXACT.

❍ PM_EXACT. Reports as a match when all pattern edges of an input pattern fall exactly
on the edges of a library pattern.
This matching mode supports both one-dimensional and two-dimensional pattern
types.
❍ PM_EDGE_UNIFORM. Reports as a match when all pattern edges of an input pattern fall
within the uniform edge placement variation, as defined by the uniform_fuzzy_size
argument, of a library pattern.
This matching mode supports only the two-dimensional pattern type.
❍ PM_EDGE_NONUNIFORM. Reports as a match when all pattern edges of an input pattern
fall within the edge placement variations, as defined by the edge_tolerance_layers
argument, of a library pattern.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-371
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This matching mode supports both one-dimensional and two-dimensional pattern


types. For the one-dimensional pattern type, the PM_EDGE_NONUNIFORM option
supports the following two applications:
■ Fixed pattern extent with edge tolerance being defined by the
edge_tolerance_layers argument, as shown in Figure 3-81.
The restrictions for using the application are:
- Edge tolerance can only be defined with the edge_tolerance_layers
argument.
- Does not generate the pattern.xml file, and therefore does not support defining
the edge tolerance and edge-to-edge constraint in the pattern.xml file.
Figure 3-81 One-Dimensional Fixed Pattern Boundary Matching Mode

■ Flexible pattern extent with the edge-to-edge constraint being defined in the
generated pattern.xml file, as shown in Figure 3-82.
The restrictions for using the application are:
- The edge_tolerance_layers argument must be set to empty layers. This
enables the IC Validator tool to set the output_pattern_xml argument to
TRUE.

- User-defined edge-to-edge constraint in the generated pattern.xml file after


pattern library creation. The edge-to-edge constraint can only be defined
between neighboring edges.
For example, the pattern in Figure 3-82 must be specified in the pattern.xml file
as follows:

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-372
IC Validator Reference Manual Version N-2017.12-SP2

</Pattern>
<Pattern key="0003AM000NwQ0M3rh00gwwAz" text_id="pattern_6">
<Edge2Edge>{e6-e8=[60,80]}</Edge2Edge>
</Pattern>

- Edges next to the pattern extent must be fixed edges.


- Edges that are not specified with the edge-to-edge constraint are treated as
fixed edges.
- Edge tolerance definition in the generated pattern.xml file is not supported.
Figure 3-82 One-Dimensional Flexible Pattern Boundary Matching Mode

uniform_fuzzy_size
Optional. Specifies the uniform placement variation for edges of all pattern layers. The
variation is applied on both sides of each edge. This argument is applied only when the
pattern_fuzziness argument is PM_EDGE_UNIFORM. The default is 0.
This argument supports only the two-dimensional pattern type.

edge_jog_size
Optional. Specifies the minimum jog size. This jog size is used only when the
pattern_fuzziness argument is PM_EDGE_NONUNIFORM. A jog smaller than the edge
jog size is smoothed before pattern matching occurs. The two adjacent edges of the jog
are aligned to the longer one. The default is 0.

pattern_reflect
Optional. Specifies whether to match reflected patterns during pattern matching. The
default is true, which allows the following reflections:
❍ Zero orientation (R0)
❍ Flipped in x-direction (FX)

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-373
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ Flipped in y-direction (FY)


❍ Flipped in both x- and y-directions (R180)
These reflections are shown in Figure 3-83.
Figure 3-83 Pattern Reflections
R0 FX FY R180

Note:
In the IC Validator tool,
■ The pattern orientation is reported in the LAYOUT_ERRORS file.
■ The zero orientation (R0) might not be the original orientation of the input source
patterns.
■ The original orientation of an input source pattern is kept as zero orientation only
when the pattern_reflect argument is false and the pattern_rotate
argument is false.
■ To match an orientation that is not supported by the pattern_learn() function,
generate a pattern library with this specific orientation and set both the
pattern_reflect and pattern_rotate arguments to false.

pattern_rotate
Optional. Specifies whether to match rotated patterns during pattern matching. The
default is true, which allows the following rotations:
❍ Zero orientation (R0)
❍ Flipped in x-direction (FX)
❍ Flipped in y-direction (FY)
❍ Rotated 180 degrees (R180)
❍ Rotated 90 degrees (R90)
❍ Rotated 270 degrees (R270)
❍ Rotated 90 degrees and flipped in y-direction (R90FY)
❍ Rotated 90 degrees and flipped in x-direction (R90FX)
These rotations are shown in Figure 3-84.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-374
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-84 Pattern Rotations


R0 FX FY R180

R90 R270 R90FY R90FX

See the note in the pattern_reflect argument for more information.

ignore_extra_polygons
Optional. Excludes polygons that do not exist in the pattern library from matching with the
pattern_match() function when set to true. The default is false.
Note:
The ignore_region_layers and the ignore_extra_polygons arguments are
mutually exclusive.
Figure 3-85 shows that a matched pattern when the ignore_extra_polygons argument
is true.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-375
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-85 Matched Pattern With the ignore_extra_polygons Argument

output_pattern_xml
Optional. Specifies whether to generate the pattern.xml file when the
pattern_fuzziness argument is PM_EDGE_NONUNIFORM. The default is false.
The pattern.xml file contains the edge placement variations, which are defined by the
edge_tolerance_layers argument, in XML format. In the generated pattern.xml file,
you can
❍ Add a new or modify the existing edge tolerance using the <EdgeTolerance>
element.
❍ Add definitions for edge-to-edge dimensional constraints as an additional fuzziness
specification for the existing pattern library using the <Edge2Edge> element.
❍ Specify the edge pair between the optional pattern marker edge and pattern layer
edge for enabling the optional pattern marker as a dynamic type for a
one-dimensional pattern library using the <OpmEdgePair> element.
The pattern.xml file is part of the pattern library. Changes made to the file are retained
when changes are valid and you do not change the file name.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-376
IC Validator Reference Manual Version N-2017.12-SP2

See the Examples section for more information about the format and use of the
pattern.xml file.
Note:
The pattern.xml file is not generated when the pattern_fuzziness argument is
PM_EDGE_NONUNIFORM for a fixed pattern extent application for a one-dimensional
pattern type.
Note:
The pattern.xml file is automatically generated when the pattern_fuzziness
argument is PM_EDGE_NONUNIFORM for the flexible pattern extent application for a
one-dimensional pattern type.

pattern_prefix
Optional. Specifies the prefix of the tool-generated pattern text ID when the
pattern_text_id argument is not user-defined. If the pattern_prefix argument is not
user-defined, the tool-generated pattern text ID is named with the default followed by a
sequence number, that is, pattern_1, pattern_2, and so on.
Note:
The “#” is not allowed to be used in defining the pattern prefix when the
pattern_naming_mode argument is set to PM_NAME_UNIQUE option.

anchor
Optional. Specifies how IC Validator tool selects the anchor layer when there are multiple
pattern layers for a two-dimensional pattern type. The IC Validator tool requires that the
anchor layer have at least one corner inside the pattern extent on every source pattern.
The failed source patterns are reported in the cell.LAYOUT_ERRORS file. The default is
FIRST_PATTERN_LAYER.

❍ FIRST_PATTERN_LAYER. Selects the anchor layer to be the first pattern layer specified
by the pattern_layers argument.
❍ AUTO. Automatically identifies the anchor layer among the pattern layers by starting
from the first pattern layer until it finds a layer that meets the requirement.

optional_pattern_markers
Optional. Lists the input layers that contain the polygons placed on the source patterns.
Unlike the required pattern marker, these pattern markers are optional. They are used to
define other information that a source pattern might carry, such as hotspot severity,
hotspot type, pattern extent, and user-defined fixing guidance that can be passed to the
router for fixing hotspots. These markers can be retrieved using the
optional_pattern_markers() function after the pattern_match() function in the
runset.
Optional pattern markers can be fixed or dynamic. See the
optional_pattern_marker_type argument for more information.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-377
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Optional pattern markers support both one-dimensional and two-dimensional pattern


types.
The following restriction is for one-dimensional pattern types:
❍ The optional pattern markers must be one-dimensional.
In the following example, two optional pattern marker layers are used to specify the
hotspot severity during pattern library creation.
TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "./pattern_lib"
);

level_one_hotspot = layer_one;
level_two_hotspot = layer_two;
hotspot_location = level_one_hotspot or level_two_hotspot;
pattern_learn (
pattern_library_handle = TEST_CASE_Mx,
pattern_layers = {metal},
pattern_marker = hotspot_location,
optional_pattern_markers = {level_one_hotspot, level_two_hotspot},
...
);

See the optional_pattern_markers() function for information about how to return the
hotspot severity information after pattern matching with the pattern_match() function.

pattern_text_properties
Optional. Lists the pattern properties that are attached to source pattern. A pattern
property is specified through a name, a text layer, and the type of the text layer. The text
must be placed inside the pattern marker in order for it to be recognized and attached to
the pattern library. Up to 31 properties can be specified.
❍ property_name. Specifies the property name. The name must be fewer than 64
characters. It cannot contain the characters: space, = (equal sign), and ; (semicolon).
If you specify a property name more than one time, the IC Validator tool uses one of
the specified values.
❍ property_text_layer. Specifies the text layer that contains the value of the
property. The length of the property string must be fewer than 1024 characters. See
“Text Strings” on page A-10 for information about text string rules.
❍ property_type. Specifies the data type of the property. The default is STRING.

■ STRING. Specifies the data type as string.

■ DOUBLE. Specifies the data type as double.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-378
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The property_type and property_text_layer options must agree in data type.
If not, IC Validator reports an invalid input in the cell.LAYOUT_ERRORS file.
See the Examples section for an example of defining pattern properties.

pattern_type
Optional. Specifies the dimensional type of the source pattern. Types are mutually
exclusive. The default is PM_TWO_DIMENSIONAL.
❍ PM_TWO_DIMENSIONAL. Specifies the two-dimensional pattern type.
The following restriction is applied to the two-dimensional pattern type:
■ At least one vertex of the first pattern layer of a source pattern must be within the
pattern extent if the anchor argument is the default.
❍ PM_ONE_DIMENSIONAL. Specifies the one-dimensional pattern type.
The following restrictions are applied to the one-dimensional pattern type:
■ All lines must be in the same direction, either horizontal or vertical.
■ The pattern extent must be specified with the pattern_extent argument.
■ The ignore_extra_polygons argument must be false.
■ The first pattern layer cannot be empty.
■ The jog size, which is set with the edge_jog_size argument, must be 0 (zero).
When converting a one-dimensional pattern library into a graphic format using the
pattern_library_read() function or the pdb_utility.pl script, patterns are output in
the following format:
■ Run length is used as the pattern extent.
■ The pattern marker has the same extent as the pattern extent.
■ Optional pattern markers reside the pattern extent.
Figure 3-86 shows an example of these normalizations.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-379
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-86 Converted One-Dimensional Pattern Library

optional_region_layers
Optional. Specifies a list of polygon layers that define areas on the source pattern that
are optional in the pattern_match() function matching process. Pattern layer polygons
enclosed by an optional region layer are considered to be in the same optional group. A
pattern layer polygon can belong to more than one optional group. The matched pattern
reported by the pattern_match() function can have none, one, or more pattern layer
polygons that are from the same optional group. See Figure 3-87 and Figure 3-88 for an
example.
Figure 3-87 Source Pattern for optional_region_layers Argument Example

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-380
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-88 Matched Patterns for optional_region_layers Argument Example

When using the optional_region_layers argument:


❍ A pattern must have a unique name that should be a valid input of the
pattern_text_id argument.

❍ A pattern name cannot use “_icvpmoptreg_$index”.


❍ The pattern_fuzziness argument must be PM_EXACT.
❍ The pattern_type argument must be PM_TWO_DIMENSIONAL.
❍ The ignored region layers, which are defined with ignore_region_layers
argument, cannot overlap the optional region layers.
❍ The pattern layer must be completely inside of the optional region layer for it to be
selected as optional for matching.
❍ The pattern_library_read() function does not return the optional region layers.
The converted pattern library contains all the enumerations.

pattern_naming_mode
Optional. Specifies how to name the patterns. Pattern names are reported in
LAYOUT_ERRORS file and saved in the pattern library. The default is
PM_NAME_SEQUENTIAL.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-381
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ PM_NAME_SEQUENTIAL. Specifies the tool-generated pattern names when the


pattern_text_id argument is not user-defined. The pattern is named as
{pattern_prefix}1, {pattern_prefix}2, and so on.

❍ PM_NAME_UNIQUE. Specifies that a pattern is named with a unique text string. The
name is defined by the following format:
{pattern_prefix}#string

Note:
The PM_NAME_UNIQUE option supports only the exact matching mode using the
tool-generated pattern extent for the two-dimensional pattern type for pattern
library comparison or merging. See the pattern_library_merge() and
pattern_library_compare() functions for more information.

pattern_anchor_optimization
Optional. Specifies the anchor optimization method that is applied during pattern
matching using the pattern_matching() function to filter out irrelevant anchors for
two-dimensional pattern types. The default is PM_ALL.
❍ PM_ALL. Requires that all corners are used as anchors.
Note:
Anchor optimization is performed automatically during pattern matching for
pattern libraries where
- pattern_anchor_optimization = PM_ALL

- pattern_fuzziness = PM_EDGE_NONUNIFORM

❍ PM_SIZE. Requires that all source patterns must have at least one complete rectangle
shape in the first pattern layer. The rectangle shape size is calculated during pattern
library creation. During pattern matching, only the corners of the rectangles within the
shape size are used as anchors. Other corners are filtered out. See Figure 3-89 for
an example of the PM_SIZE argument.
❍ PM_ANGLE. Requires that all source patterns must have concave corner in the first
pattern layer. During pattern matching. only concave corners are used as anchors.
Other corners are filtered out. See Figure 3-90 for an example of the PM_ANGLE
argument.
❍ PM_ENCLOSE. Requires that all source patterns have the first pattern layer as a via
layer and the other pattern layers as metal layers. The via edge is enclosed by a
metal line end that must be completely inside the pattern extent. The enclosing range
is calculated during pattern library creation. During pattern matching, only the corners
of the via edge, which is enclosed by a metal line end within the enclosing range, is
used as an anchor. Other corners are filtered out. See Figure 3-91 for an example of
the PM_ENCLOSE argument.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-382
IC Validator Reference Manual Version N-2017.12-SP2

❍ PM_CENTER. Requires that all source patterns must have at least one complete
rectangle shape in the first pattern layer. During pattern matching, only the center of
the rectangle shape within the shape-size range is used as an anchor. Corners are
filtered out. See Figure 3-92 for an example of PM_CENTER argument.
Figure 3-89 Anchor Optimization With PM_SIZE

Figure 3-90 Anchor Optimization With PM_ANGLE

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-383
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-91 Anchor Optimization With PM_ENCLOSE

Figure 3-92 Anchor Optimization With PM_CENTER

optional_pattern_marker_type
Optional. Specifies the type of optional pattern marker layers. The default is FIXED.
❍ FIXED. Specifies that the output of optional pattern markers of a matched pattern is
fixed in size and location as they are defined in the pattern library.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-384
IC Validator Reference Manual Version N-2017.12-SP2

❍ DYNAMIC. Specifies that the output of optional pattern markers of a matched pattern
can vary in size and location compared with the optional pattern markers defined in
the pattern library.
To enable DYNAMIC, the optional pattern marker must establish a certain correlation rule
with one or more pattern polygons. This correlation rule is different for one-dimensional
and two-dimensional pattern types.
The following correlation rules apply to the two-dimensional pattern type:
❍ Optional pattern markers that do not share any corner with a pattern polygon are
treated as fixed types even if the optional_pattern_marker_type is DYNAMIC. See
Figure 3-93 for output examples of fixed optional pattern markers.
❍ Optional pattern markers that share corners with one or more pattern polygons are
enabled to be dynamic when the optional_pattern_marker_type is DYNAMIC. The
shared corner of an optional pattern marker moves accordingly with its associated
pattern corner when an optional pattern marker is retrieved with the
optional_pattern_marker() function following pattern matching. See Figure 3-94
for output examples of dynamic optional pattern markers.
Figure 3-93 Fixed Optional Pattern Markers

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-385
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-94 Dynamic Optional Pattern Markers

The following correlation rules apply to the one-dimensional pattern type:


■ Optional pattern markers are correlated to pattern polygons through edges. This
edge pair correlation is defined by the user in the pattern.xml file.
■ Edge labels are generated during pattern library creation and defined by the tool
along the run length direction for both pattern edges and optional pattern marker
edges. Pattern edges on pattern boundaries are not labeled.
■ One optional pattern marker edge can only be paired with one pattern edge.
Unpaired optional pattern marker edges are treated as fixed edges.
■ When an optional pattern marker is retrieved using the
optional_pattern_marker() function, its edges shift with its paired pattern
edges by maintaining a constant distance between the edge pair that is specified
in the pattern library.
See Figure 3-95 for an edge pair correlation example.
See the Examples section for more information about the format and use of the
pattern.xml file to define the edge pair between the optional pattern marker and
the pattern polygon.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-386
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-95 Edge Pair Correlation

The following restrictions apply to the dynamic optional pattern marker:


- The pattern_fuzziness argument must be PM_EDGE_NONUNIFORM.
- The FIXED and the DYNAMIC settings are mutually exclusive for one pattern
library.
- The dynamic optional pattern markers must be rectangles, and they are limited
to 64 rectangles per pattern.
- The dynamic optional pattern markers must not interact with the pattern extent
for two-dimensional pattern types.

pattern_run_length
Optional. Specifies whether to check the run length for one-dimensional patterns during
pattern matching. The default is ALL.
❍ All. Specifies that run length is not checked. The pattern_match() function outputs
a matched pattern regardless of its run length.
❍ RUN_LENGHT_GE. Specifies run length is checked. The pattern_match() function
outputs only a matched pattern that has a run length greater than or equal to the run
length of its referenced pattern captured during pattern library creation.
See Figure 3-96 for an example of the pattern_run_length argument.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-387
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-96 Pattern Matching Using Pattern Run Length

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Examples

Example of Creating a New Pattern Library


The following example shows how the pattern_learn() function generates a new pattern
library, TEST_CASE_Mx.
#include <icv.rh>

library (
format = GDSII,
library_name = "TEST_CASE.gds",
cell = "all_patterns"
);

//report all violations


error_options (
error_limit_per_check = ERROR_LIMIT_UNLIMITED
);

//declare layers
metal : polygon_layer = assign ( {{1,0}} );
pattern_marker : polygon_layer = assign ( {{5,0}} );
pattern_text_id : text_layer = assign_text( {{6,0}} );

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-388
IC Validator Reference Manual Version N-2017.12-SP2

/* create pattern library TEST_CASE_Mx for edge-based uniform fuzzy


matching mode with each edge allowed with +- 0.005 m tolerance
violations */

//generate pattern library handle


TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "../../pattern_lib"
);

//user specified violation comments


@"total # of patterns learned";

pattern_learn (
pattern_library_handle = TEST_CASE_Mx,
pattern_layers = {metal},
pattern_marker = pattern_marker,
pattern_text_id = pattern_text_id,
match_ambit = {0.2, 0.2, 0.2, 0.2},
ambit_mode = PM_MARKER_CENTER,
pattern_fuzziness = PM_EDGE_UNIFORM,
uniform_fuzzy_size = 0.005,
edge_jog_size = 0.010,
pattern_reflect = true,
pattern_rotate = true
);

After pattern library generation is completed, the TEST_CASE_Mx pattern library directory
is written to the path defined by the PM_LIB_PATH environment variable. The
corresponding pattern library log file indicates that 12 unique patterns are added into this
pattern library:
Registered 12 new unique pattern(s); total # of unique pattern(s)=12.
Created reflected/rotated pattern(s); total # of pattern(s)=96.

The corresponding cell.LAYOUT_ERRORS file is:


LAYOUT ERRORS RESULTS: ERRORS
ERRORS
====================================================================
Library name: TEST_CASE.gds
Structure name: all_patterns
Generated by: IC Validator <platform> <release> <date>
ERROR SUMMARY
total # of patterns learned
pattern_learn ...................................... 12 violations found.
total # of patterns learned:hs_1
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_10
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_11
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_12

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-389
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_learn ...................................... 1 violation found.


total # of patterns learned:hs_2
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_3
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_4
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_5
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_6
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_7
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_8
pattern_learn ...................................... 1 violation found.
total # of patterns learned:hs_9
pattern_learn ...................................... 1 violation found.
ERROR DETAILS

---------------------------------------------------------------------------
total # of patterns learned
---------------------------------------------------------------------------
/runset/sample_match.rs:77:pattern_match
--------------------------------------------------------------------
Structure ( lower left x, y ) ( upper right x, y ) Pattern Orientation
--------------------------------------------------------------------
all_patterns (2.1510, 0.2150) (2.1680, 0.2650) hs_12 R0
all_patterns (1.1750, 2.1430) (1.2250, 2.1770) hs_8 R0
all_patterns (1.1920, 0.2150) (1.2070, 0.2650) hs_11 R0
all_patterns (0.2150, 2.1510) (0.2650, 2.1680) hs_7 R0
all_patterns (0.2320, 0.2150) (0.2480, 0.2650) hs_10 R0
all_patterns (2.1510, 3.0950) (2.1680, 3.1450) hs_6 R0
all_patterns (2.1350, 1.1920) (2.1850, 1.2090) hs_4 R0
all_patterns (1.1910, 3.0950) (1.2080, 3.1450) hs_5 R0
all_patterns (1.1830, 1.1750) (1.2160, 1.2250) hs_3 R0
all_patterns (0.2150, 3.1030) (0.2650, 3.1360) hs_1 R0
all_patterns (0.2150, 1.1920) (0.2650, 1.2080) hs_9 R0
all_patterns (2.1430, 2.1350) (2.1770, 2.1850) hs_2 R0

If no user violation comment is specified in the runset, the default violation comment,
violation, is specified in the cell.LAYOUT_ERRORS file.

Example of Using the pattern_text_properties Argument


In the following example, two pattern properties are attached to the pattern library: The first
property is named pattern_type, and its property value is specified by
pattern_type_layer with type of string. The second property is named min_cd, and its
property value is specified in pattern_cd_layer with type of double.
metal: polygon_layer = assign({{3, 0}});
pattern_marker: polygon_layer = assign({{1, 0}});
pattern_type_layer: text_layer = assign_text(
{{6, 2}}, use_exploded_text={{"*","*"}}
);
pattern_cd_layer: text_layer = assign_text(

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-390
IC Validator Reference Manual Version N-2017.12-SP2

{{6, 3}}, use_exploded_text={{"*","*"}}


);

//generate pattern library handle


TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "../../pattern_lib"
);

pattern_learn (
pattern_library_handle = TEST_CASE_Mx,
pattern_layers = {metal},
pattern_marker = pattern_marker,
pattern_text_properties = {
{"pattern_type", pattern_type_layer,STRING},
{"min_cd", pattern_cd_layer,DOUBLE}
},
...
);

To view the properties that were saved for the pattern in the pattern library, use the
pattern_library_read() function.

See the select_marker_by_double_property() and


select_marker_by_string_property() functions for information about returning the
pattern markers based on the specified property name and value pair after pattern matching.

Example of Using the pattern.xml File to Define Edge Tolerance and Edge-to-Edge
Constraints
A pattern.xml file contains the edge tolerance and edge-to edge constraint in the following
format:
<?xml version="1.0"?>
<PatternMatch unit="nm" DBU="0.5 nm">
<Pattern key="000PPo001y7b000PPo001y7b" text_id="pat_1">
<EdgeTolerance>{}</EdgeTolerance>
</Pattern>
<Pattern key="0003XL000EYQ0003XL000EYQ" text_id="pat_2">
<EdgeTolerance>{e8=[-1,5],e11=[-5,5],e4=[0,10],e12=[-8,0]}</
EdgeTolerance>
<Edge2Edge>{e8-e10=[150,150],e11-e15=[150,200],e10-e12=(140,-),
e4-e6=(-,200]}</Edge2Edge>
</Pattern>
</PatternMatch>

The information in the pattern.xml file is:


• unit. Edge tolerance and edge-to-edge constraint are defined in nm.
• DBU. Pattern library database unit.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-391
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• key. Pattern ID generated by the IC Validator tool.


• text_id. User-defined pattern text ID.
• EdgeTolerance. Edge tolerance is defined by the following format:
<edge_label>=<standard_pxl_double_range>

There can be multiple edge tolerances separated by a comma.


In this format,
❍ <edge_label>. Edge label.
❍ <standard_pxl_double_range>. Edge tolerance range is defined by the following
format:
<left_delimiter><inside_tolerance>,<outside_tolerance>
<right_delimiter>

where:
<left_delimiter>. [ denotes inclusion or ( denotes exclusion.
<right_delimiter>. ] denotes inclusion or ) denotes exclusion.
<inside_tolerance>. Nonpositive double.
<outside_tolerance>. Nonnegative double.
• Edge2Edge: Each edge-to-edge constraint is defined by the following format:
<edge_label>-<edge_label>=<e2e_double_range>

There can be multiple edge-to-edge constraints separated by a comma.


In this format,
❍ <edge_label>. Edge label.
❍ <e2e_double_range>. Edge-tolerance range is defined by the following format:
<left_delimiter><lower_limit>,<upper_limit><right_delimiter>

where:
<left_delimiter>. [ denotes inclusion or ( denotes exclusion.
<right_delimiter>. ] denotes inclusion or ) denotes exclusion.
<lower_limit>. Can be "-" or double value, where "-" represents negative infinity. For
example, e4-e6=(-, 200] defines that the distance tolerance between edge 4 and
edge 6 is equal to or less than 200 nm.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-392
IC Validator Reference Manual Version N-2017.12-SP2

<upper_limit>. Can be "-" or double value, where "-" represents positive infinity. For
example, e10-e12=(140,-) defines that the distance between edge 10 and edge 12 is
greater than 140 nm.

The following restrictions apply to the pattern.xml file:


• Multiple edge-tolerance specifications for the same edge label of the same pattern are
not allowed.
• The edge-to-edge constraint can be applied only to a pair of horizontal or vertical edges
in which at least one edge has a defined edge tolerance.
• The edge-to-edge constraint does not apply to edges that overlap the pattern extent.
• Any modification to the pattern.xml file other than to the edge tolerance and
edge-to-edge constraints is not allowed.
• Redundant specifications are not allowed for the same pattern. For example, if <e1-e2>
is defined for a pattern, <e2-e1> is considered as a redundant definition.
• A pattern should not be over constrained. A simple example is shown in Figure 3-97.
Figure 3-97 Over Constrained Example

Figure 3-98 shows part the graphical view of pattern_8. The corresponding description in
the pattern.xml file is:
<Pattern key="0003XL000EYQ0003XL000EYQ" text_id="pattern_8">
<EdgeTolerance>{e11=[-20,20],e6=[-20,40],e17=[-30,30]}</EdgeTolerance>

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-393
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

</Pattern>

Figure 3-98 Edge Tolerance and Edge Label Example

Figure 3-99 shows how pattern matching interprets the edge-to-edge constraint with the
following description in the pattern.xml file. The edge-to-edge constraint is calculated based
on the x-coordinates when both edges are vertical or based on the y-coordinates when both
edges are horizontal edges. The corresponding description in pattern.xml is
<Pattern key="adcdefg" text_id="pattern_6">
<Edge2Edge>{e5-e4=[-40,20]}</Edge2Edge>
</Pattern>

Figure 3-99 Edge-to-Edge Constraint

Example of Using the pattern.xml File to Define the Edge Pair between the Optional
Pattern Marker and Pattern Layer
A pattern.xml file supports the defining of the edge pair between the optional pattern marker
and the pattern layer for enabling a dynamic optional pattern marker for a one-dimensional
pattern type.
Figure 3-100 shows the graphical view of pattern_3, which defines edge tolerances and the
optional pattern marker layer. The optional pattern marker edge, opm.e8, is paired with
pattern edge, e6; and the other edge, opm.e10, is paired with pattern edge, e8.

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-394
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-100 Edge Pair Between Optional Pattern Marker and Pattern Layer

The corresponding description in the pattern.xml file is:


<?xml version="1.0"?>
<PatternMatch unit="nm" DBU="0.5nm">
</Pattern>
<Pattern key="000XNa000_C41QAZRs1kGUzY" text_id="pattern_3">
<OpmEdgePair>{{opm.e8,e6},{opm.e10,e8}}</OpmEdgePair>
</Pattern>
</PatternMatch>

The information in this pattern.xml file is:


• OpmEdgePair. The edge pair between optional pattern marker and pattern layer is
defined by the following format:
<opm edge label, pattern edge label>

Multiple edge pairs can be separated by a comma for one pattern. The edge labels are
generated by the IC Validator tool during pattern library creation. You define the
correlation pair in the pattern.xml file using the converted pattern library.

See Also
marker_merge()
optional_pattern_markers()
pattern_library_lock()
pattern_library_read()
pattern_match()

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-395
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_options()
select_marker_by_double_property()
select_marker_by_string_property()

Chapter 3: Runset Functions: J - Z


pattern_learn() 3-396
IC Validator Reference Manual Version N-2017.12-SP2

pattern_library()
The pattern_library() function defines the name and path of a pattern library and returns
a handle to be used by the pattern_library_handle argument of all the pattern matching
functions.

Syntax
pattern_library(
library_name = "string",
library_path = "string"
);

Returns
pattern_library_handle

Arguments
library_name
Required. Specifies the pattern library name.

library_path
Required. Specifies the pattern library path.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
The following runset example shows how the pattern_library() function can be used in
a runset that has different pattern matching function calls.

Chapter 3: Runset Functions: J - Z


pattern_library() 3-397
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

#include <icv.rh>
//define input layout for source hotspot patterns
library (
format = GDSII,
library_name = "TOP.gds",
cell = "TOP"
);

error_options (
error_limit_per_check = ERROR_LIMIT_UNLIMITED
);

//assign layers
pattern_layer1 : polygon_layer = assign ( {{3,0}} );
pattern_layer2 : polygon_layer = assign ( {{4,0}} );
pattern_marker : polygon_layer = assign ( {{1,0}} );
pattern_text_id : text_layer = assign_text( {{1,1}}, use_exploded_text =
{ {"*"}, {"*"}} );
pattern_extent : polygon_layer = assign ( {{2,0}} );
edge_tolerance1 : polygon_layer = assign ( {{3,2}} );
edge_tolerance2 : polygon_layer = assign ( {{4,2}} );
optional_markers : list of polygon_layer = {pattern_extent,
pattern_marker};

error_list : list of write_error_map_s = {};

//define pattern library creation parameters


pattern_fuzziness : pattern_fuzzy_e = PM_EDGE_NONUNIFORM;
pattern_reflect : boolean = true;
pattern_rotate : boolean = true;

//create pattern library


M1_V0_lv2 = pattern_library (
library_name = "M1_V0_lv2",
library_path = "./pattern_lib"
);

learn_violation @= {
@"pattern_learn result";
pattern_learn (
pattern_library_handle = M1_V0_lv2,
pattern_layers = {pattern_layer2, pattern_layer1},
pattern_marker = pattern_marker,
pattern_text_id = pattern_text_id,
optional_pattern_markers = optional_markers,
pattern_extent = pattern_extent,
edge_tolerance_layers =
{edge_tolerance2,edge_tolerance1},
pattern_fuzziness = pattern_fuzziness,
pattern_anchor_optimization = PM_ENCLOSE,
pattern_reflect = pattern_reflect,
pattern_rotate = pattern_rotate
);

Chapter 3: Runset Functions: J - Z


pattern_library() 3-398
IC Validator Reference Manual Version N-2017.12-SP2

};

error_list.push_back({learn_violation,{0,0}});

match_violation @= {
@"pattern match result";
pattern_match (
pattern_library_handle = M1_V0_lv2,
pattern_library_name = " ",
pattern_layers = {pattern_layer2, pattern_layer1}
);
};

error_list.push_back({match_violation,{1,0}});

//for debugging
output_lib=gds_library("out.gds");
write_gds(
output_library=output_lib,
errors=error_list
);

See Also
optional_pattern_markers()
pattern_learn()
pattern_library_read()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_library() 3-399
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_library_compare()
The pattern_library_compare() function compares two pattern libraries and outputs a
text report. The ASCII file handle is defined using the fopen() function before calling this
function. This function applies only to the pattern libraries generated when the
pattern_naming_mode argument of the pattern_learn() function is PM_NAME_UNIQUE.

When you use the pattern_library_compare() function:


• A dummy GDSII or OASIS file is required as input. See the Example section for an
example of defining a dummy file.
• A dummy ASSIGN section is required in the runset. See the Example section for an
example of a dummy ASSIGN section.

The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_compare() function without executing a runset and
without using a dummy GDSII file. See the Example section for how to run the script.

Syntax
pattern_library_compare(
pattern_library1 = pattern_library_handle,
pattern_library2 = pattern_library_handle,
compare_report = ascii_file_handle
);

Returns
void

Arguments
pattern_library1
Required. Specifies the first pattern library to be compared with the second pattern
library. The handle must be previously defined by the pattern_library() function.

pattern_library2
Required. Specifies the second pattern library to be compared with the first pattern
library. The handle must be previously defined by the pattern_library() function.

compare_report
Required. Specifies the ASCII file for the compare results.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


pattern_library_compare() 3-400
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example

Example 1
The following runset example shows how the pattern_library_compare() function
compares pattern library M1_V1_1 with pattern library M1_V1_2.
#include <icv.rh>
library (
format = GDSII,
library_name = "TOP.gds",
cell = "TOP"
);

//assign layers
dummy_layer : ldt_range_s = {0};
foo = assign(dummy_layer);

M1_V1_1 = pattern_library (
library_name = "M1_V1_1",
library_path = "../pattern_lib"
);

M1_V1_2 = pattern_library (
library_name = "M1_V1_2",
library_path = "../pattern_lib"
);
report = fopen (
file = "compare_report"
);

pattern_library_compare (
pattern_library1 = M1_V1_1,
pattern_library2 = M1_V1_2,
compare_report = report
);

The output report file has the following format:

Chapter 3: Runset Functions: J - Z


pattern_library_compare() 3-401
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

*******Overview*********

Pattern # in M1_V1_1: 281


Pattern # in M1_V1_2: 351
Common Pattern #: 170
M1_V1_1 only pattern #: 111
M1_V1_2 only pattern #: 181

*******Common Patterns*******

pat#001w0x004BtY1_RCFL2_EcFx
pat#000jOs00183i0bdjMC2Q_1@O
pat#000xeW002V4U1dh4hH1x1oqG
pat#001tIl004JhP3qj2ly1RYRpN
pat#0011zE002lYs2ixOMx0e9HI0
pat#002MMb004G@c0zO@a@1@7lcO
……

*******Common Patterns with different name*******

*******Patterns in pattern_library_input1 ONLY*******

pat#000KQS001HAE0ah_lD3RcopT
pat#000WNQ002AtR0t6PTj1TyJ2B
pat#0015No002BuA3DKq@y2FffnV
pat#0007S4000kE10tJ3ab1hYa6v
pat#000a5H001KNp0Laiiz0SmE7B
……

*******Patterns in pattern_library_input2 ONLY*******

pat#001fUM002@pe30CRhO3Kdcu6
pat#000PjS3__rNn2njNMh2JGW_z
pat#000VYV000ce036apkl0@SxSS
pat#001OpZ002ogk1m3ie30Yk4v1
pat#002MXw001rtF1L6fr32T6MsK
pat#001EGe0021ii1ZFIoT028duP
pat#000L5Q000kPD0nFhbQ1cwS5j
……

*******Common Patterns with different marker*******

*******Common Patterns with different marker & different name*******

Example 2
The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_compare() function without executing a runset and
without a dummy GDSII file. The general usage is
pdb_utility.pl -compare -i1 <plib1> -i2 <plib2> -not -common -list

Chapter 3: Runset Functions: J - Z


pattern_library_compare() 3-402
IC Validator Reference Manual Version N-2017.12-SP2

The following script performs the pattern library compare in Example 1.


$ICV_HOME_DIR/contrib/pdb_utility.pl -compare -i1
../pattern_lib/M1_V1_1 -i2 ../pattern_lib/M1_V1_2 -not -common -list

See Also
optional_pattern_markers()
pattern_learn()
pattern_library_read()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_library_compare() 3-403
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_library_lock()
The pattern_library_lock() function adds read and write protection to a pattern library.
A locked pattern library is neither accessible by the pattern_learn() function for adding
new patterns nor by the pattern_library_read() function for converting it to a graphical
format file.
The pattern_library_lock() function cannot reverse the locking process. The locked
pattern library is then delivered to the end user.
When you use the pattern_library_lock() function:
• A dummy GDSII or OASIS file is required as input. See the Example section for an
example of defining a dummy file.
• A dummy ASSIGN section is required in the runset. See the Example section for an
example of a dummy ASSIGN section.

The pdb_utility.pl script, which is in the contrib directory, lets you perform the functionality of
the pattern_library_lock() function without executing a runset and without a dummy
GDSII file. See the pdb_utility.pl script for information about how to rerun the script.

Syntax
pattern_library_lock(
pattern_library_handle = pattern_library_handle
);

Returns
void

Arguments
pattern_library_handle
Required. Specifies the pattern library to be locked. The handle must be previously
defined by the pattern_library() function.
Note:
The pattern_library_handle argument replaces the previous
pattern_library_name argument for better usability, but it breaks the backward
compatibility of the previous runset, which is defined using the
pattern_library_name argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


pattern_library_lock() 3-404
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example

Example 1
The following runset example shows how the pattern_library_lock() function locks the
TEST_CASE_Mx pattern library.
#include <icv.rh>

//specify a dummy GDSII file


library (
format =GDSII,
library_name = ./dummy.gds",
cell = "dummy1"
);

//dummy assign section is required


dummy_layer: ldt_range_s = {0};
mylayer = assign(dummy_layer);

TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "../pattern_lib"
);

pattern_library_lock (
pattern_library_handle = TEST_CASE_Mx
);

Before the locking process, pattern library, TEST_CASE_Mx, is writable and viewable. This
information is in the pattern library log file with the following lines:
[Wed Oct 5 11:39:51 2016]: Learned new pattern(s) with ICV_Engine
2016.12-DEV-161004.3389406.
Registered 12 new unique pattern(s); total # of unique pattern(s)=12.
Created reflected/rotated pattern(s); total # of pattern(s)=96.
viewable=true; writable=true.

After the locking process, the pattern library, TEST_CASE_Mx, is neither writable nor
viewable. This information is in the same log file with the following newly added lines:
[Wed Nov 16 11:31:37 2016]: Locked pattern library with ICV_Engine
2016.12-BETA-161116.3440453.
viewable=false; writable=false.

Chapter 3: Runset Functions: J - Z


pattern_library_lock() 3-405
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Attempting to convert a locked pattern library with the pattern_library_read() function


results in the following error message:
Error: pattern library ../pattern_lib/TEST_CASE_Mx is not viewable.

Example 2
The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_lock() function without executing a runset and
without using a dummy GDSII file. The general usage is:
pdb_utility.pl <pdb_lib_path> <pdb_lib_name> -lock [output_name]

The following script performs the pattern library lock in Example 1.


$ICV_HOME_DIR/contrib/pdb_utility.pl ../pattern_lib TEST_CASE_Mx -lock

See Also
optional_pattern_markers()
pattern_learn()
pattern_library_read()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_library_lock() 3-406
IC Validator Reference Manual Version N-2017.12-SP2

pattern_library_merge()
The pattern_library_merge() function merges a list of pattern libraries into one pattern
library. This function applies only to the pattern libraries generated when the
pattern_naming_mode argument of the pattern_learn() function is PM_NAME_UNIQUE.

When you use the pattern_library_merge() function:


• A dummy GDSII or OASIS file is required as input. See the Example section for an
example of defining a dummy file.
• A dummy ASSIGN section is required in the runset. See the Example section for an
example of a dummy ASSIGN section.

The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_merge() function without executing a runset and
without using a dummy GDSII file. See the Example section for how to run the script.

Syntax
pattern_library_merge(
input_pattern_libraries = {pattern_library_handle, ...},
output_pattern_library = pattern_library_handle
);

Returns
void

Arguments
input_pattern_libraries
Required. Specifies the list of input pattern libraries to be merged. The handle must be
previously defined by the pattern_library() function.

output_pattern_library
Required. Specifies the output pattern library to be merged. The handle must be
previously defined by the pattern_library() function.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Chapter 3: Runset Functions: J - Z


pattern_library_merge() 3-407
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example

Example 1
The following runset example shows how the pattern_library_merge() function merges
two pattern libraries, M1_V1 and M2_V2 into one pattern library, Mx_Vx.
#include <icv.rh>
library (
format = GDSII,
library_name = "TOP.gds",
cell = "TOP"
);

//assign layers
dummy_layer : ldt_range_s = {0};
foo = assign(dummy_layer);
M1_V1 = pattern_library (
library_name = "M1_V1",
library_path = "../pattern_lib"
);

M2_V2 = pattern_library (
library_name = "M2_V2",
library_path = "../pattern_lib"
);

Mx_Vx = pattern_library (
library_name = "Mx_Vx",
library_path = "../pattern_lib"
);

pattern_library_merge (
input_pattern_libraries = {M1_V1,M2_V2},
output_pattern_library = Mx_Vx
);

Example 2
The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_merge() function without executing a runset and
without using a dummy GDSII file. The general usage is:
pdb_utility.pl -merge -i <plib1> <plib2>...<plibn> -o [merged_lib]

The following script performs the pattern library lock in Example 1.


$ICV_HOME_DIR/contrib/pdb_utility.pl -merge -i
../pattern_lib/M1_V1
../pattern_lib/M2_V2 -o ../pattern_lib/Mx_Vx

Chapter 3: Runset Functions: J - Z


pattern_library_merge() 3-408
IC Validator Reference Manual Version N-2017.12-SP2

See Also
optional_pattern_markers()
pattern_learn()
pattern_library_read()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_library_merge() 3-409
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_library_read()
The pattern_library_read() function converts a pattern library to IC Validator group files.
These files can then be written to a GDSII or OASIS file using the write_gds() function or
the write_oasis() function.
This function is required when converting a pattern library to GDSII or OASIS output with the
IC Validator tool.
When you use the pattern_library_read() function,
• A dummy GDSII or OASIS file is required. See the Examples section for an example of
defining a dummy file.
• A dummy ASSIGN section is required in the runset. See the Examples section for an
example of a dummy ASSIGN section.
• The resolution in the write_gds() and write_oasis() functions must be equal to or
finer than the pattern library resolution to avoid pattern snapping. See the
resolution_options() function for more information about how to specify a resolution
other than the input library resolution. Also, see the write_gds() or write_oasis()
functions for more information about how to specify an output resolution other than the
input library resolution.

The pdb_utility.pl script, which is in the contrib directory, allows you to perform the
functionality of the pattern_library_read() function without executing a runset and
without a dummy GDSII file. See the pdb_utility.pl script for information about how to run the
script.

Syntax
pattern_library_read(
pattern_library_name = "string",
pattern_text_id = out_text_layer,
pattern_marker = out_polygon_layer,
pattern_extent = out_polygon_layer,
pattern_layers = {out_polygon_layer, ...},
edge_tolerance_layers = {out_polygon_layer, ...},
ignore_region_layers = {out_polygon_layer, ...},
edge_label_layers = {out_text_layer, ...},
optional_pattern_markers = {out_polygon_layer, ...},
string_property_layers = {out_text_layer, ...},
double_property_layers = {out_text_layer, ...},
optional_pattern_marker_edge_label_layers = {out_text_layer, ...},
pattern_library_handle = NULL_PATTERN_LIBRARY
);

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-410
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Arguments
pattern_library_name
Required. Specifies the pattern library to be converted.

pattern_text_id
Required. Specifies the output layer that contains the pattern ID.

pattern_marker
Required. Specifies the output layer that contains the pattern markers.

pattern_extent
Required. Specifies the output layer that contains the pattern extent.

pattern_layers
Required. Lists the output layers that consist of one or more pattern layers.

edge_tolerance_layers
Required. Lists the output layers that contain the edge tolerance of each pattern layer.

ignore_region_layers
Required. Lists the output layers that contain the ignored regions of each pattern layer.

edge_label_layers
Required. Lists the output layers that consist of one or more edge-label layers. Edges of
each pattern are labeled in clockwise order from the lower-left edge of the lower-left
polygon, starting from zero. Edges touching either the pattern extent or the ignored
region are treated as false edges and are not output.
Note:
The edge-label layers are output only when the pattern_fuzziness argument of the
pattern_learn() function is PM_EDGE_NONUNIFORM. See the output_pattern_xml
argument of the pattern_learn() function for more information.

optional_pattern_markers
Required. Lists the output layers that contain optional pattern markers which are placed
on each pattern.

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-411
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

string_property_layers
Required. Lists the output text layers that have a pattern property type of STRING. See
the pattern_type_properties argument of the pattern_learn() function for more
information.

double_property_layers
Required. Lists the output text layers that have a pattern property type of DOUBLE. See
the pattern_type_properties argument of the pattern_learn() function for more
information.

optional_pattern_marker_edge_label_layers
Required. Lists the output layers that consist of one or more edge-label layers for
optional pattern markers. Edges of each marker layer are labeled in clockwise order from
the lower-left edge of the lower-left polygon, starting from 0 (zero). To distinguish from
the pattern edge label, the optional pattern marker edge label is prefixed with opm. For
example, opm.e1 represents optional pattern marker edge 1.
Note:
The optional pattern marker edge-label layers are output only when the
pattern_fuzziness argument of the pattern_learn() function is
PM_DIMENSION_UNBOUNDED.

pattern_library_handle
Required. Specifies the pattern library to be read. The handle must be previously defined
by the pattern_library() function.
Note:
The pattern_library_name argument has backward compatible support for the
previous pattern matching runset. The pattern_library_handle argument is
selected if defined.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-412
IC Validator Reference Manual Version N-2017.12-SP2

Examples

Example 1
The following example shows how the pattern_library_read() function converts the
TEST_CASE_Mx pattern library and outputs it to a new GDSII file.
#include <icv.rh>

library (
format =GDSII,
library_name = ./dummy.gds",
cell = "dummy1"
);

//assign layers
dummy_layer : ldt_range_s = {0};
foo = assign(dummy_layer);

pattern_marker: polygon_layer;
pattern_extent: polygon_layer;
pattern_text: text_layer;
edge_label_layers: list of text_layer;
str_prop_layers: list of text_layer;
dbl_prop_layers: list of text_layer;
pattern_layer_list: list of polygon_layer;
edge_tolerance_layer_list: list of polygon_layer;
ignore_region_layers_list: list of polygon_layer;
optional_pattern_markers_list: list of polygon_layer;
opm_edge_label_layers_list: list of text_layer;

TEST_CASE_Mx = pattern_library (
library_name = "TEST_CASE_Mx",
library_path = "../pattern_lib"
);

//convert pattern library to graphic format


pattern_library_read (
pattern_library_name = " ",
pattern_library_handle = TEST_CASE_Mx,
pattern_text_id = pattern_text,
edge_label_layers = edge_label_layers,
pattern_marker = pattern_marker,
pattern_extent = pattern_extent,
pattern_layers = pattern_layer_list,
ignore_region_layers = ignore_region_layers_list,
optional_pattern_markers = optional_pattern_markers_list,
edge_tolerance_layers = edge_tolerance_layer_list,
string_property_layers = str_prop_layers,
double_property_layers = dbl_prop_layers,
optional_pattern_marker_edge_label_layers =
opm_edge_label_layers_list

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-413
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

out_layer: list of write_layer_map_s={};


out_layer.push_back({pattern_marker, {1,0}});
out_layer.push_back({pattern_text, {1,1}});
out_layer.push_back({pattern_extent, {2,0}});
for(i=0 to pattern_layer_list.size()-1){
out_layer.push_back({pattern_layer_list[i],{3+i,0}});
out_layer.push_back({edge_label_layers[i],{3+i,1}});
out_layer.push_back({edge_tolerance_layer_list[i],{3+i,2}});
out_layer.push_back({ignore_region_layers_list[i],{3+i,3}});
}

for(i=0 to str_prop_layers.size()-1){
out_layer.push_back({str_prop_layers[i],{200+i,0}});
}

for(i=0 to dbl_prop_layers.size()-1){
out_layer.push_back({dbl_prop_layers[i],{300+i,0}});
}

for(i=0 to optional_pattern_markers_list.size()-1){
out_layer.push_back({optional_pattern_markers_list[i],{100+i,0}});
}

for(i=0 to opm_edge_label_layers_list.size()-1){
out_layer.push_back({opm_edge_label_layers_list[i],{400+i,0}});
}

//for debugging
graphic_output = gds_library("TEST_CASE_Mx.gds");

write_gds (
output_library = graphic_output,
resolution = 0.0005,
output_cell = "all_patterns",
layers = out_layer
);

Example 2
The pdb_utility.pl script, which is in the contrib directory, lets you perform the functionality of
the pattern_library_read() function without executing a runset and without a dummy GDSII
file. The general usage is:
pdb_utility.pl <pdb_lib_path> <pdb_lib_name> -read [output_name]

The following script converts the pattern library TEST_CASE_Mx in Example 1.


$ICV_HOME_DIR/contrib/pdb_utility.pl ../pattern_lib TEST_CASE_Mx -read
TEST_CASE_Mx.gds

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-414
IC Validator Reference Manual Version N-2017.12-SP2

Example 3
Figure 3-101 shows an example of a converted pattern library in IC WorkBench EV Plus. In
the converted GDSII file, each child cell represents one pattern in the pattern library. The cell
is named using the following naming convention:
p$(index)_h$(hit number)_pattern-id_R0

• The patterns in a pattern library are automatically indexed starting from zero.
• The hit number indicates how many times a pattern is hierarchically processed during
pattern library creation.
• The pattern ID is the user-defined pattern text ID.
• All patterns are displayed in zero orientation (R0). This orientation might not be the
original orientation of the input source patterns.
Figure 3-101 Converted Pattern Library in IC WorkBench EV Plus

See Also
optional_pattern_markers()
pattern_learn()
pattern_library_lock()
pattern_match()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_library_read() 3-415
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pattern_match()
The pattern_match() function captures patterns on a design that match patterns in a
pattern library. The pattern library is generated by the pattern_learn() function. The
pattern_match() function is required when performing pattern matching with the
IC Validator tool and can be called multiple times within a runset.

Syntax
pattern_match(
pattern_library_name = "string",
pattern_layers = {polygon_layer, ...},
pattern_library_handle = NULL_PATTERN_LIBRARY, //optional
group_errors_by_pattern = true | false, //optional
select_by_pattern_properties = {{name = "string",
string_values = {“string”, …},
double_values =
{doubleconstraint, …}}},
...}, //optional
explode_data_limit = integer, //optional
report_orientations = ALL | ONE //optional
);

Returns
marker layer or error result
The marker layer return value contains the unmerged pattern markers.
A marker layer can be converted to a polygon layer using the marker_merge() function.

Arguments
pattern_library_name
Required. Specifies the pattern library for pattern matching.
Note:
The pattern_library_name argument has backward compatible support for the
previous pattern matching runset. The pattern_library_handle argument is
selected if defined.

pattern_layers
Required. Lists the input pattern layers on which pattern matching is performed. For this
list,
❍ The size of the pattern layer list must match the size of the pattern layer list used to
generate the pattern library.

Chapter 3: Runset Functions: J - Z


pattern_match() 3-416
IC Validator Reference Manual Version N-2017.12-SP2

❍ The pattern layer list must be in the same order as in the pattern layer list used to
generate the pattern library.

pattern_library_handle
Optional. Specifies the pattern library for pattern matching. The handle must be
previously defined by the pattern_library() function.

group_errors_by_pattern
Optional. Specifies whether to store and report errors based on the pattern ID to the error
database and the LAYOUT_ERRORS file. The default is false.
See the Examples section for an example of the LAYOUT_ERRORS file.

select_by_pattern_properties
Optional. Selects patterns based on their text property values. The selected patterns are
used for pattern matching instead of the patterns in the pattern library specified with the
pattern_library_name argument.

❍ name. Required. Specifies the property name.


Note:
The property name for the pattern ID is “PATTERN_NAME.”
❍ string_values. Required. Specifies the property value, which is a string.

❍ double_values. Required. Specifies the property value, which is a constraint of


double.
By default, all of the patterns in the pattern library are used for pattern matching.
In the following example, all of the patterns in a pattern library are selected except the
patterns named pat_13*:
select_by_pattern_properties = {
{{"PATTERN_NAME", {"*", "!pat_13*"}}}
},

The following example selects patterns with the property name Ptype and the property
value bitcell:
select_by_pattern_properties = { {{"Ptype", {"bitcell"}}} },

The following example selects patterns with a predefined critical dimension greater than
or equal to 0.06 m:
select_by_pattern_properties = {
{{name="min_cd", double_values = {>=0.06}}}
},

Chapter 3: Runset Functions: J - Z


pattern_match() 3-417
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The following example selects patterns named BIT_P_2 or BIT_P_3 with the revision
value 1.0.
select_by_pattern_properties = {
{{“PATTERN_NAME”, {“BIT_P_2”, BIT_P_3”}},
{“revision”, double_values = {1.0}}}
},

Notes:
❍ Pattern text properties are user-defined input and are attached to the pattern library
during pattern library creation through the pattern_text_properties argument of
the pattern_learn() function.
❍ The relation is AND within each property set and OR among the property sets.
The following example specifies three pattern property sets. Each property set
contains one pattern property. Any pattern that meets one of the three property
specifications is selected.
select_by_pattern_properties = {
{{"PATTERN_NAME", {"*", "!pat_13*"}}},
{{"pattern_type", {"space"}}},
{{name="min_cd", double_values = {>=0.06}}}
},

The following example specifies one pattern property set. This property set contains
three pattern properties. Any pattern that meets all three property specifications is
selected.
select_by_pattern_properties = {
{{"PATTERN_NAME", {"*", "!pat_13*"}},
{"pattern_type", {"space"}},
{name="min_cd", double_values = {>=0.06}}}
},

explode_data_limit
Optional. Specifies the exploding data limit for hierarchy optimization, which occurs
during pattern matching to maximize performance. The default is 100. A smaller value is
recommended for FEOL (front-end-of-the-line). For example, set the exploding data limit
to 0 (does not explode the cell) for a contact layer to prevent data exploding that might
cause performance degradation.

report_orientations
Optional. Specifies how to report a matched pattern with different orientations. The
default is ALL.
❍ ALL. Reports all orientations.

❍ ONE. Reports only one orientation. This orientation is selected by the IC Validator tool.

Chapter 3: Runset Functions: J - Z


pattern_match() 3-418
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Examples

Performing Pattern Matching on Specified Metal Layers


This example shows how the pattern_match() function performs pattern matching on the
metal1 and metal2 layers of the TEST.gds file. The runset contains:
#include <icv.rh>

library (
format = GDSII,
library_name = "TOP.gds",
cell = "TOP"
);

error_options (
error_limit_per_check = ERROR_LIMIT_UNLIMITED
);

//assign layers
metal2 : polygon_layer = assign ( {{3,0}} );

Mx = pattern_library (
library_name = "Mx",
library_path = "/pattern_lib"
);

tmp_violation1 @= {
@"pattern match result";
pattern_match (
pattern_library_handle = Mx,
pattern_library_name = " ",
pattern_layers = {metal2}
);
};

The results reported to the LAYOUT_ERRORS file are:


LAYOUT ERRORS RESULTS: ERRORS
ERRORS
====================================================================
ERROR SUMMARY

Chapter 3: Runset Functions: J - Z


pattern_match() 3-419
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

METAL1 PM RESULT:
pattern_match .................................6 violations found.

ERROR DETAILS
--------------------------------------------------------------------
pattern match result:
--------------------------------------------------------------------
/runset/sample_match.rs:77:pattern_match
--------------------------------------------------------------------
Structure ( lower left x, y ) ( upper right x, y ) Pattern Orientation
--------------------------------------------------------------------
TOP (1154.6210, 1277.3630) (1154.6790, 1277.4740) pattern_5 FY
TOP (1154.9010, 1279.4860) (1154.9590, 1279.5970) pattern_5 R180
TOP (1151.1210, 1240.4240) (1151.1790, 1240.5350) pattern_6 FY
TOP (1149.7210, 1222.3660) (1149.7790, 1222.4770) pattern_5 R180
TOP (1154.0610, 1225.7050) (1154.1190, 1225.8160) pattern_6 R180
TOP (1163.4410, 1255.9450) (1163.4990, 1256.0560) pattern_6 R180

The highlighted lines in the following LAYOUT_ERRORS file show the additional reporting
based on the pattern ID when the group_errors_by_pattern argument is true:
LAYOUT ERRORS RESULTS: ERRORS
ERRORS
====================================================================
ERROR SUMMARY
METAL1 PM RESULT:
pattern_match ................................. 6 violations found.

METAL1 PM RESULT: :pattern_5


pattern_match ................................. 3 violations found.

METAL1 PM RESULT: :pattern_6


pattern_match ................................. 3 violations found.

See Also
marker_merge()
optional_pattern_markers()
pattern_learn()
pattern_library_lock()
pattern_library_read()
pattern_options()

Chapter 3: Runset Functions: J - Z


pattern_match() 3-420
IC Validator Reference Manual Version N-2017.12-SP2

pattern_options()
The pattern_options() function defines the path for the pattern library when the
pattern_library_name argument of the pattern_library_read(),
optional_pattern_markers(), and pattern_match() functions is used to specify the
pattern library. It can be called only one time within a runset.

Syntax
pattern_options(
pattern_library_path = "string"
);

Returns
void

Arguments
pattern_library_path
Required. Specifies the pattern library path. An error occurs if the path does not exist.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following example specifies the pattern library path with an environment variable:
pattern_options(pattern_library_path = $PM_LIB_PATH);

The following example specifies an absolute pattern library path:


pattern_options(pattern_library_path = "/my-dir/pattern_lib/");

See Also
marker_merge()
optional_pattern_markers()
pattern_learn()
pattern_library_lock()
pattern_library_read()
pattern_match()

Chapter 3: Runset Functions: J - Z


pattern_options() 3-421
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_cell_extents_file()
The pex_cell_extents_file() function defines a cell extents file. The file handle
generated by this function is used as an input argument to the pex_generate_database()
function.

Syntax
pex_cell_extents_file(
file = "string"
);

Returns
pex_cell_extents_file_handle

Arguments
file
Required. Specifies the cell extents file name.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
init_pex_layer_matrix()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()

Chapter 3: Runset Functions: J - Z


pex_cell_extents_file() 3-422
IC Validator Reference Manual Version N-2017.12-SP2

pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_cell_extents_file() 3-423
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_cell_port_file()
The pex_cell_port_file() function defines a cell port file. The file handle generated by
this function is used as an input argument to the pex_generate_database() function.

Syntax
pex_cell_port_file(
file = "string"
);

Returns
pex_cell_port_file_handle

Arguments
file
Required. Specifies the cell port file name.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()

Chapter 3: Runset Functions: J - Z


pex_cell_port_file() 3-424
IC Validator Reference Manual Version N-2017.12-SP2

pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_cell_port_file() 3-425
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_color_layer_map()
The pex_color_layer_map() function stores, in the PEX layer matrix, mapping between
PXL layer objects and parasitic extraction color layer parameters. You must call this function
for the color layers you want to map to a StarRC COLOR process layer. The layer mapping
is written to the color_layers section of the StarRC MAPPING_FILE. Mapping information is
also optionally written to the StarRC OA_LAYER_MAPPING_FILE.

Syntax
pex_color_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
process_layer = "string",
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string", //optional
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

process_layer
Required. Specifies the COLOR layer from the StarRC TCAD_GRD_FILE.

Chapter 3: Runset Functions: J - Z


pex_color_layer_map() 3-426
IC Validator Reference Manual Version N-2017.12-SP2

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence® CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Restrictions for the tag name are:
❍ Square brackets ([]) are not allowed.
❍ Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
With the following in the IC Validator runset,
M1_E1 = assign({{110}});

pex_color_layer_map(matrix = pex_matrix,
layer1 = M1_E1,
process_layer = "M1",

Chapter 3: Runset Functions: J - Z


pex_color_layer_map() 3-427
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

tagname = "M1_E1",
append_string = "X=0.004 Y=0.004");

The color_layer section in the StarRC layer map file is


color_layers

M1_E1 M1 X=0.004 Y=0.004

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_color_layer_map() 3-428
IC Validator Reference Manual Version N-2017.12-SP2

pex_conducting_layer_map()
The pex_conducting_layer_map() function stores, in the PEX layer matrix, mapping
between PXL layer objects and parasitic extraction conducting layer parameters. You must
call this function for every PXL layer variable you want to map to a StarRC CONDUCTOR
process layer. The layer mapping is written to the conducting_layers section of the StarRC
MAPPING_FILE. Mapping information is also optionally written to the StarRC
OA_LAYER_MAPPING_FILE.

Syntax
pex_conducting_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
process_layer = "string",
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string",
device_layer = true | false, //optional
model_name = "string", //optional
rpsq = double, //optional
precedence = integer, //optional
table_name = "string", //optional
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

Chapter 3: Runset Functions: J - Z


pex_conducting_layer_map() 3-429
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

process_layer
Required. Specifies the CONDUCTOR layer from the StarRC TCAD_GRD_FILE.

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Restrictions for the tag name are:
❍ Square brackets ([]) are not allowed.
❍ Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

device_layer
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information. The default
is false.

model_name
Optional. Corresponds to the StarRC MAPPING_FILE option MODEL. See the StarRC
User Guide and Command Reference manual for more information.

rpsq
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

precedence
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

Chapter 3: Runset Functions: J - Z


pex_conducting_layer_map() 3-430
IC Validator Reference Manual Version N-2017.12-SP2

table_name
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_conducting_layer_map(
matrix = pex_matrix,
layer1 = fpoly,
process_layer = "POLY",
lpp_layer = { "POLY", "drawing", "nil", "nil", "POLY", "net"},
rpsq = 12.0,
tagname = "fpoly"
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()

Chapter 3: Runset Functions: J - Z


pex_conducting_layer_map() 3-431
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_conducting_layer_map() 3-432
IC Validator Reference Manual Version N-2017.12-SP2

pex_generate_database()
The pex_generate_database() function generates the following outputs needed by the
StarRC tool to perform parasitic extraction:
• Parasitic extraction layout database. Connected layout polygon and device database in
GDSII or SPICE format.
• Parasitic extraction mapping file. Parasitic extraction process layer mapping file
corresponding to the StarRC MAPPING_FILE command option.
• Parasitic extraction runset report file. Parasitic extraction runset report file corresponding
to the StarRC ICV_RUNSET_REPORT_FILE command option.
• Parasitic extraction LPP mapping file. Parasitic extraction LPP mapping file
corresponding to the StarRC OA_LAYER_MAPPING_FILE command option.
Note:
Use the pex_generate_database() function with GDSII and SPICE formats. Use the
pex_generate_results() function with Milkyway databases.
Limitation:
The IC Validator parasitic extraction layout database generated for annotated GDS
(AGDS) and SPICE flows cannot be used with the XREF:COMPLETE option of the StarRC
tool.

Syntax
pex_generate_database(
pex_matrix = pex_layer_matrix,
pex_library = gds_library_handle,
pex_library_layer_map = pex_layout_library_layer_map_handle,
pex_netlist_file = spice_netlist_file_handle,
pex_cell_extents_file = pex_cell_extents_file_handle,
pex_cell_port_file = pex_cell_port_file_handle,
pex_process_map_file = pex_process_map_file_handle,
pex_runset_report_file = pex_runset_report_file_handle,
pex_lpp_map_file = pex_lpp_map_file_handle, //optional
precision = integer, //optional
resolution = double //optional
);

Returns
void

Chapter 3: Runset Functions: J - Z


pex_generate_database() 3-433
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_*_layer_map() functions.

pex_library
Required. Specifies the handle for the annotated GDSII layout database. The handle is
defined using the gds_library() function.

pex_library_layer_map
Required. Specifies the handle for the layer mapping file. The file handle is defined using
the pex_library_layer_map_file() function.

pex_netlist_file
Required. Specifies the handle for the SPICE netlist file. The file handle is defined using
the spice_netlist_file() function.

pex_cell_extents_file
Required. Specifies the handle for the cell extents file. The file handle is defined using
the pex_cell_extents_file() function.

pex_cell_port_file
Required. Specifies the handle for the cell port file. The file handle is defined using the
pex_cell_port_file() function.

pex_process_map_file
Required. Specifies the handle for the parasitic extraction process mapping file. The file
handle is defined using the pex_process_map_file() function. This file corresponds to
the StarRC MAPPING_FILE option.

pex_runset_report_file
Required. Specifies the handle for the parasitic extraction runset report file. The file
handle is defined using the pex_runset_report_file() function. This file corresponds
to the StarRC ICV_RUNSET_REPORT_FILE option.

pex_lpp_map_file
Optional. Specifies the handle for the LPP mapping file. The file handle is defined using
the pex_lpp_map_file() function. This file corresponds to the StarRC
OA_LAYER_MAPPING_FILE option.

Chapter 3: Runset Functions: J - Z


pex_generate_database() 3-434
IC Validator Reference Manual Version N-2017.12-SP2

precision
Optional. Specifies the maximum number of significant figures reported in the GDSII
library or SPICE format for extracted device properties from the extract_devices()
function. The value can be from 1 through 15. The default is 6.

resolution
Optional. Snaps the output data to the specified resolution before it is written to the
extraction layout database. The default is the IC Validator engine resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
pex_matrix = init_pex_layer_matrix(device_db);

/* layer mapping functions here*/


...

pex_process_handle = pex_process_map_file("agds_grd_map");
pex_report_handle = pex_runset_report_file("agds_runset_report");
pex_lpp_map_handle = pex_lpp_map_file("agds_lpp_layer_map");

gds_out = gds_library("agds.gds");
pex_layout_library_layer_map_handle =
pex_library_layer_map_file("agds_layer_map");
spice_netlist_file_handle = spice_netlist_file("agds.sp");
pex_cell_extents_file_handle =
pex_cell_extents_file("agds_cell_extents");
pex_cell_port_file_handle = pex_cell_port_file("agds_cell_port");

pex_generate_database(
pex_matrix = pex_matrix,
pex_library = gds_out,
pex_library_layer_map = pex_layout_library_layer_map_handle,
pex_netlist_file = spice_netlist_file_handle,
pex_cell_extents_file = pex_cell_extents_file_handle,
pex_cell_port_file = pex_cell_port_file_handle,
pex_process_map_file = pex_process_handle,
pex_lpp_map_file = pex_lpp_map_handle,
pex_runset_report_file = pex_report_handle
);

Chapter 3: Runset Functions: J - Z


pex_generate_database() 3-435
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_database() 3-436
IC Validator Reference Manual Version N-2017.12-SP2

pex_generate_lpp_map()
The pex_generate_lpp_map() function generates the parasitic extraction LPP mapping
file. The parasitic extraction LPP mapping file corresponds to the StarRC
OA_LAYER_MAPPING_FILE command option.
Typically, when multiple PEX layer matrixes exist, you use the pex_generate_lpp_map()
function to generate an LPP mapping file from a different PEX layer matrix than the one
used by the pex_generate_database() and pex_generate_results() functions.

Syntax
pex_generate_lpp_map(
pex_matrix = pex_layer_matrix,
pex_lpp_map_file = pex_lpp_map_file_handle
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_*_layer_map() functions.

pex_lpp_map_file
Required. Specifies the handle for the LPP mapping file. The file handle is defined using
the pex_lpp_map_file() function. This file corresponds to the StarRC
OA_LAYER_MAPPING_FILE option.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


pex_generate_lpp_map() 3-437
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
Using the following runset excerpt:
pex_matrix = init_pex_layer_matrix(device_db);
pex_conducting_layer_map(
matrix = pex_matrix,
layer1 = M3,
process_layer = "metal3",
lpp_layer = {"M3", "drawing", "M3", "pin", "M3", "net"},
tagname = "metal3.1"
);
pex_conducting_layer_map(
matrix = pex_matrix,
layer1 = M2,
process_layer = "metal2",
lpp_layer = {"M2", "drawing", "M2", "pin", "M2", "net"},
tagname = "metal2.1"
);
pex_conducting_layer_map(
matrix = pex_matrix,
layer1 = M1,
process_layer = "metal1",
lpp_layer = {"M1", "drawing", "M1", "pin", "M1", "net"},
tagname = "metal1.1"
);
pex_generate_lpp_map(
pex_matrix = pex_matrix,
pex_lpp_map_file = pex_lpp_map_file("lpp_map")
);

This LPP mapping file is generated:


(lpp_map)
metal3.1 M3 drawing M3 pin M3 net
metal2.1 M2 drawing M2 pin M2 net
metal1.1 M1 drawing M1 pin M1 net

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_lpp_map() 3-438
IC Validator Reference Manual Version N-2017.12-SP2

pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_lpp_map() 3-439
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_generate_process_map()
The pex_generate_process_map() function generates the parasitic extraction layer
mapping file. The parasitic extraction layer mapping file corresponds to the StarRC
MAPPING_FILE command option.
A common scenario for using the pex_generate_process_map() function is when multiple
PEX layer matrixes are used to store data for multiple parasitic extraction process corners.
In this scenario, you can use the pex_generate_database() or
pex_generate_results() function to generate all parasitic extraction files for the nominal
process corner, and use the pex_generate_process_map() function to generate additional
layer mapping files for other process corners.

Syntax
pex_generate_process_map(
pex_matrix = pex_layer_matrix,
pex_process_map_file = pex_process_map_file_handle
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_*_layer_map() functions.

pex_process_map_file
Required. Specifies the handle for the process mapping file. The file handle is defined
using the pex_process_map_file() function. This file corresponds to the StarRC
MAPPING_FILE option.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.

Chapter 3: Runset Functions: J - Z


pex_generate_process_map() 3-440
IC Validator Reference Manual Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Using the following runset excerpt:
// pex_layer_matrix for nominal corner – metal rpsq = 0.05
pex_matrix_nom = init_pex_layer_matrix(device_db);

pex_conducting_layer_map(pex_matrix_nom, M3, "metal3",


tagname = "metal3.1",
rpsq = 0.05
);
pex_conducting_layer_map(pex_matrix_nom, M2, "metal2",
tagname = "metal2.1",
rpsq = 0.05
);
pex_conducting_layer_map(pex_matrix_nom, M1, "metal1",
tagname = "metal1.1",
rpsq = 0.05
);
pex_via_layer_map(pex_matrix_nom, V2, "via2", tagname="via2.1");
pex_via_layer_map(pex_matrix_nom, V1, "via1", tagname="via1.1");

// pex_layer_matrix for max corner – metal rpsq = 0.061


pex_matrix_max = init_pex_layer_matrix(device_db);

pex_conducting_layer_map(pex_matrix_max, M3, "metal3",


tagname = "metal3.1",
rpsq = 0.061
);
pex_conducting_layer_map(pex_matrix_max, M2, "metal2",
tagname = "metal2.1",
rpsq = 0.061
);
pex_conducting_layer_map(pex_matrix_max, M1, "metal1",
tagname = "metal1.1",
rpsq = 0.061
);
pex_via_layer_map(pex_matrix_max, V2, "via2", tagname="via2.1");
pex_via_layer_map(pex_matrix_max, V1, "via1", tagname="via1.1");

// Generate output for nominal corner


milkyway_handle = milkyway_library("XTROUT");
pex_generate_results(
pex_matrix = pex_matrix_nom,
layout_database = milkyway_handle,
pex_process_map_file = pex_process_map_file("map_nominal"),
pex_runset_report_file = pex_runset_report_file("runset_report")
);

Chapter 3: Runset Functions: J - Z


pex_generate_process_map() 3-441
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

// Generate output for max corner


pex_generate_process_map(
pex_matrix = pex_matrix_max,
pex_process_map_file = pex_process_map_file("map_max")
);

The following parasitic extraction layer mapping files are generated:


(map_nominal)
conducting_layers

metal3.1 metal3 rpsq=0.05


metal2.1 metal2 rpsq=0.05
metal1.1 metal1 rpsq=0.05

via_layers

via2.1 via2
via1.1 via1

(map_max)
conducting_layers

metal3.1 metal3 rpsq=0.061


metal2.1 metal2 rpsq=0.061
metal1.1 metal1 rpsq=0.061

via_layers

via2.1 via2
via1.1 via1

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_process_map() 3-442
IC Validator Reference Manual Version N-2017.12-SP2

pex_generate_results()
The pex_generate_results() function generates the following outputs needed by the
StarRC tool to perform parasitic extraction:
• Parasitic extraction layout database. Connected layout polygon and device database in
Milkyway format.
• Parasitic extraction mapping file. Parasitic extraction process layer mapping file
corresponding to the StarRC MAPPING_FILE command option.
• Parasitic extraction runset report file. Parasitic extraction runset report file corresponding
to the StarRC ICV_RUNSET_REPORT_FILE command option.
• Parasitic extraction LPP mapping file. Parasitic extraction LPP mapping file
corresponding to the StarRC OA_LAYER_MAPPING_FILE command option.
Note:
Use the pex_generate_results() function with Milkyway databases. Use the
pex_generate_database() function with GDSII and SPICE formats.

Syntax
pex_generate_results(
pex_matrix = pex_layer_matrix,
layout_database = milkyway_library_handle,
pex_process_map_file = pex_process_map_file_handle,
pex_runset_report_file = pex_runset_report_file_handle,
pex_lpp_map_file = pex_lpp_map_file_handle, //optional
precision = integer, //optional
resolution = double //optional
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_*_layer_map() functions.

layout_database
Required. Specifies the library handle for the parasitic extraction layout database
(Milkyway). The handle is defined using the milkyway_library() function.

Chapter 3: Runset Functions: J - Z


pex_generate_results() 3-443
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_process_map_file
Required. Specifies the handle for the parasitic extraction process mapping file. The file
handle is defined using the pex_process_map_file() function. This file corresponds to
the StarRC MAPPING_FILE option.

pex_runset_report_file
Required. Specifies the handle for the parasitic extraction runset report file. The file
handle is defined using the pex_runset_report_file() function. This file corresponds
to the StarRC ICV_RUNSET_REPORT_FILE option.

pex_lpp_map_file
Optional. Specifies the handle for the LPP mapping file. The file handle is defined using
the pex_lpp_map_file() function. This file corresponds to the StarRC
OA_LAYER_MAPPING_FILE option.

precision
Optional. Specifies the maximum number of significant figures reported in the Milkyway
library for extracted device properties from the extract_devices() function. The value
can be from 1 through 15. The default is 6.

resolution
Optional. Snaps the output data to the specified resolution before it is written to the
extraction layout database. The default is the IC Validator engine resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_process_handle = pex_process_map_file("pex_grd_map");
pex_report_handle = pex_runset_report_file("pex_runset_report");
mw_handle = milkyway_library("XTROUT");

pex_generate_results(

Chapter 3: Runset Functions: J - Z


pex_generate_results() 3-444
IC Validator Reference Manual Version N-2017.12-SP2

pex_matrix = pex_matrix,
layout_database = mw_handle,
pex_process_map_file = pex_process_handle,
pex_runset_report_file = pex_report_handle,
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_results() 3-445
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_generate_simple_database()
The pex_generate_simple_database() function generates the following outputs needed
by the StarRC tool to perform parasitic extraction:
• Parasitic extraction layout database. Connected layout polygon and device database in
GDSII or SPICE format.
• Parasitic extraction runset report file. Parasitic extraction runset report file corresponding
to the StarRC ICV_RUNSET_REPORT_FILE command option.
Note:
Use the pex_generate_simple_database() function with GDSII and SPICE formats.
Use the pex_generate_simple_results() function with Milkyway databases. An
empty layer is not written to the generated GDSII database.
Note:
The generated tag name might be unexpected or inconsistent with the layer name when
user-coded functions are involved in the related layer creation. In this case, you should
explicitly specify the tag names for the layers.
Limitation:
The IC Validator parasitic extraction layout database generated for annotated GDS
(AGDS) and SPICE flows cannot be used with the XREF:COMPLETE option of the StarRC
tool.

Syntax
pex_generate_simple_database(
pex_matrix = pex_layer_matrix,
pex_library = gds_library_handle,
pex_library_layer_map = pex_layout_library_layer_map_handle,
pex_netlist_file = spice_netlist_file_handle,
pex_runset_report_file = pex_runset_report_file_handle,
pex_cell_extents_file = pex_cell_extents_file_handle,
pex_cell_port_file = pex_cell_port_file_handle, //optional
precision = integer, //optional
resolution = double //optional
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_simple_layer_maps()
function.

Chapter 3: Runset Functions: J - Z


pex_generate_simple_database() 3-446
IC Validator Reference Manual Version N-2017.12-SP2

pex_library
Required. Specifies the handle for the annotated GDSII layout database. The handle is
defined using the gds_library() function.

pex_library_layer_map
Required. Specifies the handle for the layer mapping file. The file handle is defined using
the pex_library_layer_map_file() function.

pex_netlist_file
Required. Specifies the handle for the SPICE netlist file. The file handle is defined using
the spice_netlist_file() function.

pex_runset_report_file
Required. Specifies the handle for the parasitic extraction runset report file. The file
handle is defined using the pex_runset_report_file() function. This file corresponds
to the StarRC ICV_RUNSET_REPORT_FILE option.

pex_cell_extents_file
Required. Specifies the handle for the cell extents file. The file handle is defined using
the pex_cell_extents_file() function.

pex_cell_port_file
Optional. Specifies the handle for the cell port file. The file handle is defined using the
pex_cell_port_file() function. If the StarRC marker layers are a part of the
generated annotated GDS (AGDS), this cell port file not needed and can be omitted.

precision
Optional. Specifies the maximum number of significant figures reported in the GDSII
library or SPICE format for extracted device properties from the extract_devices()
function. The value can be from 1 through 15. The default is 6.

resolution
Optional. Snaps the output data to the specified resolution before it is written to the
extraction layout database. The default is the IC Validator engine resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


pex_generate_simple_database() 3-447
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
pex_matrix = init_pex_layer_matrix(device_db);

/* optional pex_simple_layer_maps() here*/


...

pex_report_handle = pex_runset_report_file("agds_runset_report");

gds_out = gds_library("agds.gds");
pex_layout_library_layer_map_handle =
pex_library_layer_map_file("agds_layer_map");
spice_netlist_file_handle = spice_netlist_file("agds.sp");
pex_cell_extents_file_handle =
pex_cell_extents_file("agds_cell_extents");
pex_cell_port_file_handle = pex_cell_port_file("agds_cell_port"); \
/*optional */

pex_generate_database(
pex_matrix = pex_matrix,
pex_library = gds_out,
pex_library_layer_map = pex_layout_library_layer_map_handle,
pex_netlist_file = spice_netlist_file_handle,
pex_runset_report_file = pex_report_handle
pex_cell_extents_file = pex_cell_extents_file_handle,
pex_cell_port_file = pex_cell_port_file_handle,
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_generate_simple_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_simple_layer_maps()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_simple_database() 3-448
IC Validator Reference Manual Version N-2017.12-SP2

pex_generate_simple_results()
The pex_generate_simple_results() function generates the following outputs needed
by the StarRC tool to perform parasitic extraction:
• Parasitic extraction layout database. Connected layout polygon and device database in
Milkyway format.
• Parasitic extraction runset report file. Parasitic extraction runset report file corresponding
to the StarRC ICV_RUNSET_REPORT_FILE command option.
Note:
Use the pex_generate_simple_results() function with Milkyway databases. Use the
pex_generate_simple_database() function with GDSII and SPICE formats. An empty
layer is not written to the generated Milkyway database.
Note:
The generated tag name might be unexpected or inconsistent with the layer name when
user-coded functions are involved in the related layer creation. In this case, you should
explicitly specify the tag names for the layers.

Syntax
pex_generate_simple_results(
pex_matrix = pex_layer_matrix,
layout_database = milkyway_library_handle,
pex_runset_report_file = pex_runset_report_file_handle,
precision = integer, //optional
resolution = double //optional
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix where PEX layer mapping settings are stored.
The matrix is defined by the matrix argument of the pex_simple_layer_maps()
function.

layout_database
Required. Specifies the library handle for the parasitic extraction layout database
(Milkyway). The handle is defined using the milkyway_library() function.

Chapter 3: Runset Functions: J - Z


pex_generate_simple_results() 3-449
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_runset_report_file
Required. Specifies the handle for the parasitic extraction runset report file. The file
handle is defined using the pex_runset_report_file() function. This file corresponds
to the StarRC ICV_RUNSET_REPORT_FILE option.

precision
Optional. Specifies the maximum number of significant figures reported in the Milkyway
library for extracted device properties from the extract_devices() function. The value
can be from 1 through 15. The default is 6.

resolution
Optional. Snaps the output data to the specified resolution before it is written to the
extraction layout database. The default is the IC Validator engine resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_matrix = init_pex_layer_matrix(device_db);
pex_report_handle = pex_runset_report_file("pex_runset_report");
mw_handle = milkyway_library("XTROUT") ;

/* optional pex_simple_layer_maps() here */


...

pex_generate_simple_results(
pex_matrix = pex_matrix,
layout_database = mw_handle,
pex_runset_report_file = pex_report_handle,
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()

Chapter 3: Runset Functions: J - Z


pex_generate_simple_results() 3-450
IC Validator Reference Manual Version N-2017.12-SP2

pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_simple_database()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_simple_layer_maps()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_generate_simple_results() 3-451
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_ignore_cap_layer_map()
The pex_ignore_cap_layer_map() function creates entries in the
IGNORE_CAP_LAYERS section of the parasitic extraction process mapping file based on
PXL layer objects. This file is created by the pex_generate_results() or
pex_generate_process_map() function.

A PXL layer should not be specified in the pex_ignore_cap_layer_map() function unless


that layer has previously been mapped by a call to the pex_conducting_layer_map() or
pex_via_layer_map() functions. Layers mapped by calls to the following functions cannot
be listed in the pex_ignore_cap_layer_map() function:
• pex_marker_layer_map()

• pex_remove_layer_map()

• pex_viewonly_layer_map()

Syntax
pex_ignore_cap_layer_map(
matrix = pex_layer_matrix,
ignore_cap_layer_list = {polygon_layer, ...},
ignore_to_substrate = true | false, //optional
l = double, //optional
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

ignore_cap_layer_list
Required. Specifies the polygon, edge, or text layers written to the output parasitic
extraction layout database for the StarRC tool.

Chapter 3: Runset Functions: J - Z


pex_ignore_cap_layer_map() 3-452
IC Validator Reference Manual Version N-2017.12-SP2

ignore_to_substrate
Optional. Adds the keyword SUBSTRATE to the list of layers written to the
IGNORE_CAP_LAYERS section of the parasitic extraction process mapping file. The
default is false.
❍ true. Writes the keyword SUBSTRATE at the end of the list of tag names
corresponding to layers specified in the ignore_cap_layer_list argument.
❍ false. Writes only the tag names corresponding to layers specified in the
ignore_cap_layer_list argument.

l
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_ignore_cap_layer_map(
matrix = pex_matrix,
ignore_cap_layer_list = {m1capbody, psub}
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()

Chapter 3: Runset Functions: J - Z


pex_ignore_cap_layer_map() 3-453
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_ignore_cap_layer_map() 3-454
IC Validator Reference Manual Version N-2017.12-SP2

pex_library_layer_map_file()
The pex_library_layer_map_file() function defines a layout library map file. The file
handle generated by this function is used as an input argument to the
pex_generate_database() function.

Syntax
pex_library_layer_map_file(
file = "string"
);

Returns
pex_layout_library_layer_map_handle

Arguments
file
Required. Specifies the layout library map file name.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_lpp_map_file()

Chapter 3: Runset Functions: J - Z


pex_library_layer_map_file() 3-455
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_library_layer_map_file() 3-456
IC Validator Reference Manual Version N-2017.12-SP2

pex_lpp_map_file()
The pex_lpp_map_file() function generates a file handle for the output of the parasitic
extraction StarRC OA_LAYER_MAPPING_FILE. The file handle generated by this function
is used as an input argument to the pex_generate_database(),
pex_generate_lpp_map(), and pex_generate_results() functions.

Syntax
pex_lpp_map_file(
file = "string"
);

Returns
pex_lpp_map_file_handle

Arguments
file
Required. Specifies the output file name for the StarRC OA_LAYER_MAPPING_FILE.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()

Chapter 3: Runset Functions: J - Z


pex_lpp_map_file() 3-457
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_library_layer_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_lpp_map_file() 3-458
IC Validator Reference Manual Version N-2017.12-SP2

pex_marker_layer_map()
The pex_marker_layer_map() function stores, in the PEX layer matrix, mapping between
PXL layer objects and parasitic extraction marker layers parameters. You must call this
function for every layer you want to output to the marker_layers section of the StarRC
MAPPING_FILE. Mapping information is also optionally written to the StarRC
OA_LAYER_MAPPING_FILE.

Syntax
pex_marker_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string",
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

Chapter 3: Runset Functions: J - Z


pex_marker_layer_map() 3-459
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file, StarRC MAPPING_FILE
❍ Parasitic extraction LPP mapping file, StarRC OA_LAYER_MAPPING_FILE
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_marker_layer_map(
matrix = pex_matrix,
layer1 = m1_port,
tagname = "m1_port"
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()

Chapter 3: Runset Functions: J - Z


pex_marker_layer_map() 3-460
IC Validator Reference Manual Version N-2017.12-SP2

pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_marker_layer_map() 3-461
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_process_map_file()
The pex_process_map_file() function generates a file handle for the output of the StarRC
parasitic extraction MAPPING_FILE. The file handle generated by this function is used as
an input argument to the pex_generate_database(), pex_generate_process_map(),
and pex_generate_results() functions.

Syntax
pex_process_map_file(
file = "string"
);

Returns
pex_process_map_file_handle

Arguments
file
Required. Specifies the output file name for StarRC MAPPING_FILE.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()

Chapter 3: Runset Functions: J - Z


pex_process_map_file() 3-462
IC Validator Reference Manual Version N-2017.12-SP2

pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_process_map_file() 3-463
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_qtf_layers()
The pex_qtf_layers() function specifies which layers from Quickcap Technology File
(QTF) are used during StarRC–QTF extraction flow. For example, if TCAD_GRD file has
accurately modeled layers M1 and above, then only layers below M1 need to be specified in
the qtf_layers argument.
The TCAD_GRD file contains conductor sheet resistances and models for 3-D parasitic
capacitance calculation. For information about creating the TCAD_GRD file, see the StarRC
User Guide and Command Reference.

Syntax
pex_qtf_layers(
matrix = pex_layer_matrix,
qtf_layers = {"string", ...}
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_lpp_map() and pex_generate_process_map() parasitic
extraction functions. The matrix must be previously defined by the
init_pex_layer_matrix() function.

qtf_layers
Required. Specifies the CONDUCTOR layers from the QTF file.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


pex_qtf_layers() 3-464
IC Validator Reference Manual Version N-2017.12-SP2

Examples
See the Example section of the pex_qtf_layer_map() function.

See Also
init_pex_layer_matrix()
pex_generate_lpp_map()
pex_generate_process_map()
pex_qtf_layer_map()

Chapter 3: Runset Functions: J - Z


pex_qtf_layers() 3-465
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_qtf_layer_map()
The pex_qtf_layer_map() function stores, in the PEX layer matrix, mapping between PXL
layer objects and parasitic extraction QTF layer parameters. You must call this function for
every PXL layer variable you want to map to a StarRC CONDUCTOR process layer from the
QTF. The layer mapping is written to the conducting_layers section of the StarRC
MAPPING_FILE. Mapping information is also optionally written to the StarRC
OA_LAYER_MAPPING_FILE.
The QTF layer should be defined in the qft_layers argument of the pex_qtf_layers()
function; otherwise, any layer mapped to the QTF layer is ignored. If a layer is defined in
both the pex_conducting_layer_map() and pex_qtf_layer_map() functions, the StarRC
tool considers the QTF layer to have higher precedence. For information about creating a
mapping file, see the StarRC User Guide and Command Reference.
Note:
Use this function for device region capacitance extraction of finFET devices.

Syntax
pex_qtf_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
qtf_layer = "string",
tagname = "string",
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_lpp_map() and pex_generate_process_map() parasitic
extraction functions. The matrix must be previously defined by the
init_pex_layer_matrix() function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

qtf_layer
Required. Specifies the CONDUCTOR layer from the QTF.

Chapter 3: Runset Functions: J - Z


pex_qtf_layer_map() 3-466
IC Validator Reference Manual Version N-2017.12-SP2

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity.
Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add comments to
the mapping file entries.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
These examples show how the pex_qtf_layers() and pex_qtf_layer_map() functions
interact.

QTF Defined in the pex_qtf_layers() Function


Runset:
pex_qtf_layers(
matrix = pex_matrix,
qtf_layers = {"qtf1", "qtf2"}
);
pex_qtf_layer_map(
matrix = pex_matrix,
layer1 = TG0N,
qtf_layer = "qtf1",
tagname = "TG0N"
);

Resulting mapping file:


qtf_layers

Chapter 3: Runset Functions: J - Z


pex_qtf_layer_map() 3-467
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

qtf1
qtf2

map_qtf_layers

TG0N qtf1

Warning When QTF Layer is Not Defined in the pex_qtf_layers() Function


Runset where the “qt6f3” layer is not defined in the pex_qtf_layers() function:
pex_qtf_layers(
matrix = pex_matrix,
qtf_layers = {"qtf1", "qtf2"}
;
pex_qtf_layer_map(
matrix = pex_matrix,
layer1 = TG0N,
qtf_layer = "qtf3",
tagname = "TG0N"
);

Resulting warning message:


qtf.rs:673: warning: pex_generate_results(Layer with qtf_layer qtf3
defined in the pex_qtf_layer_map() is not defined in the
pex_qtf_layers(). It may cause accuracy problem in the StarRC-QTF
extraction.). Error during pex_generate_results.
pex_generate_results() at qtf.rs:673

Error When the Tag Name is Not Consistent


Runset functions where the tag name is not consistent between the pex_qtf_layer_map()
and pex_conducting_layer_map() functions:
pex_conducting_layer_map(
matrix = pex_matrix,
layer1 = TG0N,
process_layer = "FPOLY",
tagname = "TG0N"
);
pex_qtf_layers(
matrix = pex_matrix,
qtf_layers = {"qtf1", "qtf2"}
);
pex_qtf_layer_map(
matrix = pex_matrix,
layer1 = TG0N,
qtf_layer = "qtf1",
tagname = "TG0N_wrong"
);

Chapter 3: Runset Functions: J - Z


pex_qtf_layer_map() 3-468
IC Validator Reference Manual Version N-2017.12-SP2

Resulting error message:


qtf.rs:673: error: pex_generate_results(The tagname of the same layer is
not uniquely defined in pex_qtf_layer_map (tagname: TG0N_wrong) and
pex_conducting_layer_map (tagname: TG0N)). Error during
pex_generate_results.

See Also
init_pex_layer_matrix()
pex_generate_lpp_map()
pex_generate_process_map()
pex_qtf_layers()

Chapter 3: Runset Functions: J - Z


pex_qtf_layer_map() 3-469
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_remove_layer_map()
The pex_remove_layer_map() function stores in the PEX layer matrix a PXL layer object
as a parasitic extraction remove layer. You must call this function for every layer you want to
output to the remove_layer section of the StarRC parasitic extraction MAPPING_FILE.

Syntax
pex_remove_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
tagname = "string",
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool

Chapter 3: Runset Functions: J - Z


pex_remove_layer_map() 3-470
IC Validator Reference Manual Version N-2017.12-SP2

Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
The following example shows defining a new hash type that is used to select the layer
written to the output parasitic extraction layout database for the StarRC tool:
npterms : newtype hash of string to polygon_layer;
np_bulks : npterms;

pex_remove_layer_map(
matrix = pex_matrix,
layer1 = np_bulks["np_lp"],
tagname = "np_bulk"
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()

Chapter 3: Runset Functions: J - Z


pex_remove_layer_map() 3-471
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_remove_layer_map() 3-472
IC Validator Reference Manual Version N-2017.12-SP2

pex_runset_report_file()
The pex_runset_report_file() function generates a handle for the output of the parasitic
extraction runset report file. The file handle generated by this function is used as an input
argument to the pex_generate_database() and pex_generate_results() function.

Syntax
pex_runset_report_file(
file = "string"
);

Returns
pex_runset_report_file_handle

Arguments
file
Required. Specifies the output file name for the StarRC ICV_RUNSET_REPORT_FILE.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()

Chapter 3: Runset Functions: J - Z


pex_runset_report_file() 3-473
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_runset_report_file() 3-474
IC Validator Reference Manual Version N-2017.12-SP2

pex_simple_layer_maps()
The pex_simple_layer_maps() function explicitly specifies the tag name for a layer. You
can omit the use of this function and allow the simplified flow to automatically generate the
tag names for the layers.
The generated tag name might be unexpected or inconsistent with the layer name when
user-coded functions are involved in the related layer creation. In this case, you should
explicitly specify the tag names for the layers.
The pex_simple_layer_maps() function is designed for the simplified flow and should not
be used in combination with any other pex_*_layer_map() functions in the same PEX layer
matrix.

Syntax
pex_simple_layer_maps(
pex_matrix = pex_layer_matrix,
layer_maps = {layer1 = layer,
tagname = "string"}
);

Returns
void

Arguments
pex_matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_simple_database(), and
pex_generate_simple_results() parasitic extraction functions. The matrix must be
previously defined by the init_pex_layer_matrix() function.

layer_maps
Required. Lists the polygon, edge, and text layers that are written to the output parasitic
extraction layout database for the StarRC tool.
❍ layer1. Required. Lists the polygon, edge, and text layers that are written to the
output parasitic extraction layout database for the StarRC tool.
❍ tagname. Required. Associates a user-defined name with a PXL layer. This tag name
is used to represent the layer in all files requiring a layer identity, including the
■ Parasitic extraction runset report file
■ Parasitic extraction cell port file
■ Parasitic extraction process mapping file (StarRC MAPPING_FILE)

Chapter 3: Runset Functions: J - Z


pex_simple_layer_maps() 3-475
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)


■ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Restrictions for the tag name are:
■ Square brackets ([]) are not allowed.
■ Each specified tag name must be unique and cannot be reused in other
pex_simple_layer_maps() function calls.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
pex_matrix = init_pex_layer_matrix(device_db);
pex_simple_layer_maps(pex_matrix, {{M1, "metal1"}, {M2, "metal2"}, ...}
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_generate_simple_database()
pex_generate_simple_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_simple_layer_maps() 3-476
IC Validator Reference Manual Version N-2017.12-SP2

pex_unconnected_layer_map()
The pex_unconnected_layer_map() function writes unconnected layers to the output
parasitic extraction layout database for the StarRC tool and to the corresponding section in
the StarRC MAPPING_FILE. You can control the mapping section in which the layer is
written by specifying the layer type, including conductor, via, remove, marker, ignore, color,
or viewonly. Mapping information is also optionally written to the StarRC
OA_LAYER_MAPPING_FILE.

Syntax
pex_unconnected_layer_map(
matrix = pex_layer_matrix,
layer1 = {layer, ...},
layer_type = layertype,
process_layer = "string", //optional
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string", //optional
qtf_layer = "string",
append_string = "string", //optional
mapping_file_section_name = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Lists the polygon, edge, and text layers that are written to the output parasitic
extraction layout database for the StarRC tool.

Chapter 3: Runset Functions: J - Z


pex_unconnected_layer_map() 3-477
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layer_type
Required. Specifies the layer-type section in which the layer is written in the StarRC
MAPPING_FILE. The layers must all be unconnected unless the layer_type is
IGNORE_CAP_LAYER_TYPE or USER_DEFINED_LAYER_TYPE. If the layer_type is
IGNORE_CAP_LAYER_TYPE, some or all of the layers must be unconnected.
Note:
If all of the layers are connected, use the pex_ignore_cap_layer_map() function
instead of the pex_unconnected_layer_map() function.
If layer_type is USER_DEFINED_LAYER_TYPE, one or more layers will be specified in
layer1, and the process_layer, lpp_layer, and qtf_layer arguments are ignored.
All of the other layers in layer1, except the first layer, are declared in any of the following
mapping functions:
pex_conducting_layer_map()
pex_via_layer_map()
pex_marker_layer_map()
pex_remove_layer_map()
pex_viewonly_layer_map()
pex_color_layer_map()
pex_unconnected_layer_map()

In this case, layer_type is merely applied to the first layer in layer1, and it causes the
first layer to be written to the StarRC tool. You must declare the mappings of the other
layers in layer1.
Table 3-30 shows the layer types that can be written into the StarRC MAPPING_FILE.
Table 3-30 StarRC MAPPING_FILE Layer Types

COLOR_LAYER_TYPE CONDUCTING_LAYER_TYPE IGNORE_CAP_LAYER_TYPE

MARKER_LAYER_TYPE QTF_LAYER_TYPE REMOVE_LAYER_TYPE

VIA_LAYER_TYPE VIEWONLY_LAYER_TYPE USER_DEFINED_LAYER_TYPE

process_layer
Required. Specifies the corresponding layer from the StarRC TCAD_GRD_FILE. This
argument must be defined if the layer_type argument is CONDUCTING_LAYER_TYPE,
VIA_LAYER_TYPE, or COLOR_LAYER_TYPE.

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence® CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

Chapter 3: Runset Functions: J - Z


pex_unconnected_layer_map() 3-478
IC Validator Reference Manual Version N-2017.12-SP2

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Restrictions for the tag name are:
❍ Square brackets ([]) are not allowed.
❍ Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

qtf_layer
Required. Specifies the CONDUCTOR layer from the QTF. This argument is required if
the layer_type argument is QTF_LAYER_TYPE.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

mapping_file_section_name
Optional. Specifies a mapping file section name and the layers to be written in an entry.
This argument is referenced only when layer_type is USER_DEFINED_LAYER_TYPE.
In this case, layer_type must not be empty. The following layer types are not allowed:
conducting_layers
via_layers
marker_layers
remove_layers
viewonly_layers
color_layers
ignore_cap_layers
qtf_layers
map_qtf_layers

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


pex_unconnected_layer_map() 3-479
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
In this example, layer TEST_UN is not connected, nor is it the body layer of any devices. To
write this layer into the output database for StarRC, you declare the layer in the
pex_unconnected_layer_map() function with the layer_type CONDUCTING_LAYER_TYPE
argument.
Using the following runset
TEST_UN = assign( { {16, 0} } );
….
pex_matrix = init_pex_layer_matrix(device_db);
pex_conducting_layer_map(pex_matrix, M2, "metal2", tagname = "M2");
pex_conducting_layer_map(pex_matrix, M1, "metal1", tagname = "M1");
pex_unconnected_layer_map(
pex_matrix,
layer1 = TEST_UN,
process_layer = "metal1",
lpp_layer = {"metal1", "T1", "T3", "nil", "T4", "T5"},
tagname = "TEST_UN",
layer_type = CONDUCTING_LAYER_TYPE,
qtf_layer = "Q1",
append_string = "QA_TEST"
);

The following layer mapping is written into the conducting_layer section in the GRD mapping
file:
conducting_layers

M2 metal2
M1 metal1
field_poly fpoly
ngate gpoly
pgate gpoly
nsd SUBSTRATE
psd SUBSTRATE
welltie SUBSTRATE
subtie SUBSTRATE
NWELL SUBSTRATE
TEST_UN metal1 QA_TEST

See Also
init_pex_layer_matrix()
pex_cell_extents_file()

Chapter 3: Runset Functions: J - Z


pex_unconnected_layer_map() 3-480
IC Validator Reference Manual Version N-2017.12-SP2

pex_cell_port_file()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_unconnected_layer_map() 3-481
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pex_via_layer_map()
The pex_via_layer_map() function stores, in the PEX layer matrix, mapping between PXL
layer objects and parasitic extraction via layer parameters. You must call this function for
every layer you want to map to a StarRC layer via process layer. The layer mapping is
written to the via_layers section of the StarRC parasitic extraction MAPPING_FILE.
Mapping information is also optionally written to the StarRC OA_LAYER_MAPPING_FILE.

Syntax
pex_via_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
process_layer = "string",
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string",
device_layer = true | false, //optional
model_name = "string", //optional
via_resistance = {rpv = double, area = double}, //optional
max_via_array_length = double, //optional
max_via_array_spacing = double, //optional
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

Chapter 3: Runset Functions: J - Z


pex_via_layer_map() 3-482
IC Validator Reference Manual Version N-2017.12-SP2

process_layer
Required. Specifies the via layer from the StarRC TCAD_GRD_FILE.

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

device_layer
Optional. Corresponds to the MAPPING_FILE option of the same name. See the StarRC
User Guide and Command Reference manual for more information. The default is
false.

model_name
Optional. Corresponds to the StarRC MAPPING_FILE option MODEL. See the StarRC
User Guide and Command Reference manual for more information.

via_resistance
Optional. Stores resistance per via (rpv) and area as an ordered pair. Corresponds to the
StarRC MAPPING_FILE options rpv and area. See the StarRC User Guide and
Command Reference manual for more information.

max_via_array_length
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

max_via_array_spacing
Optional. Corresponds to the StarRC MAPPING_FILE option of the same name. See the
StarRC User Guide and Command Reference manual for more information.

Chapter 3: Runset Functions: J - Z


pex_via_layer_map() 3-483
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_via_layer_map(
matrix = pex_matrix,
layer1 = v1,
process_layer = "VIA1",
tagname = "v1",
via_resistance = {2, 0.001}
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()
pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_viewonly_layer_map()

Chapter 3: Runset Functions: J - Z


pex_via_layer_map() 3-484
IC Validator Reference Manual Version N-2017.12-SP2

pex_viewonly_layer_map()
The pex_viewonly_layer_map() function stores extra PXL layer objects within the output
StarRC parasitic extraction layout database. By default, only connected layers and resistor
device body layers can to be written to this database. However, the
pex_viewonly_layer_map() function enables additional layers not meeting these default
criteria to be written as well. Layers specified by this function are also written to the
view-only layers section of the StarRC MAPPING_FILE generated by the
pex_generate_process_map() and pex_generate_results() functions.

Syntax
pex_viewonly_layer_map(
matrix = pex_layer_matrix,
layer1 = layer,
lpp_layer = {lpp_polygon_layer = "string",
lpp_polygon_purpose = "string",
lpp_port_layer = "string",
lpp_port_purpose = "string",
lpp_subnode_layer = "string",
lpp_subnode_purpose = "string"}, //optional
tagname = "string",
append_string = "string" //optional
);

Returns
void

Arguments
matrix
Required. Specifies the PEX layer matrix in which parasitic extraction details are stored
for use by the pex_generate_database(), pex_generate_lpp_map(),
pex_generate_process_map(), and pex_generate_results() parasitic extraction
functions. (The pex_layer_matrix argument in these functions selects the PEX layer
matrix.) The matrix must be previously defined by the init_pex_layer_matrix()
function.

layer1
Required. Specifies the polygon, edge, or text layer that is written to the output parasitic
extraction layout database for the StarRC tool.

lpp_layer
Optional. Stores OpenAccess (OA) or Cadence CDBA layer purpose pairs (LPPs) to
generate the StarRC OA_LAYER_MAPPING_FILE.

Chapter 3: Runset Functions: J - Z


pex_viewonly_layer_map() 3-485
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

tagname
Required. Associates a user-defined name with a PXL layer. This tag name is used to
represent the layer in all files requiring a layer identity, including the
❍ Parasitic extraction runset report file
❍ Parasitic extraction cell port file
❍ Parasitic extraction process mapping file (StarRC MAPPING_FILE)
❍ Parasitic extraction LPP mapping file (StarRC OA_LAYER_MAPPING_FILE)
❍ Output parasitic extraction layout database (Milkyway) read by the StarRC tool
Each specified tag name must be unique and cannot be reused in other
pex_*_layer_map() function calls.

append_string
Optional. Specifies a string to be appended to the end of the corresponding mapping
entry within the StarRC MAPPING_FILE. That is, the string is used to add information to
the end of a StarRC mapping file command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function does not require any additional IC Validator licenses.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
pex_viewonly_layer_map(
matrix = pex_matrix,
layer1 = capbody,
lpp_layer = {"CAP", "drawing", "nil", "nil", "nil", "nil"},
tagname = "capbody"
);

See Also
init_pex_layer_matrix()
pex_cell_extents_file()
pex_cell_port_file()

Chapter 3: Runset Functions: J - Z


pex_viewonly_layer_map() 3-486
IC Validator Reference Manual Version N-2017.12-SP2

pex_color_layer_map()
pex_conducting_layer_map()
pex_generate_database()
pex_generate_lpp_map()
pex_generate_process_map()
pex_generate_results()
pex_ignore_cap_layer_map()
pex_library_layer_map_file()
pex_lpp_map_file()
pex_marker_layer_map()
pex_process_map_file()
pex_remove_layer_map()
pex_runset_report_file()
pex_via_layer_map()

Chapter 3: Runset Functions: J - Z


pex_viewonly_layer_map() 3-487
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

point_touching_edge() and not_point_touching_edge()


The point_touching_edge() function selects entire layer1 edges that have any point
touching with layer2 edges. Selection includes inside and outside edge point touching. The
complement of this function is the not_point_touching_edge() function.
See the Description section of the inside_point_touching_edge() function for more
information.

Syntax
point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_point_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 3: Runset Functions: J - Z


point_touching_edge() and not_point_touching_edge() 3-488
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples

layer2 is a Polygon Layer


In Figure 3-102 the red edges do not point touch. Therefore, the output includes all of the
red edges.
Figure 3-102 not_point_touching_edge() Function Example

layer2 (polygon layer)

layer1 (edge layer)

The arrow head indicates


the edge head.

See Also
inside() and not_inside()
inside_point_touching_edge() and not_inside_point_touching_edge()
outside() and not_outside()
outside_point_touching_edge() and not_outside_point_touching_edge()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()

Chapter 3: Runset Functions: J - Z


point_touching_edge() and not_point_touching_edge() 3-489
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

touching() and not_touching()


touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


point_touching_edge() and not_point_touching_edge() 3-490
IC Validator Reference Manual Version N-2017.12-SP2

polygon_centers()
The polygon_centers() function creates a square at the center of the extents of each
polygon in the input layer.

Syntax
polygon_centers(
layer1 = polygon_layer,
shape_size = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

shape_size
Optional. Specifies the size of the squares. The value must be positive. It is rounded to
the nearest even multiple of the internal resolution, with a minimum value of twice the
internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


polygon_centers() 3-491
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
Figure 3-103 shows how the polygon_centers() function creates squares for each
polygon in the specified layer.
Result = polygon_centers(layer1 = metal1, shape_size = 2.5);

Figure 3-103 polygon_centers() Function Example

metal1

Result

See Also
polygon_features()
vertex()

Chapter 3: Runset Functions: J - Z


polygon_centers() 3-492
IC Validator Reference Manual Version N-2017.12-SP2

polygon_extents()
The polygon_extents() function creates rectangles from the extents of each layer1
polygon.

Syntax
polygon_extents(
layer1 = polygon_layer,
rotate = NONE | FORTY_FIVE, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
inside_layer = polygon_layer //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

rotate
Optional. Specifies the orientation of the extents rectangle. The default is NONE.
❍ NONE. Specifies that the extents rectangle consists of horizontal and vertical edges.

❍ FORTY_FIVE. Specifies that the extents rectangle is the smallest rectangle consisting
of 45-degree edges that contains the polygon.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


polygon_extents() 3-493
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

inside_layer
Optional. Creates rectangles that are the total extents of all the layer1 polygons inside
each inside_layer polygon.
Note:
If you use this argument, the rotate argument is set to NONE.
For example,
polygon_extents(
layer1 = layerA,
inside_polygon = layerB
);

The created rectangles are shown in Figure 3-104.


Figure 3-104 inside_layer Argument Example

merged area

layerA layerB extents

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 3-105 shows how rectangles are created for each polygon in the specified layer.

Chapter 3: Runset Functions: J - Z


polygon_extents() 3-494
IC Validator Reference Manual Version N-2017.12-SP2

Result = polygon_extents(data);

Figure 3-105 polygon_extents() Function Example

data

Result

See Also
cell_extent()
edge_extents()
layer_extent()

Chapter 3: Runset Functions: J - Z


polygon_extents() 3-495
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

polygon_features()
The polygon_features() function creates user-defined geometries based on
characteristics of the input polygons. The polygons are defined as a list of xy coordinates
with each vertex listed one time. The points are ordered clockwise around the outside of the
polygon. Donuts are defined by boundaries that abut themselves.
This function calls a remote function for each polygon in the input layer. The remote function
calls various utility functions that operate on the current polygon to create new polygons and
to write these polygons to the output layer. The polygons created by this function are merged
on output.

Syntax
polygon_features(
layer1 = polygon_layer,
polygon_function = function,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
files = {ascii_file_handle, ...}, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

polygon_function
Required. Specifies the remote function. See “Polygon Features Utility Functions” on
page 4-174 for more information about the utility functions you can use to define a
remote function.

processing_mode
Optional. Specifies how the polygons are processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Polygons are defined only within the context of each individual cell.

❍ HIERARCHICAL. Polygons are defined within the context of the lowest cell that
contains the complete hierarchical polygon.

Chapter 3: Runset Functions: J - Z


polygon_features() 3-496
IC Validator Reference Manual Version N-2017.12-SP2

files
Optional. Specifies the files that can be written to using the pf_fnote() function. The
files are defined using the fopen() function. The order of the files determines the index
for accessing the files in the remote functions; the first file listed has an index of 0 (zero).

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples

Creating a Square at the Center of the Extents


This example creates a square at the center of the extents of each input polygon.
layerA = polygon_features(layer1 = metal1,
polygon_function = user_pgon_center);

where
user_pgon_center : function(void) returning void
{
curr_pgon = pf_get_current_polygon();
pgon = pf_polygon_center_square(curr_pgon, 0.01);
pf_save_polygon(pgon);
}

Filtering Polygons Based on Area


This example filters out all input polygons that have an area less than or equal to 10000.0
and it scales the resultant polygons by a factor of 2.
B = polygon_features (layer1 = layer2,
polygon_function = user_pgon_coordsX2);

where
user_pgon_coordsX2 : function(void) returning void

Chapter 3: Runset Functions: J - Z


polygon_features() 3-497
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

{
curr_pgon = pf_get_current_polygon();
pgon_area = pf_polygon_area(curr_pgon);
if (pgon_area > 10000.0)
{
out_pgon = pf_new_polygon();
num_coord = pf_polygon_num_coordinates(curr_pgon);
for (i = 0 to num_coord - 1)
{
x = pf_polygon_coordinate_x(curr_pgon, i);
y = pf_polygon_coordinate_y(curr_pgon, i);
pf_set_polygon_coordinate(out_pgon, x*2, y*2, i);
}
pf_save_polygon(out_pgon);
/* This call writes to the summary file,
and to screen when you use the -verbose option */
note("pgon area = " + pgon_area +
", num pgon coordinates = " + num_coord + "\n");
}
}

See Also
polygon_centers()
polygons()
vertex()

Chapter 3: Runset Functions: J - Z


polygon_features() 3-498
IC Validator Reference Manual Version N-2017.12-SP2

polygons()
The polygons() function creates polygons in the top cell using specified coordinates. The
function can generate multiple polygons. Intersecting polygons are merged in the result.

Syntax
polygons(
coordinates = {{{x = double, y = double}, ...}, ...},
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
coordinates
Required. Lists the xy coordinate pairs for each created polygon. These coordinates are
scaled by the magnification_factor argument of the library() function. The
coordinates can be either
❍ Two coordinates, which are interpreted as the opposing corners of a rectangle.
❍ Three or more coordinates, which define the outer boundary of a closed polygon. You
do not need to repeat the first coordinate at the end of the list. The coordinates can
be ordered in either direction around the polygon.
Note:
Polygons, or portions of polygons with no area, are ignored. Areas of self-intersection
are left empty and a warning is given.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


polygons() 3-499
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
Figure 3-106 shows an example of the polygons() function.
mypolys = polygons({
{{-1,-1}, {0,0}, {-1,0}}, // small triangle at left corner of image
{{3.5,4.5}, {10,10}}, // big rectangle in image
{{5,5}, {3,4}} // small rectangle in image
});

Figure 3-106 polygons() Function Example

10

5
4

-1 3 5 10

-1

See Also
polygon_features()

Chapter 3: Runset Functions: J - Z


polygons() 3-500
IC Validator Reference Manual Version N-2017.12-SP2

property_annotation_file()
The property_annotation_file() function defines an annotation file name. This file is
specified in the output_file argument of write_annotation_file().

Syntax
property_annotation_file(
file = "string" //optional
);

Returns
property_annotation_file_handle

Arguments
file
Optional. Specifies the annotation file name. The file must be gzipped and have the
extension .gz. The default is "anno.gz".

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
extract_devices()
write_annotation_file()

Chapter 3: Runset Functions: J - Z


property_annotation_file() 3-501
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

property_layer_convert()
The property_layer_convert() function copies a version of the polygon layer from the
original property layer. This polygon layer inherits the layer1 properties that were originally
saved using the nps_read_property() utility function.
For DRC and device property computations, the property on the output polygon layer can be
read using the df_get_polygon_double_property() and
dev_get_polygon_double_property() utility functions, respectively.

Syntax
property_layer_convert(
layer1 = property_layer
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the property layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


property_layer_convert() 3-502
IC Validator Reference Manual Version N-2017.12-SP2

property_to_net()
The property_to_net() function attaches properties to nets. A remote function is
executed one time for each net in the connect database. Utility routines are provided in the
remote function to aid in generating the desired net property value.
This function is typically used in conjunction with the annotate_by_property(),
external*(), and drc_features*() functions in delta voltage applications.
Note:
If the connect() or incremental_connect() function processes the connect database
generated by property_to_net(), the attached net properties are removed. To add
layers to the connect database and retain the net properties, use the stamp() function.

Syntax
property_to_net(
connect_sequence = connect_database,
net_property_function = function,
layer_groups = {"string" => {polygon_layer, ...}, //optional
...},
sync_layers = {{"string1" => polygon_layer1, //optional
"string2" => polygon_layer2},
...},
sync_name = "string"
);

Returns
connect database

Arguments
connect_sequence
Required. Specifies the connect database.

net_property_function
Required. Specifies the remote function containing the conditions that extract the
layer-based properties and various net-based geometric characteristics needed to
generate the desired net property.
The remote function is called one time for every net in the input connect database. It
extracts properties from polygons on layers specified by the layer_groups argument
that are on the net being processed.
See “Property to Net Utility Functions” in Chapter 4 for more information about the utility
functions you can use to define this remote function.

Chapter 3: Runset Functions: J - Z


property_to_net() 3-503
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

layer_groups
Optional. Specifies the hash of string to polygon layers. The strings are used by the
remote function to access layer-based properties and net-based geometric
characteristics on a given net. The default is an empty hash.

sync_layers
Optional. Lists the hash of string to polygon layer. The strings are used by the remote
function to access polygons that can sync nets. If a synchronized polygon touches
polygons from different nets, those two nets can be considered in sync. The default is an
empty hash.
Note:
Nets are typically declared in sync in delta voltage applications when both nets are
turned to high or low voltage at the same time.

sync_name
Optional. Specifies the property name to be used to store the sync ID property value.
Note that sync net properties are created only for nets that are in sync with other nets.
Nets that are in sync have the same sync ID property value.
The sync net property is generated automatically; therefore, remote block runset code is
not needed. You can use this property name later in the annotate_by_property()
function to obtain the sync ID property values stored by property_to_net().

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following example shows the property_to_net() function usage in a delta voltage
flow:
METAL1_H = text_to_double_property( METAL1_HIGH, "high", MAX);
METAL1_L = text_to_double_property( METAL1_LOW, "low", MIN);

net_voltage : function (void) returning void


{
if (ptn_get_max_double_property("mvh", "high", vh_temp)) {
vh = vh_temp;
} else {
vh = 0.0;
}

Chapter 3: Runset Functions: J - Z


property_to_net() 3-504
IC Validator Reference Manual Version N-2017.12-SP2

if (ptn_get_min_double_property("mvl", "low", vl_temp)) {


vl = vl_temp;
} else {
vl = 0.0;
}

ptn_save_double_property("high", vh);
ptn_save_double_property("low", vl);
}

CONNECT_DB_DV = incremental_connect( CONNECT_DB_DV, {


{{METAL1_H}, METAL1},
{{METAL1_L}, METAL1},
} );

cdb_dv = property_to_net(
connect_sequence = CONNECT_DB_DV,
sync_layers = {
{"m1"=>METAL1, "m1_sync"=>METAL1_SYNC},
},
net_property_function = net_voltage,
layer_groups = {
"mvh"=>METAL1_H,
"mvl"=>METAL1_L
},
sync_name = "sync"
);
METAL11_prop = annotate_by_property(cdb_dv, METAL1, {"high", "low",
"sync"});
METAL1_H_prop = select_by_double_property(METAL1_prop, "high", < 1);
METAL1_L_prop = select_by_double_property(METAL1_prop, "low", < 2);

errs = external1_error(METAL1, < 0.10, extension = RADIAL, look_thru =


NOT_ADJACENT, intersecting = { }, extension_look_past = POINT_TO_POINT);

dv_space : function (void) returning void


{
vh : list of double = {0,0};
vl : list of double = {0,0};
ce = df_get_current_data();
ps = df_polygon_layer(ce, "met");

if (df_polygon_count(ps) == 2) {
stat = true;
for (i=0 to 1) {
stat = stat && df_get_polygon_double_property(ps, i, "high",
vh[i]);
stat = stat && df_get_polygon_double_property(ps, i, "low",
vl[i]);
}
if(df_polygon_same_net({ps})){
if (stat && (dblgt(abs(vh[0] - vh[1]) ,0.10)) || (dblgt(abs(vl[0]

Chapter 3: Runset Functions: J - Z


property_to_net() 3-505
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- vl[1]) ,0.10))) {
df_save_data(ce);
}
}
}
}

drc_features_error (
include_touch = ALL,
primary_layer = errs,
secondary_layers = {"met"=>METAL1_prop},
drc_function = dv_space,
output_from_layer = errs
);

See Also
annotate_by_property()
text_to_double_property()

Chapter 3: Runset Functions: J - Z


property_to_net() 3-506
IC Validator Reference Manual Version N-2017.12-SP2

prototype_options()
The prototype_options() function defines the criteria for the creation of prototype cells
during hierarchical preprocessing. (The creation of prototype cells is a hierarchical
optimization.) If this function is not in the runset, it is automatically invoked with the default
values. This function can be called only one time in a runset.
• Cells placed at a rotation that is not a multiple of 90 degrees are replaced with prototype
cells.
• Cells that are placed with a magnification other than 0 are replaced with prototype cells.
• Relatively large cells that are rotated can be replaced with prototype cells to facilitate
data management.

When new prototype cells are generated, the new cell names contain a suffix indicating the
rotation and reflection of the original cell that is represented by the new prototype cell.
Common angles are abbreviated by the quadrant where they are located. Unusual angles
have longer, more descriptive suffixes. Table 3-31 shows common cell-naming conventions.
Table 3-31 Common Cell-Naming Conventions

New cell name Degree of rotation Reflection

INV_1Q 0 no reflection

INV_2Q 90 no reflection

INV_3Q 180 no reflection

INV_4Q 270 no reflection

INV_1R 0 reflected

INV_2R 90 reflected

INV_3R 180 reflected

INV_4R 270 reflected

INV_45D_0R 45 no reflection

INV_135D_1R 135 reflected

Chapter 3: Runset Functions: J - Z


prototype_options() 3-507
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In addition, a new cell named with the suffix _0x is generated to contain all polygon content
of the original cell that is unaffected by directional operations in the runset. This _0x cell is
instantiated by each generated prototype cell from Table 3-31.
In runsets that have extensive use of directional operations, creation of prototype cells can
provide improved performance. Examples of directional operations are shrink(), grow(),
and move(), and the use of the direction argument in spacing checks, such as
external1(). The prototype cells provide a hierarchical location for the results of directional
operations. Otherwise, storing the directional results can cause considerable flattening of
data.
Note:
The creation of prototype cells can cause a significant increase in the number of cells.
This increase causes overhead for the entire runset. Because most applications have
few directional operations, do not use prototype cells unless a specific performance
problem with a directional operation is detected.
If prototype cells are desired, set symmetry to AUTOMATIC. The prototype cells are created
in accordance with directional operations that appear in the runset.
Warning:
Other settings of symmetry are for debugging or advanced applications only and should
be used with caution.

Syntax
prototype_options(
large_cells = true | false, //optional
symmetry = FULL | HORIZONTAL_AXIS | VERTICAL_AXIS |
DUAL | ROTATIONAL | ASYMMETRIC | AUTOMATIC //optional
);

Returns
void

Arguments
large_cells
Optional. Specifies whether relatively large cells that are rotated can be replaced with
prototype cells. This argument affects only large cells, and it is independent of the
symmetry argument. The default is true.

❍ true. Prototypes large cells to facilitate data management.

❍ false. Disables optimization.

Chapter 3: Runset Functions: J - Z


prototype_options() 3-508
IC Validator Reference Manual Version N-2017.12-SP2

symmetry
Optional. Describes the symmetry of the directional inputs in the runset. This argument
affects all cells regardless of cell size, and it is independent of the large_cells
argument. The default is FULL.
❍ FULL. Does not create additional prototype cells. Use this option when there are no
directional operations in the runset, or there is complete symmetry of directional
specifications.
❍ AUTOMATIC. Automatically chooses one of the other symmetry settings.
When not set to FULL,
❍ Cells are prototyped in accordance with the specified axes of symmetry to resolve the
instance specificity of directional operations.
Warning:
The remaining settings of the symmetry argument are only for debugging or
advanced applications. Use these settings with caution.
❍ HORIZONTAL_AXIS. Prototypes cells to facilitate directional inputs that have a
horizontal axis of symmetry.
❍ VERTICAL_AXIS. Prototypes cells to facilitate directional inputs that have a vertical
axis of symmetry.
❍ DUAL. Processes hierarchy to improve performance of directional commands for cell
placements with 90 or 270 angle.
❍ ROTATIONAL. Prototypes cells to facilitate directional inputs that have rotational
symmetry, such as for using with the extend_edge() function.
❍ ASYMMETRIC. Replaces all cells that are rotated or reflected with prototype cells. This
results in a hierarchy without any rotation or reflection. Use this option when there is
no symmetry in directional operations.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
prototype_options ( symmetry = DUAL );

Chapter 3: Runset Functions: J - Z


prototype_options() 3-509
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
grow()
move()
shrink()

Chapter 3: Runset Functions: J - Z


prototype_options() 3-510
IC Validator Reference Manual Version N-2017.12-SP2

pull_down()
The pull_down() function creates a copy of the layer1 layer by moving data down to the
lowest possible hierarchical level. The intersection of the data overlapping all placement
extents of a given cell is cut out and moved into the cell. Pulled data is removed from its
original position. The extents are determined by all layers that appear in assign functions.In
this context,
• Data refers to any active area.
• Moved down refers to being translated from ancestors into descendants.
• Depth is measured from bottom up, so lowest or deepest refers to how close the cell is
to the leaf cells, not how far it is from the top cell.

Syntax
pull_down(
layer1 = polygon_layer,
duplicate = LOWEST | ALL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is copied.

duplicate
Optional. Specifies which descendants can have copies of the data moved into them. In
cases where sibling cells overlap geographically, data moves down multiple branches of
a given subtree. The default is LOWEST.
❍ LOWEST. Duplicates data only in those descendants that are at the lowest level to
which data is moving.
In the hierarchical tree example shown in Figure 3-107,
■ Data in cell T that can be moved down into both cell A and cell B appears only in
A because B is not as deep as A.
■ Data in cell T that can be moved down into both cell A and cell C appears in both
because A and C are at the deepest level to which data is moving.

Chapter 3: Runset Functions: J - Z


pull_down() 3-511
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-107 Example Hierarchical Tree

A B

❍ ALL. Duplicates data in any branch of the subtree, even when the destination is not at
the lowest level to which data is moving.
In the preceding hierarchical tree example, data in cell T that can be moved down into
both cell A and cell B appears in both.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
new_gate = pull_down(gate);

See Also
level()
level_edge()

Chapter 3: Runset Functions: J - Z


pull_down() 3-512
IC Validator Reference Manual Version N-2017.12-SP2

level_to()
level_to_edge()
pull_down_edge()
pull_down_to()
pull_down_to_edge()

Chapter 3: Runset Functions: J - Z


pull_down() 3-513
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pull_down_edge()
The pull_down_edge() function creates a copy of the layer1 layer by moving data down
to the lowest possible hierarchical level. The intersection of the data overlapping all
placement extents of a given cell is cut out and moved into the cell. The pulled data is
removed from its original position. The extents are determined by all layers that appear in
assign functions. In this context,
• Data refers to edges or edge segments.
• Moved down refers to being translated from ancestors into descendants.
• Depth is measured from bottom up, so lowest or deepest refers to how close the cell is
to the leaf cells, not how far it is from the top cell.

Syntax
pull_down_edge(
layer1 = edge_layer,
duplicate = LOWEST | ALL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer that is copied.

duplicate
Optional. Specifies which descendants can have copies of the data moved into them. In
cases where sibling cells overlap geographically, data moves down multiple branches of
a given subtree. The default is LOWEST.
See the hierarchical tree example shown in Figure 3-107 in the pull_down() function
description for more information.
❍ LOWEST. Duplicates data only in those descendants that are at the lowest level to
which data is moving.
❍ ALL. Duplicates data in any branch of the subtree, even when the destination is not at
the lowest level to which data is moving.

Chapter 3: Runset Functions: J - Z


pull_down_edge() 3-514
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
new_gate_edges = pull_down_edge(gate_edges);

See Also
level()
level_edge()
level_to()
level_to_edge()
pull_down()
pull_down_to()
pull_down_to_edge()

Chapter 3: Runset Functions: J - Z


pull_down_edge() 3-515
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pull_down_to()
The pull_down_to() function creates a copy of the layer1 polygon layer by moving data
down to the lowest possible hierarchical level of cells containing layer2. The intersection of
the data overlapping all placement extents of a given cell is cut out and moved into the cell.
The pulled data is removed from its original position. The extents are determined by all
layers that appear in assign functions. In this context,
• Data refers to any active area.
• Moved down refers to being translated from ancestors into descendants.
• Depth is measured from bottom up, so lowest or deepest refers to how close the cell is
to the leaf cells, not how far it is from the top cell.

Syntax
pull_down_to(
layer1 = polygon_layer,
layer2 = data_layer,
duplicate = LOWEST | ALL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is copied.

layer2
Required. Specifies the layer to which data is pulled.

duplicate
Optional. Specifies which descendants can have copies of the data moved into them. In
cases where sibling cells overlap geographically, data moves down multiple branches of
a given subtree. The default is LOWEST.
See the hierarchical tree example shown in Figure 3-107 in the pull_down() function
description for more information.
❍ LOWEST. Duplicates data only in those descendants that are at the lowest level to
which data is moving.

Chapter 3: Runset Functions: J - Z


pull_down_to() 3-516
IC Validator Reference Manual Version N-2017.12-SP2

❍ ALL. Duplicates data in any branch of the subtree, even when the destination is not at
the lowest level to which data is moving.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
green = pull_down_to(blue, layer2);

Figure 3-108 shows cell A, placed twice, with extents shown in black. Two blue polygons on
layer1 in the parent cell overlap the extents of cell A.

Figure 3-108 pull_down_to() Function Example

Chapter 3: Runset Functions: J - Z


pull_down_to() 3-517
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-109 shows one green polygon in Cell A.


Figure 3-109 pull_down_to() Function Example

Figure 3-110 shows that the data is removed from the parent.
Figure 3-110 pull_down_to() Function Example

See Also
level()
level_edge()
level_to()
level_to_edge()
pull_down()
pull_down_edge()
pull_down_to_edge()

Chapter 3: Runset Functions: J - Z


pull_down_to() 3-518
IC Validator Reference Manual Version N-2017.12-SP2

pull_down_to_edge()
The pull_down_to_edge() function creates a copy of the layer1 edge layer by moving
data down to the lowest possible hierarchical level of cells containing layer2. The
intersection of the data overlapping all placement extents of a given cell is cut out and
moved into the cell. The pulled data is removed from its original position. The extents are
determined by all layers that appear in assign functions. In this context,
• Data refers to edges or edge segments.
• Moved down refers to being translated from ancestors into descendants.
• Depth is measured from bottom up, so lowest or deepest refers to how close the cell is
to the leaf cells, not how far it is from the top cell.

Syntax
pull_down_to_edge(
layer1 = edge_layer,
layer2 = data_layer,
duplicate = LOWEST | ALL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer that is copied.

layer2
Required. Specifies the layer to which data is pulled.

duplicate
Optional. Specifies which descendants can have copies of the data moved into them. In
cases where sibling cells overlap geographically, data moves down multiple branches of
a given subtree. The default is LOWEST.
See the hierarchical tree example shown in Figure 3-107 in the pull_down() function
description for more information.
❍ LOWEST. Duplicates data only in those descendants that are at the lowest level to
which data is moving.

Chapter 3: Runset Functions: J - Z


pull_down_to_edge() 3-519
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ALL. Duplicates data in any branch of the subtree, even when the destination is not at
the lowest level to which data is moving.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
new_gate_edges = pull_down_to_edge(gate_edges, diff);

See Also
level()
level_edge()
level_to()
level_to_edge()
pull_down()
pull_down_edge()
pull_down_to()

Chapter 3: Runset Functions: J - Z


pull_down_to_edge() 3-520
IC Validator Reference Manual Version N-2017.12-SP2

python_validate()
The python_validate() function resolves the directory location of the specified Python
module file, by using the IC Validator -I command-line option, and checks the file for Python
parse errors. You can specify the returned, fully-qualified directory path to the Python
module file with the module_file argument in the eerc_analyze_netlist() function. You
can also use the python_validate() function just to check for Python parse errors in
user-defined Python modules.

Syntax
python_validate(
filename = "string"
);

Returns
string or void

Arguments
filename
Required. Specifies the name of the Python module file to be located or checked for
Python parse errors.

Command Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the IC Validator Advanced license.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information.

Examples
This example shows how to use the python_validate() function to get the full path to the
Python module file used in a subsequent eerc_analyze_netlist() function. The function
also checks the check.py Python module file for Python parse errors.
The runset files, including the Python module files, are located in the Includes subdirectory
of the current working directory.
The following command calls the IC Validator tool:
icv -I Includes eerc.rs

Chapter 3: Runset Functions: J - Z


python_validate() 3-521
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The following code is in eerc.rs:


check_module = python_validate("check.py");
eerc_analyze_netlist(check_module, "check_MOS()", layout_db);

See Also
eerc_analyze_netlist()

Chapter 3: Runset Functions: J - Z


python_validate() 3-522
IC Validator Reference Manual Version N-2017.12-SP2

read_group()
The read_group() function imports layers written by the write_group() function in a
previous IC Validator run to a specified library. The read_group() function matches cells by
name and matches cell placements by xy position, rotation, and reflection. For the returned
polygon layer, the read_group() function flattens cells from the input layer that do not
match a placement in the current run. Flattening occurs for
• Cell placements that moved slightly or were deleted
• Cells that are in the delete or explode lists
• Cells whose names have changed

Before using the read_group() function, the input library must have been defined using the
group_library() function and written using the write_group() function in a previous run.
Note:
Multiple read_group(), read_group_edge(), and read_group_text() functions can
use the same handle within a run; however, they cannot have the same handle as a
write_group() function within that run.

Syntax
read_group(
input_library = group_library_handle,
label = "string",
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
input_library
Required. Specifies the group library handle. The handle is defined using the
group_library() function.

label
Required. Specifies a string defined by the write_group() function that used to
reference the saved layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 3: Runset Functions: J - Z


read_group() 3-523
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
run1.rs:
POLY = assign({{17}});
. . .
aHandle = group_library("./save1");
/*
write_group() writes layer POLY to "./save1" as "L17" for future use.
POLY is output from any function.
L17 is any label (or name).
*/

write_group(aHandle, {{POLY, "L17"}, ...});


. . .

run2.rs:
. . .
aHandle = group_library("./save1");
/*
read_group() retrieves the previously saved layer, "L17",
from "./save1".
Use the same label "L17" as used by write_group() in run1.rs.
*/

POLY = read_group(aHandle, "L17");

/*
Use POLY layer in any appropriate function.
*/

DIFF = xor(POLY, ...);


. . .

See Also
group_library()
read_group_edge()
read_group_text()

Chapter 3: Runset Functions: J - Z


read_group() 3-524
IC Validator Reference Manual Version N-2017.12-SP2

write_group()

Chapter 3: Runset Functions: J - Z


read_group() 3-525
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

read_group_edge()
The read_group_edge() function imports layers written by the write_group() function in
a previous IC Validator run to a specified library. The read_group_edge() function matches
cells by name and matches cell placements by xy position, rotation, and reflection. For the
returned edge layer, the read_group_edge() function flattens cells from the input layer that
do not match a placement in the current run. Flattening occurs for
• Cell placements that moved slightly or were deleted,
• Cells that are in the delete or explode lists,
• Cells whose names have changed,

Before using the read_group_edge() function, the input library must have been defined
using the group_library() function and written using the write_group() function in a
previous run.
Note:
Multiple read_group(), read_group_edge(), and read_group_text() functions can
use the same handle within a run; however, they cannot have the same handle as a
write_group() function within that run.

Syntax
read_group_edge(
input_library = group_library_handle,
label = "string",
name = "layer_label" //optional
);

Returns
edge layer

Arguments
input_library
Required. Specifies the group library handle. The handle is defined using the
group_library() function.

label
Required. Specifies a string defined by a write_group() function that is used to
reference the saved layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed

Chapter 3: Runset Functions: J - Z


read_group_edge() 3-526
IC Validator Reference Manual Version N-2017.12-SP2

processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the read_group() function for more information.

See Also
group_library()
read_group()
read_group_text()
write_group()

Chapter 3: Runset Functions: J - Z


read_group_edge() 3-527
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

read_group_text()
The read_group_text() function imports layers written by the write_group() function in
a previous IC Validator run to a specified library. The read_group_text() function matches
cells by name and discards mismatched cells from the input layer.
Before using the read_group_text() function, the input library must have been defined
using the group_library() function and written using the write_group() function in a
previous run.
Note:
Multiple read_group(), read_group_edge(), and read_group_text() functions can
use the same handle within a run; however, they cannot have the same handle as a
write_group() function within that run.

Syntax
read_group_text(
input_library = group_library_handle,
label = "string",
name = "layer_label" //optional
);

Returns
text layer

Arguments
input_library
Required. Specifies the group library handle. The handle is defined using the
group_library() function.

label
Required. Specifies a string defined by a write_group() function that is used to
reference the saved layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


read_group_text() 3-528
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the read_group() function for more information.

See Also
group_library()
read_group()
read_group_edge()
write_group()

Chapter 3: Runset Functions: J - Z


read_group_text() 3-529
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

read_layout_netlist()
The read_layout_netlist() function reads one of the two netlists compared in the
netlist-versus-netlist flow and translates it to IC Validator netlist format, if the netlist is not
already in that format and uncompressed. In a netlist-versus-netlist flow, the netlist imported
by the read_layout_netlist() function is designated as the layout netlist, even though
this netlist can be generic and can originate from any source.
Note:
In a SPICE flow (that is, when the lvs_netlist_flow argument of the run_options()
function is SPICE), the schematic file, which is in SPICE format, is not translated. For a
SPICE flow, the -sf command-line option can only be set to SPICE.
The result of this function is used by the compare() function. The NetTran utility does the
translation.
Note:
When you set the -lnf command-line option to ICV, the read_layout_netlist()
function does not run NetTran. In this situation, the IC Validator tool uses the netlist
specified by the -ln option for LVS compare.

Syntax
read_layout_netlist(
layout_file = {{filename = "string",
format = SPICE | VERILOG | ICV},
...},
global_nets = {"string", ...}, //optional
expand_multiple_devices = true | false, //optional
uppercase = true | false, //optional
cell = "string", //optional
add_cell_ports = {"string", ...}, //optional
output_netlist_file = "string", //optional
remove_devices = {"string", ...}, //optional
remove_device_instances = {"string", ...}, //optional
spice_settings = {short_out_devices = {"string", ...},
short_voltage_threshold = double,
remove_instance_prefix = true | false,
remove_device_prefix = true | false,
device_map_file = "string",
ignore_cdl_resi = true | false,
resolve_duplicate_instances = true | false,
duplicate_port = ABORT | WARNING,
scale = double}, //optional
verilog_settings = {global_ground = "string",
global_power = "string",
bus_start_bit = HIGH | LOW,
global_net_map_file = "string",
retain_backslash = true | false, //optional
prefer_module_supply = true | false, //optional

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-530
IC Validator Reference Manual Version N-2017.12-SP2

localize_module_supply = true | false, //optional


localize_global_supply = true | false}, //optional
floating_pins = ABORT | ALLOW, //optional
retain_comments = {SPICE, VERILOG, ICV}, //optional
duplicate_cell = ABORT | USE_MULTIPLE | USE_ONE //optional
);

Returns
layout_netlist_file_handle

Arguments
layout_file
Required. Specifies a list of layout files, including the optional path, and their format. The
formats are SPICE, VERILOG, and ICV. The default is ICV.
The file name can be overwritten with the -ln command-line option, and the format can
be overwritten with the -lnf command-line option. (See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.)

global_nets
Optional. Specifies the IC Validator global nets. The default is an empty list.

expand_multiple_devices
Optional. Specifies if devices are netlisted multiple times. The default is false.
❍ true. Lists devices in the netlist multiple times.

❍ false. Does not netlist the device multiple times.

uppercase
Optional. Specifies if input is converted to uppercase characters. The default is false.
❍ true. Converts input to uppercase characters.

❍ false. Does not convert input to uppercase characters.

cell
Optional. Specifies the top cell for the output netlist. The top cell is also the cell to which
ports are added using the add_cell_ports argument. Only cells contained in the
hierarchy of this top cell are output. The default is an empty string (""), meaning that all
cells in the input netlist are translated into the output netlist.

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-531
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

add_cell_ports
Optional. Specifies the ports to add to the cell specified by the cell argument. By
default, the IC Validator tool does not add ports to any cells.

output_netlist_file
Optional. Specifies the output netlist file. If the file already exists, the content of the file is
overwritten. The default name is "cell.sch_out".

remove_devices
Optional. Filters out the devices that have specific model names.

remove_device_instances
Optional. Filters out the devices that have specific instance names. You can use the "*"
metacharacter.

spice_settings
Optional. Specifies settings related to SPICE translations. For Boolean arguments set to
false, the described behavior is not enabled.

❍ short_out_devices. Specifies the resistors, capacitors, and inductors that are


filtered out. After the devices are removed, the two pins are shorted.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-fshort command-line option. See the -sp-fshort command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ short_voltage_threshold. Specifies the voltage source threshold value for shorts.
By default, the IC Validator tool replaces all voltage sources in SPICE designs with an
open. Use this setting to override the open with a short. All sources with a DC voltage
of less than or equal to the threshold are replaced by a short.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-voltThresh command-line option. See the -sp-voltThresh command-line
option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ remove_instance_prefix. Specifies if the leading X prefix in SPICE instance
names is stripped. The default is false.
■ true. Strips the leading X prefix in SPICE instance names.

■ false. Does not strip the prefix.


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-chopXPrefix command-line option. See the -sp-chopXPrefix command-line

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-532
IC Validator Reference Manual Version N-2017.12-SP2

option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ remove_device_prefix. Specifies if the leading R, L, C, Q, D, and M prefixes in
SPICE instance names are stripped. The default is false.
■ true. Strips the leading R, L, C, Q, D, and M prefixes in SPICE instance names
during netlist read-in and before any netlist processing, such as flattening.
■ false. Does not strip the prefixes.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-chopDevPrefix command-line option. See the -sp-chopDevPrefix
command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ scale. Overwrites the scaling factor (*.SCALE and .OPTION SCALE) for all input
netlists in the SPICE format. If this argument is not specified, the scaling factor
follows the existing scaling syntax of the input SPICE netlist.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-scale command-line option. See the -sp-scale command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ device_map_file. Specifies a map of device model names to new names. See the
CDL Map File section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for an example of the mapping file format.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-devMap command-line option. See the -sp-devMap command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ ignore_cdl_resi. Specifies if *.RESI statements in the netlist are ignored. The
default is false.
■ true. Does not short the resistors specified in the *.RESI statements.

■ false. Shorts the resistors specified in the *.RESI statements.


When the IC Validator tool runs NetTran, this argument corresponds to the NetTran
-sp-ignoreCdlResi command-line option. See the -sp-ignoreCdlResi
command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ resolve_duplicate_instances. If duplicate instance names are found within the
same cell, you can rename these instance names by adding a suffix to the following
format: DUP#index. The new names do not cause any naming collisions. The default
is false.

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-533
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

When the IC Validator tool runs NetTran, this argument corresponds to the NetTran
-sp-resolveDupInstances command-line option. See the
-sp-resolveDupInstances command-line option in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide
for more information.
❍ duplicate_port. Controls the duplicate ports in the SPICE cell port list (implicitly
defined). For a $PINS statement, duplicate pins are not allowed. The default is
WARNING.
Note:
The -sp-dupPort NetTran command-line option provides the same functionality.
■ ABORT. Reports an error and aborts the run at the cell definition.

■ WARNING. Shorts the duplicate ports and gives a warning message.

verilog_settings
Optional. Specifies settings related to Verilog translations. For Boolean arguments set to
false, the described behavior is not enabled.

❍ global_ground. Specifies the Verilog global ground net.


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-b0 command-line option. See the -verilog-b0 command-line option in
the Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ global_power. Specifies the Verilog global power net.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-b1 command-line option. See the -verilog-b1 command-line option in
the Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ bus_start_bit. Specifies if Verilog buses start with the most or least significant bit
first in the bus range. The default is HIGH.
■ HIGH. Starts the buses with the most significant bit, for example, Y[7:0].

■ LOW. Starts the buses with the least significant bit, for example, Y[0:7].
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-busLSB command-line option. See the -verilog-busLSB command-line
option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ global_net_map_file. Specifies the Verilog global net mapping file.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-voltmap command-line option. See the -verilog-voltmap

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-534
IC Validator Reference Manual Version N-2017.12-SP2

command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ retain_backslash. Specifies if the backslash (\) is retained on Verilog net names.
The default is false.
■ true. Retains the backslash (\) on Verilog net names.

■ false. Does not retain the backslash (\) on Verilog net names.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-R command-line option. See the -verilog-R command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ prefer_module_supply. Changes the precedence of 1) user-specified global supply
nets, 2) local supply nets, and 3) default global supply nets, VDD and VSS. The
default is false.
■ true. Supply net precedence is 2) > 1) > 3).

■ false. Supply net precedence is 1) > 2) > 3).


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-preferModuleSupply command-line option. See the
-verilog-preferModuleSupply command-line option in the Command-Line Syntax
for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ localize_module_supply. Changes the precedence of 1) user-specified global
supply nets, 2) local supply nets, and 3) default global supply nets, VDD and VSS.
Global net generation for local supply nets can be disabled as well. The default is
false.

■ true. Supply net precedence is 2) > 1) > 3). Global net generation for local supply
nets is disabled.
■ false. Supply net precedence is 1) > 2) > 3).
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-localizeModuleSupply command-line option. See the
-verilog-localizeModuleSupply command-line option in the Command-Line
Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ localize_global_supply. Disables global net generation of user-specified global
supply nets and default global supply nets, VDD and VSS. The default is false.
■ true. Global net generation for global supply nets is disabled.

■ false. Global net generation for global supply nets is not disabled.

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-535
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-localizeGlobalSupply command-line option. See the
-verilog-localizeGlobalSupply command-line option in the Command-Line
Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.

floating_pins
Optional. Reports if floating pins are detected. If you use the duplicate_cell argument
with the floating_pins argument, the NetTran utility tries to select duplicate cell
definitions that are not floating pins. The default is ALLOW.
See the -noFloatingPins command-line option in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide for
more information.
❍ ALLOW. Allows floating pins. When the NetTran utility detects a floating pin, it reports
a warning message. For the port that does not have a corresponding pin connection,
a dummy net, with the name icv_floatnet_xx, is added. See the Translating Standard
Netlists to IC Validator Format section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ ABORT. Does not allow floating pins. When the NetTran utility detects a floating pin, it
reports an error message.

retain_comments
Optional. Retains comments from the input netlist in the output netlist for the specified
formats. The default is that comments are not output.
Note:
This argument will be retired.
See the -retainComments command-line option in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide more
information.

duplicate_cell
Optional. Specifies how to handle multiple cell definitions having the same name. The
default is USE_MULTIPLE.
❍ ABORT. Reports an error and aborts the run if more than one cell contains the same
cell name. The -dupCell ABORT NetTran command-line option provides the same
functionality.
❍ USE_MULTIPLE. Specifies the cell definition by using the following rules:

■ Each instance (placement) selects a cell definition with the same netlist type, if it
exists.

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-536
IC Validator Reference Manual Version N-2017.12-SP2

■ Each instance (placement) selects a cell definition in the same file, if it exists.
■ If there is no cell definition with the same netlist type or in the same file, NetTran
selects a random cell definition.
The -dupCell USE_MULTIPLE NetTran command-line option provides the same
functionality.
❍ USE_ONE. Selects the first-read definition as the master definition for all instances. If
both empty and non-empty duplicate .subckt cells exist in the input netlists, NetTran
selects the first read non-empty definition. If there are multiple netlist type definitions,
NetTran follows this priority: SPICE -> VERILOG -> ICV, to select the master
definition regardless of input order.
The -dupCell USE_ONE NetTran command-line option provides the same
functionality.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function does not require any additional licenses.
Shared licensing. This function requires the following IC Validator license: NET-TRAN.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
schematic()
write_spice()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


read_layout_netlist() 3-537
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

recalculate_property()
The recalculate_property() function creates or modifies device properties before
merging and comparison in an LVS flow. The result of the recalculate_property()
function can be used by compare functionality that reads device properties to affect the
netlist comparison. Some examples are:
• The exclude_tolerances and property_functions arguments of the
merge_parallel() and merge_series() functions

• The property_tolerances argument of the check_property() function


• The lvs_get_double_property() compare utility function.

Syntax
recalculate_property(
state = compare_state,
device_type = NMOS | PMOS | NPN | PNP | NP | PN |
RESISTOR | CAPACITOR | INDUCTOR | GENERIC,
device_names = {"string", ...}, //optional
property_function = "string", //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
recalculate_property() function is added.

device_type
Required. Specifies the device type.

device_names
Optional. Specifies the layout devices. Each device must match a device specified in a
device_name argument of a device configuration function.

Chapter 3: Runset Functions: J - Z


recalculate_property() 3-538
IC Validator Reference Manual Version N-2017.12-SP2

property_function
Optional. Specifies the remote function that recalculates properties. See “Compare Utility
Functions” in Chapter 4 for more information about the utility functions you can use to
define a remote function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which the
recalculate_property() function applies. You must specify the equiv_cells pairs in
the equiv_options() function before calling the merge_series() function. If only one
cell name in the pair is specified, the names are assumed to be the same.
Note:
The recalculate_property() instruction is observed only when comparing each
listed equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the recalculate_property()
instruction is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
In the following example, before comparing properties the new W property needs to be
recalculated. In the runset, the recalculate_property() and compare() functions are in
this form:
recalculate_property(cmp_db, INDUCTOR,
property_function="calc_schematic_nmos_w");
compare(cmp_db, sch_db, lay_db, user_functions_file="usrfunc", ...);

The calc_schematic_nmos_w remote function, which recalculates properties, is defined in


the usrfunc file. For example, in the usrfunc file:
...
calc_schematic_nmos_w : entrypoint function (void) returning void {
deviceID = lvs_current_device();
if (lvs_is_schematic_device(deviceID)) {
note("THIS IS A SCHEMATIC DEVICE");
lvs_save_double_property("newW", 1000);
}
if (lvs_is_layout_device(deviceID)) {

Chapter 3: Runset Functions: J - Z


recalculate_property() 3-539
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

note("THIS IS A LAYOUT DEVICE");


lvs_save_double_property("newW", 1000);
}
}
...

See Also
merge_parallel()
merge_series()

Chapter 3: Runset Functions: J - Z


recalculate_property() 3-540
IC Validator Reference Manual Version N-2017.12-SP2

recognize_gate()
The recognize_gate() function tells the IC Validator tool to analyze transistor-level
circuitry by looking for logic gates. When found, these gates are represented as composite
devices, similar to the merging process. The IC Validator tool then performs the comparison
based on the recognized gates and the remaining devices. The recognized gates are
described in the Description section.
The devices that form a gate are swappable. That is, you are allowed to swap the order of
the devices that are members of a gate. As shown in Figure 3-111, without the
recognize_gate function, the two circuits do not match; with the recognize_gate function,
both circuits form _SP_NMOS_2_1_1 half gates and the two circuits match.
Figure 3-111 Swappable Gates Example
Without recognize_gate() With recognize_gate()

_SP_NMOS_2_1_1 _SP_NMOS_2_1_1

Limitation:
A device can be merged by the merge_series() function or recognized by the
recognize_gate() function, but not both in the same runset.
Do not use the recognize_gate() function when a remote function is specified by the
property_function argument of the check_property() function.

This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
recognize_gate(
state = compare_state,
type = ALL | SIMPLE, //optional
exclude_tolerances = {device_type = NMOS | PMOS,
device_names = {"string", ...},
tolerances = {
{property = "string",
tolerance = doubleconstraint,

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-541
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

tolerance_type = RELATIVE | ABSOLUTE},


...}}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
recognize_gate() function is added.

type
Optional. Specifies the types of gates that are recognized. The gate type name is
reported in the summary file and displayed in the VUE Netlist Visualizer. See the
Description section for information about the types. The default is ALL.
❍ ALL. Specifies that all types of gates are recognized, including
_INV
_NANDn
_NORn
_AOI_n1_n2_...nm
_OAI_n1_n2_...nm
_S_NMOSn
_S_PMOSn
_SP_NMOS_n1_n2_..._nm
_SP_PMOS_n1_n2_..._nm
_SP_PMOS(expression)
_SP_NMOS(expression)
❍ SIMPLE. Specifies that only simple gates are recognized:
_INV
_NANDn
_NORn
_S_NMOSn
_S_PMOSn
_SP_NMOS_n1_n2_..._nm
_SP_PMOS_n1_n2_..._nm

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-542
IC Validator Reference Manual Version N-2017.12-SP2

exclude_tolerances
Optional. Lists the tolerance settings composed of device type, list of device names, and
list of property tolerance settings. This is a more general exclude tolerances setting than
that of the merge_series() function.
Note:
The recognize_gate() function does not support swappable properties in the
exclude_tolerances argument.
Use this parameter to constrain gate recognition based on property comparison.
❍ device_type. Required. Specifies the device type. Only NMOS and PMOS device
types are available.
❍ device_names. Optional. Specifies the layout devices. Each device must match a
device specified in a device_name argument of a device configuration function.
❍ tolerances. Optional. Lists the tolerance settings that exclude candidate devices
from being merged based on the device property values.
■ property. Required. Specifies the property used to check the tolerance range.

■ tolerance. Optional. Specifies the tolerance. The property option is checked for
violations based on this tolerance. The tolerance must be specified as a range.
The tolerance_type option specifies either that the tolerance is a percentage
(default) or an absolute value. The default is [-10,+10].
■ tolerance_type. Optional. Checks property tolerances based on a relative or
absolute property difference. The default is RELATIVE.
- RELATIVE. Specifies that tolerances are checked based on a percentage
difference.
- ABSOLUTE. Specifies that tolerances are checked based on an absolute value
difference. The units are based on the lvs_user_unit argument of the
run_options() function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which information specified
in the recognize_gate() function applies. You must specify the equiv_cells pairs in
the equiv_options() function before calling the recognize_gate() function. If only
one cell name in the pair is specified, the names are assumed to be the same.
Note:
The recognize_gate() instruction is observed only when comparing each listed
equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the recognize_gate() instruction
is discarded for the content of the exploded cell.

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-543
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Description
The types of gates and functional equivalences are described in the following sections.
These are the names that are reported in the summary file and that are displayed in the VUE
Netlist Visualizer.
_INV
Figure 3-112 shows how the IC Validator tool handles an inverter.
Figure 3-112 _INV Type Example

_NANDn
This is a standard n-input CMOS NAND gate. All inputs are considered independently
swappable. In Figure 3-113, inputs IN1, IN2, … INn are swappable.
Figure 3-113 _NANDn Type Example

_NORn
This is a standard n-input CMOS NOR gate. All inputs are considered independently
swappable. In Figure 3-114, inputs IN1, IN2, … INn are swappable.

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-544
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-114 _NORn Type Example

_AOI_n1_n2_..._nm
This is a CMOS AND-or-invert structure. The naming convention sorts the AND groups in
descending order based on the number of inputs to the AND. The inputs to each individual
AND gate are considered swappable.
As shown in Figure 3-115, the two PMOS transistors connected to IN1 and IN2, respectively,
can be placed below the three transistors connected to IN3, IN4, and IN5.
Figure 3-115 _AOI_n1_n2_..._nm Type Example

_OAI_n1_n2_..._nm Type
This is a CMOS OR-and-invert structure. The naming convention sorts the OR groups in
descending order based on the number of inputs to the OR. The inputs to each individual
OR gate are considered swappable.
As shown in Figure 3-116, the two NMOS transistors connected to IN1 and IN2,
respectively, are placed below the three transistors connected to IN3, IN4, and IN5.

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-545
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-116 _OAI_n1_n2_..._nm Type Example

_S_NMOSn and _S_PMOSn


This is an n-input NMOS or PMOS series chain. All inputs are considered independently
swappable. The two outputs are swappable.
In Figure 3-117, IN1, IN2, … INn are swappable. OUT1 and OUT2 are also swappable.
Figure 3-117 _S_PMOSn and _S_NMOSn Type Example

_SP_NMOS_n1_n2…_nm and _SP_PMOS_n1_n2…_nm


This is a NMOS or PMOS series of parallel chains. The naming convention sorts parallel
groups in descending order based on the number of devices in the group. All inputs in each
parallel group are considered independently swappable. The two outputs are swappable.
The order that the parallel chains appear in the series is also swappable.
In Figure 3-118, IN1, IN2, and IN3 are swappable. IN4 and IN5 are also swappable. The
parallel structure of transistors connected to IN1, IN2, and IN3, respectively, can be placed
below the parallel structure of transistors connected to IN4 and IN5.

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-546
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-118 _SP_NMOS_n1_n2…_nm and _SP_PMOS_n1_n2…_nm Types Example

_SP_NMOS(expression) and _SP_PMOS(expression)


This is a general series of parallel structure for PMOS or NMOS devices. This type of gates
is composed of a series of substructures. Each substructure is composed of parallel further
substructures in a recursive manner. The structure of this gate is described with an
expression. Each expression is composed of a list of numbers, +, x, or parentheses
embracing a subexpression, where:
• + means a parallel connection.
• x means a serial connection.
• (expression) means a substructure.

Figure 3-119 illustrates an example of this type of gate. IN1 and IN2 are logical equivalent.
The transistor connected to IN4 can be placed up to the substructure of the three transistors
connected to IN1, IN2, and IN3.
Figure 3-119 _SP_NMOS(expression) and _SP_PMOS(expression) Types Example

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-547
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function requires native licensing, with no additional licenses required. See the
Licensing and Resource Requirements chapter in the IC Validator User Guide for more
information about licensing.

See Also
merge_series()
recognize_gate_off()

Chapter 3: Runset Functions: J - Z


recognize_gate() 3-548
IC Validator Reference Manual Version N-2017.12-SP2

recognize_gate_off()
The recognize_gate_off() function disables gate recognition for specified devices.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
recognize_gate_off(
state = compare_state,
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function.

equiv_cells
Optional. Lists the schematic and layout cell name pairs for which information specified
in the recognize_gate_off() function applies. You must specify the equiv_cells
pairs in the equiv_options() function before calling the recognize_gate_off()
function. If only one cell name in the pair is specified, the names are assumed to be the
same.
Note:
The recognize_gate_off() instruction is observed only when comparing each
listed equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the recognize_gate() instruction
is discarded for the content of the exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Chapter 3: Runset Functions: J - Z


recognize_gate_off() 3-549
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function requires native licensing, with no additional licenses required. See the
Licensing and Resource Requirements chapter in the IC Validator User Guide for more
information about licensing.

See Also
recognize_gate()

Chapter 3: Runset Functions: J - Z


recognize_gate_off() 3-550
IC Validator Reference Manual Version N-2017.12-SP2

rectangle_overlap()
The rectangle_overlap() function oversizes orthogonal rectangles from the input layer
that meet the specified dimensions, and then creates polygons that represent the area
where the oversized rectangles overlap.
Note:
Nonrectangular and nonorthogonal data are ignored.
Each edge of a rectangle must fit one of the length specifications for the rectangle to be
oversized.

Syntax
rectangle_overlap(
layer1 = polygon_layer,
length1 = doubleconstraint,
length2 = doubleconstraint,
size1 = double,
size2 = double,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

length1
Required. Specifies the length for one side of the rectangles. See “Constraints” on
page A-4 for more information. The default is >0.

length2
Required. Specifies the length for one side of the rectangles. See “Constraints” on
page A-4 for more information. The default is >0.
Note:
If both edges fit both length specifications, the shortest edge gets the smallest
oversize. For a square, the largest oversize is used for the top and bottom
expansions, while the smallest oversize is used for the left and right expansions.
If only one edge fits both length specifications, the other edge is oversized for the
length it fits. The edge that fits both length specifications is oversized for the other
length.

Chapter 3: Runset Functions: J - Z


rectangle_overlap() 3-551
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

size1
Required. Specifies the oversize distance for edges that fit the length1 argument value.
A value of 0 or less means the edge is not oversized.
Note:
If both size arguments are 0 or less, the output is empty.

size2
Required. Specifies the oversize distance for edges that fit the length2 argument value.
A value of 0 or less means the edge is not oversized.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-120 shows an example of oversizing.
Figure 3-120 Oversizing Example
Resulting check region

Side that Input rectangle


fits length1
size2

size1
Side that
fits length2

Chapter 3: Runset Functions: J - Z


rectangle_overlap() 3-552
IC Validator Reference Manual Version N-2017.12-SP2

In Figure 3-121, two of three input rectangles on layerA are selected and sized. The output
consists of the region where the sized rectangles overlap.
Result = rectangle_overlap(layer1 = layerA,
length1 = 1.5, length2 = 3,
size1 = 1.0, size2 = 2.0);

Figure 3-121 Example With Overlapped Sized Rectangles


Input Output

Check region
2

Check region
layerA Result

See Also
rectangles_interacting() and not_rectangles_interacting()
size_overlap()

Chapter 3: Runset Functions: J - Z


rectangle_overlap() 3-553
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

rectangle_spacing1() and not_rectangle_spacing1()


The rectangle_spacing1() function selects rectangles that fit the specified count and
distance constraints. The not_rectangle_spacing1() function selects rectangles that do
not fit the specified count and distance constraints.

Syntax
rectangle_spacing1(
layer1 =
polygon_layer,
count =
integerconstraint,
distance =
doubleconstraint,
corner_extension =
RADIAL | SQUARE, //optional
measure =
EDGE_TO_EDGE | CENTER_TO_CENTER,
//optional
center_to_center_direction = ALL | ORTHOGONAL | OCTAGONAL, //optional
name = "layer_label", //optional
inside_layer = polygon_layer //optional
);

not_rectangle_spacing1(
layer1 =
polygon_layer,
count =
integerconstraint,
distance =
doubleconstraint,
corner_extension =
RADIAL | SQUARE, //optional
measure =
EDGE_TO_EDGE | CENTER_TO_CENTER,
//optional
center_to_center_direction = ALL | ORTHOGONAL | OCTAGONAL, //optional
name = "layer_label", //optional
inside_layer = polygon_layer //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

count
Required. Specifies the number of rectangles that must be in violation.

distance
Required. Specifies the distance constraint of orthogonal rectangles for potential
selection. The distance definition is dependent on the corner_extension argument.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-554
IC Validator Reference Manual Version N-2017.12-SP2

❍ When the corner_extension argument is SQUARE, the distance of a rectangle is


checked by oversizing.
For example, the distance between rectangles A and B must be less than "a". To
determine distance, rectangle A is oversized by the value "a". If rectangle A then
intersects rectangle B, rectangles A and B are selected because B is in the checking
zone of rectangle A.
❍ When the corner_extension argument is RADIAL, the distance is a Euclidean
distance.

corner_extension
Optional. Specifies the shape of the checking zone.

measure
Optional. Specifies how the checking zone is measured. The default is EDGE_TO_EDGE.
❍ EDGE_TO_EDGE. Measures the distance between the borders of the rectangles. That
is, a rectangle is counted if its check zone interacts with another rectangle.
❍ CENTER_TO_CENTER. Measures the distance between the centers of the rectangles.
That is, a rectangle is counted if its check zone interacts with the center of another
rectangle.
Figure 3-122 shows how the corner_extension and measure arguments effect the
selection of rectangles.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-555
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-122 Spacing of Rectangles: Distance Between the Two Polygons Is < a

corner_extension = RADIAL corner_extension = SQUARE


measure = EDGE_TO_EDGE measure = EDGE_TO_EDGE

corner_extension = RADIAL corner_extension = SQUARE


measure = CENTER_TO_CENTER measure = CENTER_TO_CENTER

center_to_center_direction
Optional. Specifies the alignment of the neighboring rectangles. The default is ALL.
Note:
This argument is used only when the measure argument is CENTER_TO_CENTER.
❍ ALL. Counts all rectangles regardless of the alignment.

❍ ORTHOGONAL. Counts a rectangle if the centerline is aligned on a multiple of 90


degrees; that is in either the x- or y-direction.
❍ OCTAGONAL. Counts a rectangle if the centerline is aligned at 45 degrees.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-556
IC Validator Reference Manual Version N-2017.12-SP2

inside_layer
Optional. Selects only layer1 rectangles that are inside the polygons of this layer. These
rectangles must fit the specified count and distance constraints. The counting is
restricted to layer1 rectangles that are inside the same inside_layer polygon.
Note:
The not_rectangle_spacing1() function selects only layer1 rectangles that are
inside the inside_layer polygons but do not fit the specified count and distance
constraints.
In the following examples, shown in Figure 3-123 and Figure 3-124, assume that the
distance constraint between the polygons is met.
Figure 3-123 shows an example with a layer1 layer that has four polygons and an
inside_layer layer that has two polygons.
With the following command, which uses the inside_layer argument, the result is a
layer that only has polygon R because polygons B, C, and D, which are also inside
polygon P1, meet the constraints. Polygon A does not meet the count constraint because
it is the only layer1 polygon that is inside the inside_layer polygon P2.
result = rectangle_spacing1(layer1 = LayerA, distance <= d,
count = 3, inside_layer = layerC);

With the following command, which does not use the inside_layer argument, the result
is a layer that only has polygon R because the layer1 polygons A, B, C, and D, meet the
constraints.
R = rectangle_spacing1(layer1 = LayerA, distance <= d, count = 4);

Figure 3-123 inside_layer Argument With Two Polygons Example

Figure 3-124 shows an example with a layer1 layer that has four polygons and an
inside_layer layer that has one polygon.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-557
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

With the following command, which uses the inside_layer argument, the result is a
layer that only has polygon R because polygons A, B, C, and D, which are inside polygon
P3, meet the constraints.
R = rectangle_spacing1(layer1 = LayerA, distance <= d,
count = 4, inside_layer=layerC);

With the following command, which does not use the inside_layer argument, the result
is the same as above where the inside_layer argument is used—a layer that only has
polygon R because polygons A, B, C, and D meet the constraints.
R = rectangle_spacing1(layer1 = LayerA, distance <= d, count = 4);

Figure 3-124 inside_layer Argument With One Polygon Example

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-125 shows the check regions for three rectangles with the corner_extension
argument set to SQUARE. Rectangles A, B, and C are on the layer1 polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-558
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-125 Example of corner_extension = SQUARE

Rectangles A and C are selected with the following command because their distance from
each other is greater than "a" but less than "b", thereby meeting the count restraint.
rectangle_spacing1(layer1 = layer1, count = 1, distance = [a,b],
corner_extension = SQUARE, measure = EDGE_TO_EDGE);

Rectangle B is selected with the following command because its distance from both A and
C is less than "a", thereby meeting the count restraint:
rectangle_spacing1(layer1 = layer1, count = <1, distance = [a,b],
corner_extension = SQUARE, measure = EDGE_TO_EDGE);

Figure 3-126 shows the check regions when the corner_extension argument is the default
of RADIAL. Rectangles A, B, C, D, E, F, and G are on the layer1 polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-559
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-126 Example of corner_extension = RADIAL

Rectangles A, B, C, D, E, and F are selected with the following command:


rectangle_spacing1(layer1 = layer1, count > 0, distance < a,
measure = CENTER_TO_CENTER,
center_to_center_direction = ALL);

Rectangles A, B, C, D, and E are selected with the following command:


rectangle_spacing1(layer1 = layer1, count > 0, distance < a,
measure = CENTER_TO_CENTER,
center_to_center_direction = OCTAGONAL);

Rectangles A, B, D, and E are selected with the following command:


rectangle_spacing1(layer1 = layer1, count > 0, distance < a,
measure = CENTER_TO_CENTER,
center_to_center_direction = ORTHOGONAL);

See Also
rectangle_spacing2() and not_rectangle_spacing2()

Chapter 3: Runset Functions: J - Z


rectangle_spacing1() and not_rectangle_spacing1() 3-560
IC Validator Reference Manual Version N-2017.12-SP2

rectangle_spacing2() and not_rectangle_spacing2()


The rectangle_spacing2() function selects layer1 rectangles that fit the specified count
and distance constraints for interaction with layer2 rectangles. The
not_rectangle_spacing2() function selects layer1 rectangles that do not fit the specified
count and distance constraints for interaction with layer2 rectangles.

Syntax
rectangle_spacing2(
layer1 =
polygon_layer,
layer2 =
polygon_layer,
count =
integerconstraint,
distance =
doubleconstraint,
corner_extension =
RADIAL | SQUARE, //optional
measure =
EDGE_TO_EDGE | CENTER_TO_CENTER,
//optional
center_to_center_direction = ALL | ORTHOGONAL | OCTAGONAL, //optional
name = "layer_label", //optional
inside_layer = polygon_layer //optional
);

not_rectangle_spacing2(
layer1 =
polygon_layer,
layer2 =
polygon_layer,
count =
integerconstraint,
distance =
doubleconstraint,
corner_extension =
RADIAL | SQUARE, //optional
measure =
EDGE_TO_EDGE | CENTER_TO_CENTER,
//optional
center_to_center_direction = ALL | ORTHOGONAL | OCTAGONAL, //optional
name = "layer_label", //optional
inside_layer = polygon_layer //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-561
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

count
Required. Specifies the number of layer1 orthogonal rectangles that must be in
violation.

distance
Required. Specifies the distance constraint of layer1 orthogonal rectangles for potential
selection. The distance definition is dependent on the corner_extension argument.
❍ When the corner_extension argument is SQUARE, the distance of a rectangle is
checked by oversizing.
For example, the distance between rectangle A on the layer1 polygon layer and
rectangle B on the layer2 polygon layer must be less than "a". To determine
distance, rectangle A is oversized by the value "a". If rectangle A then intersects
rectangle B, rectangles A and B are selected because rectangle B is in the checking
zone of rectangle A.
❍ When the corner_extension argument is RADIAL, the distance is a Euclidean
distance.

corner_extension
Optional. Specifies the shape of the checking zone.

measure
Optional. Specifies how the checking zone is measured. The default is EDGE_TO_EDGE.
❍ EDGE_TO_EDGE. Measures the distance between the borders of the rectangles. That
is, a rectangle is counted if its check zone interacts with another rectangle.
❍ CENTER_TO_CENTER. Measures the distance between the centers of the rectangles.
That is, a rectangle is counted if its check zone interacts with the center of another
rectangle.
Figure 3-122 shows how the corner_extension and measure arguments effect the
selection of rectangles.

center_to_center_direction
Optional. Specifies the alignment of the neighboring rectangles. The default is ALL.
Note:
This argument is used only when the measure argument is CENTER_TO_CENTER.
❍ ALL. Counts all rectangles regardless of the alignment.

❍ ORTHOGONAL. Counts a rectangle if the centerline is aligned on a multiple of 90


degrees; that is in either the x- or y-direction.
❍ OCTAGONAL. Counts a rectangle if the centerline is aligned at 45 degrees.

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-562
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

inside_layer
Optional. Selects only layer1 rectangles that are inside the polygons of this layer. These
rectangles must fit the specified count and distance constraints for interaction with
layer2 rectangles. The counting is restricted to layer1 and layer2 rectangles that are
inside the same inside_layer polygon.
Note:
The not_rectangle_spacing2() function selects only layer1 rectangles that are
inside the inside_layer polygons but do not fit the specified count and distance
constraints for interaction with layer2 rectangles.
See the examples in the definition of the inside_layer argument of the
rectangle_spacing1() and not_rectangle_spacing1() functions.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-127 shows a check region with the corner_extension argument set to the default
RADIAL. Rectangle A is on the layer1 polygon layer, and rectangles B, C, D, and E are on
the layer2 polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-563
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-127 Example of corner_extension = RADIAL

Rectangle A is selected with the following command because only its interaction with
rectangle E meets the specified distance constraint:
rectangle_spacing2(layer1 = layer1, layer2 = layer2, count = 1,
distance = [a,b], corner_extension = RADIAL,
measure = EDGE_TO_EDGE);

Figure 3-128 shows a check region with the corner_extension argument set to SQUARE.
Rectangle A is on the layer1 polygon layer, and rectangles B, C, and D are on the layer2
polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-564
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-128 Example of corner_extension = SQUARE

No rectangle is selected with the following command:


rectangle_spacing2(layer1 = layer1, layer2 = layer2, count = 1,
distance = [a,b], corner_extension = SQUARE,
measure = EDGE_TO_EDGE);

Figure 3-129 shows a check region with the measure argument set to CENTER_TO_CENTER.
Rectangle A is on the layer1 polygon layer, and rectangles B through G are on the layer2
polygon layer.

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-565
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-129 Example of measure = CENTER_TO_CENTER

Rectangle A is selected with this command:


rectangle_spacing2(layer1 = layer1, layer2 = layer2, count = 5,
distance < a, measure = CENTER_TO_CENTER,
center_to_center_direction = ALL);

Rectangle A is selected with this command:


rectangles_ spacing2(layer1 = layer1, layer2 = layer2, count = 4,
distance < a, measure = CENTER_TO_CENTER,
center_to_center_direction = OCTAGONAL);

Rectangle A is selected with this command:


rectangles_ spacing2(layer1 = layer1, layer2 = layer2, count = 3,
distance < a, measure = CENTER_TO_CENTER,
center_to_center_direction = ORTHOGONAL);

See Also
rectangle_spacing1() and not_rectangle_spacing1()

Chapter 3: Runset Functions: J - Z


rectangle_spacing2() and not_rectangle_spacing2() 3-566
IC Validator Reference Manual Version N-2017.12-SP2

rectangles() and not_rectangles()


The rectangles() function selects rectangles in the specified layer that fit the specified
dimensions. The not_rectangles() function selects polygons that are not rectangles and
also those rectangles that do not meet the specified dimensions.

Syntax
rectangles(
layer1 = polygon_layer,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
orientation = ORTHOGONAL | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_rectangles(
layer1 = polygon_layer,
sides = {length1 = doubleconstraint,
length2 = doubleconstraint}, //optional
orientation = ORTHOGONAL | ALL, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

sides
Optional. Specifies the dimensions of the rectangles that are selected using two lengths,
one per side. The dimensions must be greater than 0. The length2 value is optional,
with a default of >0. See “Constraints” on page A-4 for more information.

orientation
Optional. Specifies the orientation of rectangles selected. The default is ALL.
❍ ORTHOGONAL. Selects only orthogonal rectangles.

❍ ALL. Selects rectangles regardless of orientation.

Chapter 3: Runset Functions: J - Z


rectangles() and not_rectangles() 3-567
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
/* find rectangular vias with one side equal to .1 */
x = rectangles(via, {length1 = 0.1, length2 > 0.0});

/* find any contacts that are not .5 x .5, within .01 */


x = not_rectangles(via, {[0.49,0.51], [0.49,0.51]});

See Also
aspect_ratio() and not_aspect_ratio()
not_contained_by() and contained_by()
extent() and not_extent()

Chapter 3: Runset Functions: J - Z


rectangles() and not_rectangles() 3-568
IC Validator Reference Manual Version N-2017.12-SP2

rectangles_interacting() and not_rectangles_interacting()


The rectangles_interacting() function oversizes orthogonal rectangles from the input
layer that meet the specified dimensions. The function then selects rectangles based on the
interaction of the oversized rectangles.
Note:
Nonrectangular and nonorthogonal data are ignored.
Each edge of a rectangle must fit one of the length specifications for the rectangle to be
oversized.
The complement of this function is the not_rectangles_interacting() function. It selects
all nonrectangular and nonorthogonal data without measurement.

Syntax
rectangles_interacting(
layer1 = polygon_layer,
length1 = doubleconstraint,
length2 = doubleconstraint,
size1 = double,
size2 = double,
count = integerconstraint, //optional
corner_extension = CLIP | RADIAL | SQUARE, //optional
include_touch = NONE | ALL, //optional
name = "layer_label" //optional
);

not_rectangles_interacting(
layer1 = polygon_layer,
length1 = doubleconstraint,
length2 = doubleconstraint,
size1 = double,
size2 = double,
count = integerconstraint, //optional
corner_extension = CLIP | RADIAL | SQUARE, //optional
include_touch = NONE | ALL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

Chapter 3: Runset Functions: J - Z


rectangles_interacting() and not_rectangles_interacting() 3-569
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

length1
Required. Specifies the length for one side of the rectangles. See “Constraints” on
page A-4 for more information.

length2
Required. Specifies the length for one side of the rectangles. See “Constraints” on
page A-4 for more information.
Note:
If both edges fit both length specifications, the shortest edge gets the smallest
oversize. For a square, the largest oversize is used for the top and bottom
expansions, while the smallest oversize is used for the left and right expansions.
If only one edge fits both length specifications, the other edge is oversized for the
length it fits. The edge that fits both length specifications is oversized for the other
length.

size1
Required. Specifies the oversize distance for edges that fit the length1 value. A value
of 0 or less means the edge is not oversized.
Note:
If both size arguments are 0 or less, the output is empty.

size2
Required. Specifies the oversize distance for edges that fit the length2 value. A value
of 0 or less means the edge is not oversized.

count
Optional. Specifies the number of interactions that must be met by the oversize of the
rectangle for it to be selected. The default is >0.

corner_extension
Optional. Specifies how corners are processed in the sizing operation. The layer1
rectangle edges that meet the dimensions specified by the length1 and length2
arguments are oversized based on the dimensions specified by the size1 and size2
arguments, respectively. The result of all oversizing operations forms the check region.
The default is CLIP.
❍ CLIP. Clips corners by connecting the endpoints of oversized adjacent edges.
Figure 3-130 shows oversizing corners by clipping.

Chapter 3: Runset Functions: J - Z


rectangles_interacting() and not_rectangles_interacting() 3-570
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-130 Clipped Corners


Resulting check region

Input
Side that rectangle
fits length1
size2

size1
Side that
fits length2

❍ RADIAL. Oversizes corners into radial arcs that connect the endpoints of oversized
adjacent edges. This setting requires that the size1 and size2 arguments have the
same value. Figure 3-131 shows oversizing corners into radial arcs.
Figure 3-131 Corners Oversized Into Radial Arcs
Resulting check region

Input
Side that rectangle
fits length1

size2

size1 Side that


fits length2

❍ SQUARE. Oversizes corners to form squares. This setting requires that the size1 and
size2 arguments have the same value. Figure 3-132 shows oversizing corners to
form squares.
Figure 3-132 Corners Oversized to Form Squares

Resulting check region


Input
Side that
rectangle
fits length1

size2

size1 Side that


fits length2

Chapter 3: Runset Functions: J - Z


rectangles_interacting() and not_rectangles_interacting() 3-571
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

include_touch
Optional. Specifies the outside touches that cause a layer1 polygon to be selected.
❍ NONE. Specifies that neither point touches nor edge touches cause a polygon to be
selected.
❍ ALL. Specifies that both edge touches and point touches cause a polygon to be
selected.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following example shows how the rectangles_interacting() function can be used
to identify 15 x 15 vias that have an interaction with neighboring vias. The larger polygon on
the right does not meet the requirement of having one side less than 20 and the other less
than 30. Therefore, it is not selected. Figure 3-133 shows the input layer.
Figure 3-133 rectangles_interacting() Function Example Input
15 15
15

layerA

Chapter 3: Runset Functions: J - Z


rectangles_interacting() and not_rectangles_interacting() 3-572
IC Validator Reference Manual Version N-2017.12-SP2

All input rectangles on layerA are selected and their edges are projected outward by 10 m.
The results vary, depending on the setting of the corner_extension argument. That is,
Result = rectangles_interacting(layer1 = layerA, length1 < 20,
length2 < 30,
size1 = 10, size2 = 10, count = 3,
corner_extension = CLIP);

Result = rectangles_interacting(layer1 = layerA, length1 < 20,


length2 < 30,
size1 = 10, size2 = 10, count = 3,
corner_extension = RADIAL);

Figure 3-134 shows the results.


Figure 3-134 rectangles_interacting() Function Example Results
corner_extension = CLIP corner_extension = RADIAL

Result

Figure 3-135 shows how the output data is selected based on the oversizing of each via and
a count of 3. The check regions for all input polygons are shown. The number beside each
rectangle represents the interaction count for each via.
Figure 3-135 Oversizing Count for rectangles_interacting() Function Example
corner_extension = CLIP corner_extension = RADIAL

2 3 2 3 5 3

3 4 3 5 9 5
Result

2 3 2 3 5 3

See Also
rectangle_overlap()
rectangles() and not_rectangles()
size_overlap()

Chapter 3: Runset Functions: J - Z


rectangles_interacting() and not_rectangles_interacting() 3-573
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reduce_four_color_graph()
The reduce_four_color_graph() function is used in quadruple-patterning flows to output
a smaller layout after graph reduction. Optional node precoloring is also input to the function.
Precolored nodes are not deleted during graph reduction.

Syntax
Note: The definitions for the arguments are after the Returns section.
reduce_four_color_graph(
nodes = polygon_layer,
links = geometry_layer,
pre_color1 = polygon_layer, //optional
pre_color2 = polygon_layer, //optional
pre_color3 = polygon_layer, //optional
pre_color4 = polygon_layer, //optional
iterative = true | false, //optional
pre_color_reduce = true | false //optional
);

Returns
The output is a structure of polygons:
reduce_four_color_graph_result_s : newtype struct of {
high_degree_nodes : polygon_layer;
component_nodes : polygon_layer;
component_links : polygon_layer;
subgraphs : polygon_layer;
};

high_degree_nodes
The output contains the nodes polygons that remain after low-degree <4 node deletion.
When iterative reduction is enabled (the iterative option is set to true), the output
layer is empty.

component_nodes
The output contains the nodes that designate the components of the graph from cut
vertices. When iterative reduction is disabled (the iterative argument is false), and
pre_color_reduce is enabled (the pre_color_reduce argument is true), the output
layer is empty. When iterative reduction is enabled (the iterative option is true), the
output contains only the component nodes that are part of the subgraphs.
For an example of cut vertices, see Figure 3-136 on page 3-578.

Chapter 3: Runset Functions: J - Z


reduce_four_color_graph() 3-574
IC Validator Reference Manual Version N-2017.12-SP2

component_links
The output contains the links that designate the components of the graph from two-edge
cuts. When iterative reduction is enabled (the iterative option is set to true), the
output layer is empty.
For an example of two-edge cuts, see Figure 3-137 on page 3-578.

subgraphs
The output contains the nodes and links found as subgraphs when iterative reduction is
enabled. Otherwise, the output layer is empty.

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

links
Required. Specifies the input geometry layer that contains polygons that connect nodes
polygons to complete the graph description. Each polygon in the links geometry layer
interacts, either by edge touch or polygon overlap, with the nodes polygons.
The links geometry layer is commonly generated using dimensional commands on the
nodes polygon layer. For example, the links geometry layer can be generated by using
an external spacing check on the nodes polygon layer that captures multiple-patterning
critical spacing relationships.

pre_color1
Optional. Specifies the marker layers representing color 1 precoloring of the polygons.
All the polygons must be included in the nodes layer. The precolors are markers on the
nodes. If a precolor marker does not intersect with any node, the marker is ignored.

pre_color2
Optional. Specifies the marker layers representing color 2 precoloring of the polygons.
See pre_color1 for more information.

pre_color3
Optional. Specifies the marker layers representing color 3 precoloring of the polygons.
See pre_color1 for more information.

pre_color4
Optional. Specifies the marker layers representing color 4 precoloring of the polygons.
See pre_color1 for more information.

Chapter 3: Runset Functions: J - Z


reduce_four_color_graph() 3-575
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

iterative
Optional. Specifies whether the reduce_four_color_graph() function performs
iterative reduction on the input graph, which is constructed from the nodes and links of
the layout. The default is false.
❍ true. Processes the input graph to apply reductions and find components iteratively.
A component is a part of the input graph obtained after certain reduction operations.
When no further reduction is applicable, the component becomes a subgraph.
❍ false. Does not perform iterative reduction on the input graph.

pre_color_reduce
Optional. Specifies whether the reduce_four_color_graph() function performs
filtering on the precolored data before graph reduction. The default is false.
❍ true. Enables filtering of precolored data.

❍ false. Disables filtering of precolored data.


Precolor filtering filters both links that interact only with precolored nodes and precolored
polygons that do not interact with uncolored polygons through a link. See Figure 3-138,
in the reduce_three_color_graph() function for more information on precolor
reduction.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Example
See the Examples section of the reduce_three_color_graph() function for more
information.

See Also
reduce_three_color_graph()

Chapter 3: Runset Functions: J - Z


reduce_four_color_graph() 3-576
IC Validator Reference Manual Version N-2017.12-SP2

reduce_three_color_graph()
The reduce_three_color_graph() function is used in triple-patterning flows to output a
smaller layout after graph reduction. Optional node precoloring is also input to the function.
Precolored nodes are not deleted during graph reduction.

Syntax
Note: The definitions for the arguments are after the Returns section.
reduce_three_color_graph(
nodes = polygon_layer,
links = geometry_layer,
pre_color1 = polygon_layer, //optional
pre_color2 = polygon_layer, //optional
pre_color3 = polygon_layer, //optional
iterative = true | false, //optional
pre_color_reduce = true | false //optional
);

Returns
The output is a structure of polygons:
reduce_three_color_graph_result_s : newtype struct of {
high_degree_nodes : polygon_layer;
component_nodes : polygon_layer;
component_links : polygon_layer;
subgraphs : polygon_layer;
};

high_degree_nodes
The output contains the nodes polygons that remain after low-degree <3 node deletion.
When iterative reduction is enabled (the iterative option is set to true), the output
layer is empty.

component_nodes
The output contains the nodes that designate the components of the graph from cut
vertices. Otherwise, the output layer is empty. When iterative reduction is enabled (the
iterative option is set to true), the output contains only the component nodes that are
part of the subgraphs.
In the graph shown in Figure 3-136, node A is a cut node. Removing this node breaks
the graph into two components.

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-577
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-136 Example of Cut Vertices

component_links
The output contains the links that designate the components of the graph from two-edge
cuts. When iterative reduction is enabled (the iterative option is set to true), the
output layer is empty.
Note:
When iterative=false, the output of the component_links argument might be
different when setting the pre_color_reduce option to true or false.
In the example shown in Figure 3-137, edges P and Q form a two-edge cut, The removal
of these edges breaks the graph into two components.
Figure 3-137 Example of Two-Edge Cuts

subgraphs
The output contains the nodes and links found as subgraphs when iterative reduction is
enabled. Otherwise, the output layer is empty.

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

links
Required. Specifies the input geometry layer that contains polygons that connect nodes
polygons to complete the graph description. Each polygon in the links geometry layer
interacts, either by edge touch or polygon overlap, with nodes polygons.
The links geometry layer is commonly generated using dimensional commands on the
nodes polygon layer. For example, the links geometry layer can be generated by using

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-578
IC Validator Reference Manual Version N-2017.12-SP2

an external spacing check on the nodes polygon layer that captures triple-patterning
critical spacing relationships.

pre_color1
Optional. Specifies the marker layers representing color 1 precoloring of the polygons.
All the polygons must be included in the nodes layer. The precolors are markers on the
nodes. If a precolor marker does not intersect with any node, the marker is ignored.

pre_color2
Optional. Specifies the marker layers representing color 2 precoloring of the polygons.
See pre_color1 for more information.

pre_color3
Optional. Specifies the marker layers representing color 3 precoloring of the polygons.
See pre_color1 for more information.

iterative
Optional. Specifies whether the reduce_three_color_graph() function performs
iterative reduction on the input graph, which is constructed from the nodes and links of
the layout. The default is false.
❍ true. Processes the input graph to apply reductions and find components iteratively.
A component is a part of the input graph obtained after certain reduction operations.
When no further reduction is applicable, the component becomes a subgraph.
❍ false. Does not perform iterative reduction on the input graph.

pre_color_reduce
Optional. Specifies whether the reduce_three_color_graph() function performs
filtering on the precolored data before graph reduction. The default is false.
❍ true. Enables filtering of precolored data.

❍ false. Disables filtering of precolored data.


Precolor filtering filters both links that interact only with precolored nodes and precolored
polygons that do not interact with uncolored polygons through a link.
In Figure 3-138, shapes A, B, C, and D are precolored. E is uncolored. After precolor
reduction, shapes A and C are filtered out and links 1, 2, 3, and 4 are also filtered out.

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-579
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-138 Precolor Reduction

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Examples

Example 1
The following illustrations show the input and output of the reduce_three_color_graph()
function during graph reduction. The input consists of seven nodes and the links that
connect them.
In Figure 3-139, nodes 6 and 2 are deleted first because they have degree 2 and are thus
low-degree nodes. Then, node 0 is deleted because it has degree 2 after node 2 is deleted.
Nodes 1, 3, 4, and 5 are output as high-degree nodes because they all have degree 3.

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-580
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-139 Color Graph Reduction With No Precoloring

In Figure 3-140, node 6 is precolored (precoloring does not matter), so it is not deleted by
graph reduction. Node 2 is deleted first, and then node 0 is deleted. Nodes 1, 3, 4, 5, 6 are
output as high-degree nodes.
Figure 3-140 Color Graph Reduction With Precoloring

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-581
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example 2
Figure 3-141 shows the color graph reduction output for component nodes and component
links.
Figure 3-141 Color Graph Reduction Output for Component Nodes and Component Links

See Also
reduce_four_color_graph()

Chapter 3: Runset Functions: J - Z


reduce_three_color_graph() 3-582
IC Validator Reference Manual Version N-2017.12-SP2

redundant_vias()
The redundant_vias() function identifies redundant via polygons and saves properties to
each output redundant via polygon. The redundant via polygon is defined as a polygon that
can be removed without affecting the connectivity of the input layers. Any via polygon that
interacts with zero or one layer is not checked or output.

Syntax
redundant_vias(
layers = {{layer = polygon_layer,
output_layer_key = "string",
output_type = REDUNDANT | NON_REDUNDANT, //optional
save_properties = {group_id = "string",
via_count = "string",
all_vias_count = "string"}},
...}, //optional
connect_items = {{layer1 = polygon_layer,
by_layer = polygon_layer,
layer2 = polygon_layer},
...},
flatten = true | false, //optional
min_via_overlap_ratio = double, //optional
name = "layer_label", //optional
subdivide_groups = true | false //optional
);

Returns
The output is a hash of string to polygon layer.

Arguments
layers
Required. Specifies the output. Each item in the layers argument corresponds to the
output_layer_key -> polygon_layer in the output hash.

❍ layer
Required. Specifies the input polygon layer. This layer must be specified as a
by_layer in the connect_items argument.

❍ output_layer_key
Required. Identifies the output layer in the output hash.
❍ output_type
Optional. Specifies the type of output generated. The default is REDUNDANT.
■ REDUNDANT. Returns all redundant via polygons.

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-583
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ NON_REDUNDANT. Returns non-redundant via polygons. Any via that does not meet
the criteria of a redundant via polygon is considered as a non-redundant via,
except those malfunctioning vias that interact with zero or one layer.
❍ save_properties
Optional. Specifies the properties to attach to the output shapes. This option works
only when output_type=REDUNDANT. The properties are collected within the same
redundant via group. A redundant via group is defined as the largest set of redundant
vias that are connected together when all non-redundant vias are removed. The
default is an empty string (""). Any property with an empty string specified is not
saved.
■ group_id. Specifies a user-defined property that contains a unique numeric value
for each redundant via group. This value might vary between runs.
■ via_count. Specifies the number of shapes from the layer within the same
redundant via group.
■ all_vias_count. Specifies the number of shapes from the by_layer in the
connect_items argument within the same redundant via group.

connect_items
Required. Lists the connection specifications.
❍ layer1
Required. Specifies the layer1 polygons.
❍ by_layer
Optional. Specifies the via layer by which layer1 and layer2 are connected.
❍ layer2
Required. Specifies the layer2 polygons.

flatten
Optional. Specifies whether the operation runs in hierarchical or flatten mode. The
default is false.
❍ true. Specifies that output polygons are saved in the top cell.

❍ false. Specifies that the operation runs in hierarchical mode. In this mode, output
polygons are saved in the lower cell, if possible.

min_via_overlap_ratio
Optional. Specifies the minimum overlap area of a via within Mi/Mi+1 transition. Any via
polygon with a ratio of via overlap area within Mi/Mi+1 transition to total via area, greater

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-584
IC Validator Reference Manual Version N-2017.12-SP2

than or equal to this value, is a valid via polygon to check. The value must be between
0.5 and 1. The default is 0.5.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

subdivide_groups
Optional. Specifies if redundant groups are to be subdivided into smaller groups. The
subdivide_groups argument applies only when output_type is REDUNDANT, and
affects only the behavior of the save_properties argument. The default is false.
❍ true. Subdivides each redundant group as follows:
All vias between a given pair of Mx/Mx+1 polygons are replaced with a single
pseudo-via. The pseudo-vias are segregated between non-redundant and
redundant, (with non-redundant being those that change connectivity if removed).
Groups are formed by redundant pseudo-vias that are connected when
non-redundant pseudo-vias are removed. Additionally, each non-redundant
pseudo-via forms a separate group.
❍ false. Connects redundant group vias when non-redundant vias are removed.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
my_connect_items : list of redundant_via_connect_item_s =
{{m1, via12, m2}};
RV_h = redundant_vias(
{{via12, "via12_redundant", save_properties = {"", "", "all_count"}}},
connect_items = my_connect_items
);
u_count: function (void) returning result : double {

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-585
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

result = 1.0/dfm_get_double_property("all_count");
}
report_count_dfm: function (void) returning void {
note("total redundant group="+ round(dfm_aggregate("group_count")));
}
dfm_features(
layer_ids = {"L1" => RV_h["via12_redundant"]},
dfm_function = report_count_dfm,
aggregate_functions = {
"group_count" => {u_count, "L1", SUM}
}
);

Figure 3-142 shows the save_properties argument.


Figure 3-142 redundant_vias() Function save_properties Argument

The order of the connect_items argument is important for concurrent connectivity.


Concurrent layers connected to same metal layer by the same via layer define concurrent
connectivity. Concurrent connectivity establishes connectivity based on the order specified
in the connect_items argument. The concurrent layer that is specified first gets higher
preference over the connectivity than layers that are specified later.
Example of concurrent connectivity:
connect_items = {{po, co, m1}, {od, co, m1}};

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-586
IC Validator Reference Manual Version N-2017.12-SP2

The “po” layer is the higher preference layer over the “od” layer when establishing a
connection from layer “co” to m1. Figure 3-143 shows the number of redundant groups that
change if the order of connect_items argument is changed.
Figure 3-143 redundant_vias() Function connect_items Argument

Figure 3-145 shows the min_via_overlap_ratio argument.


Figure 3-144 redundant_vias() Function min_via_overlap_ratio Argument

Figure 3-145 shows the subdivide_groups argument.

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-587
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-145 redundant_vias() Function subdivide_groups Argument


subdivide_groups = false

subdivide_groups = true

See Also
dfm_features()

Chapter 3: Runset Functions: J - Z


redundant_vias() 3-588
IC Validator Reference Manual Version N-2017.12-SP2

remove_fill()
The remove_fill() function removes rectangles that share active area with a blocking
layer. Rectangles from AREFs (array references) are reformed as AREFs or SREFs
(structured references) as much as possible. As a result, new cells and new placements
might be created in the output layer.
To keep the remaining rectangles as AREFs or SREFs, the layer1 polygon layer must
contain only AREFs of rectangles; that is, an output layer created when the output_aref
argument of the fill_pattern() function is true. If the constraints on the layer1 polygon
layer are not met, the function behaves as the outside() function and explodes the
remaining rectangles in AREFs that have some rectangles removed.
Rectangles that are outside the blocking layer, including point and line touches, are kept in
the output layer.

Syntax
remove_fill(
layer1 = polygon_layer,
layer2 = polygon_layer,
cell_prefix = "string", //optional
group_by_cell = true | false, //optional
remove = OVERLAP | OUTSIDE, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer.

layer2
Required. Specifies the blocking polygon layer.

cell_prefix
Optional. Specifies the prefix for all cell names created when fill is removed and
reformed. The default is "$RF". For example, if the cell_prefix argument is not set,
then the generated cell name is of this form: “$RF_1x1s_1”. If the cell_prefix
argument is “pre”, then the generated cell name is of this form: “pre_1x1s_1”.

group_by_cell
Optional. Specifies whether to remove additional polygons. The default is false.

Chapter 3: Runset Functions: J - Z


remove_fill() 3-589
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ true. In addition to removing the polygons identified by layer2, also removes any
other polygons that belong to the same AREF cell instance as the polygons identified
by layer2.
❍ false. Does not remove additional polygons.

remove
Optional. Specifies whether to delete polygons that interact with layer2 polygons. The
default is OVERLAP.
❍ OVERLAP. Deletes polygons that interact with layer2 polygons.

❍ OUTSIDE. Deletes polygons that are outside of layer2 polygons.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 3-146 shows the 3x11 AREF and blocking layer used in this example.
result = remove_fill(AREF, block_area);

Chapter 3: Runset Functions: J - Z


remove_fill() 3-590
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-146 remove_fill() Function Example Input

AREF block_area

Figure 3-147 shows the results in a 2x6 AREF and a 1x11 AREF.
Figure 3-147 remove_fill() Function Example Result

result

See Also
outside() and not_outside()
remove_fill_to_target()

Chapter 3: Runset Functions: J - Z


remove_fill() 3-591
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

remove_fill_to_target()
The remove_fill_to_target() function removes cell and stack fill patterns to meet the
desired density, based on the input polygon and other arguments.

Syntax
remove_fill_to_target(
window_layer = polygon_layer,
design_layer = polygon_layer,
fill_layer = polygon_layer,
frame_layer = polygon_layer,
cell_stack_pattern = {width = double, height = double,
space_x = double, space_y = double,
stagger_x = double, stagger_y = double},
max_target_density = double,
stack_density = double, //optional
delta_window = double, //optional
delta_step = double, //optional
output_aref = {output_aref = true | false,
cell_prefix = "string"}, //optional
name = "layer_label", //optional
boundary = CLIP | ALIGN | IGNORE | REPLICATE_WINDOW
//optional
);

Returns
polygon layer

Arguments
window_layer
Required. Specifies the polygon layer containing one or more polygons that define the
areas where layers are processed for density calculations and fill removal.

design_layer
Required. Specifies the non-fill polygon layer to be used for density calculations.

fill_layer
Required. Specifies the polygon layer to be used for density calculations and is the input
for fill removal.

frame_layer
Required. Specifies the polygon layer that defines the boundaries of individual fill cells/
stack and is the input for fill removal.

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-592
IC Validator Reference Manual Version N-2017.12-SP2

cell_stack_pattern
Required. Specifies the fill cell-chain description.
❍ width. Required. Specifies the width of the fill cell chain.

❍ height. Required. Specifies the height of the fill cell chain.

❍ space_x. Required. Specifies the distance between the fill cell chain in the
x-direction.
❍ space_y. Required. Specifies the distance between the fill cell chain in the
y-direction.
❍ stagger_x. Optional. Specifies the stagger distance between the fill cell chain in the
x-direction. The default is 0.
❍ stagger_y. Optional. Specifies the stagger distance between the fill cell chain in the
y-direction. The default is 0.

max_target_density
Required. Specifies the maximum target density to be achieved as the result of fill
removal.

stack_density
Optional. Specifies the density introduced by fill polygons of one individual cell chain.
The IC Validator tool calculates the value when it is not specified.

delta_window
Optional. Specifies a square subwindow stepped across each window layer polygon.
The density is evaluated within each subwindow. The default is 10.

delta_step
Optional. Specifies the delta_window subwindow step distance in the x- and y-direction.
The default is 10.

output_aref
Optional. Specifies whether to keep fill as AREFs (array references) during fill removal.
❍ output_aref. The default is false.

■ true. Outputs polygons in AREFs.

■ false. Outputs individual polygons.

❍ cell_prefix. Optional. Specifies the prefix for all cell names created when fill is
removed and reformed. The default is "$RT".

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-593
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the label used by the IC Validator tool for the output files. This name
is displayed in various output report files. It is used only for log files; runset variables are
not changed. If the name is not specified, default output file names are created.

boundary
Optional. Specifies how to process a delta_window subwindow that overlaps the
boundary of the extents of a window layer polygon. The default is CLIP.
❍ CLIP. Truncates the subwindow at the limits of the window layer.
if the x_edge_process_amount or y_edge_process_amount argument is not equal
to -1 when the boundary argument is CLIP, then
■ If the overhang is less than the x_edge_process_amount or
y_edge_process_amount value, a clip is performed.

■ If the overhang is equal to or greater than the x_edge_process_amount or


y_edge_process_amount value, an align is performed.

■ If the overhang in the horizontal direction is less than the


x_edge_process_amount value, then clip the subwindow along the window layer.

■ If the overhang in the horizontal direction is equal to or greater than the


x_edge_process_amount value, then align the subwindow with the window layer

■ If the overhang in the vertical direction is less than y_edge_process_amount


value, then clip the u along the window layer
■ If the overhang in the vertical direction is equal or more than
y_edge_process_amount value, then align the subwindow with the window layer
Figure 2-76 shows how a subwindow is clipped.
❍ ALIGN. If a subwindow overlaps the right side or top edge of the window layer, shifts
the window left or down until it no longer overlaps the window layer. The density
calculation is performed after the window is shifted.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is ALIGN.
Figure 2-77 shows how a subwindow is aligned.
❍ IGNORE. If a subwindow overlaps the right or top edges of the window layer boundary,
ignores the subwindow and does not output data for that subwindow location.
Note:
Both x_edge_process_amount and y_edge_process_amount arguments must
be -1 when the boundary argument is IGNORE.

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-594
IC Validator Reference Manual Version N-2017.12-SP2

Figure 2-78 shows when the subwindow is ignored.


❍ REPLICATE_WINDOW. To simulate density measurements on a die, replicates the input
layers to properly measure density at the boundary of the chip. if a window overlaps
the right or top edges of the window layer polygons, then the window layer extent and
its data are duplicated and added to the right or top side of the original bounding box.
The density measurement on the boundary subwindow is calculated considering the
original data and the duplicated data.
Note:
Both the x_edge_process_amount and y_edge_process_amount arguments
must be -1 when the boundary argument is REPLICATE_WINDOW.
Figure 2-79 shows a replicated subwindow.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
For example, the fill is as shown in Figure 3-148.

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-595
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-148 Fill Pattern

15

window layer design layer frame layer fill layer

Figure 3-149 shows the output of the remove_fill_to_target() function with these
values:
max_density = 0.4
delta_window = 5.0
delta_step = 5.0:

Figure 3-149 remove_fill_to_target() Function Output

Figure 3-150 shows the three resulting windows. The densities are:
• density of density window 1: 0.3985
• density of density window 2: 0.3985
• density of density window 3: 0.3961

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-596
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-150 remove_fill_to_target() Function Output

Window 1 Window 2 Window 3

See Also
remove_fill()

Chapter 3: Runset Functions: J - Z


remove_fill_to_target() 3-597
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

replace_text()
The replace_text() function creates a text layer from a text layer by replacing the
specified text strings. Any text not matching the replacement specification is unchanged.

Syntax
replace_text(
layer1 = text_layer,
replace = {{search_strings = {"string", ...},
replace_string = "string"},
...},
name = "layer_label" //optional
);

Returns
text layer

Arguments
layer1
Required. Specifies the text layer.

replace
Required. Specifies the text strings replaced with another text string. The replacements
are processed in order, so that the first matching criteria has precedence. When a string
is matched, it is replaced and output to the output text layer. The matched string is not
considered for the remaining search strings.
❍ search_strings. Specifies the text strings replaced. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
Text strings must be a complete match; there is no partial text string replacement.
❍ replace_string. Specifies the string that replaces any text strings matching the
search criteria. An empty string ("") results in the removal of the specified search
string.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


replace_text() 3-598
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
The following examples illustrate how text can be replaced.

Using Metacharacters
In the following example, vdd1a becomes vdd, and vss45aa becomes vss. The string
vss40aa remains the same because it is excluded through use of !. See “String Matching”
on page A-11 for more information about metacharacters.
x = replace_text(met1_text,
{{{"vdd*"}, "vdd"}, {{"vss*aa", "!vss40aa"}, "vss"} }
);

Treating Metacharacters as Regular Text


In the following example, !vdd becomes vdd. The square brackets ([ ]) cause the explanation
point (!) to be treated as regular text rather than meaning to not match vdd. See “String
Matching” on page A-11 for more information about metacharacters.
X = replace_text(met1_text,{{{"[!]vdd"}, "vdd"}});

Importance of the Order of the Search Strings


In the following example, both vdd1 and vdd2 become vdd.
This example illustrates that the order of the search strings is important. Because vdd1 is
satisfied by the first search string, it is not available to be considered by the second search
string.
x = replace_text (met1_text,
{{{"vdd*"}, "vdd"},
{{"vdd1"}, "vdda"}
}
);

See Also
text_options()

Chapter 3: Runset Functions: J - Z


replace_text() 3-599
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

required_layer()
The required_layer() function restricts the pruning of any layer in the runset. The
specified layer is not pruned during IC Validator execution, such as pruning for run-only
execution (-ro command-line option), selectable rules processing (-svn, -svc, -sfn, -uvn,
-uvc, and -ufn command-line options), and incremental layers processing (-il and -iln
command-line options).

Syntax
required_layer(
input = layer
);

Returns
void

Arguments
input
Required. Specifies a layer that is required. It is not pruned by IC Validator.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


required_layer() 3-600
IC Validator Reference Manual Version N-2017.12-SP2

res_select()
The res_select() function selects the device polygons that fit the specified dimensional
criteria (width and length) or geometric error-checking criteria. A remote function specifies
arithmetic conditions relative to resistor parameters.

Syntax
res_select(
device_body = polygon_layer,
terminal_a = polygon_layer,
terminal_b = polygon_layer,
res_func = function,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK},
...}, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
recognition_layer = polygon_layer, //optional
connect_sequence = connect_database, //optional
extract_shorted_device = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL //optional
);

Returns
polygon layer or error result

Arguments
device_body
Required. Specifies the body layer of the resistor.

terminal_a
Required. Specifies the device layer that contains the first terminal of the resistor.

terminal_b
Required. Specifies the device layer that contains the second terminal of the resistor.

res_func
Required. Specifies the remote function that selects devices based on geometric criteria.
See Chapter 4, “Utility Functions,” for more information about the utility functions you can
use to define a remote function.

Chapter 3: Runset Functions: J - Z


res_select() 3-601
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

optional_pins
Optional. Lists additional bulk or terminal layers.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".

❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

recognition_layer
Optional. Specifies the layer used to form a resistor when the device_body polygon
layer does not interact with all other terminal polygons. All polygons required to form a
resistor must interact with a single polygon on this layer.

connect_sequence
Optional. Specifies the connect database. If specified, the connection is considered in
the device checking process.

Chapter 3: Runset Functions: J - Z


res_select() 3-602
IC Validator Reference Manual Version N-2017.12-SP2

extract_shorted_device
Optional. Specifies whether shorted resistors, that is, resistors with only one terminal, are
extracted. The default is true.
❍ true. Extracts shorted resistors.

❍ false. Reports shorted resistors as error devices.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
See the Example section of the resistor() function for more information.

See Also
gendev_select()
mos_select()

Chapter 3: Runset Functions: J - Z


res_select() 3-603
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

resistor()
The resistor() function collects extraction configuration information about designed
resistors that have a device layer, two terminal layers, and one or more optional layers. NP
or PN diodes can also be extracted for diffusion resistors. The configuration information,
which contains device body and terminal layers, property extraction information, schematic
device mappings, and pin handling instructions, is stored in the device matrix that is passed
to the extract_devices() function.
The device body layer polygons must interact with exactly one polygon from each terminal
layer. Also, if an optional pin layer with its pin type set to BULK is specified, the required
relationship between the pin layer polygon and the device body layer polygon is defined by
the bulk_relationship argument. If an optional pin layer with its pin type set to TERMINAL
is specified, the optional pin layer polygon must interact with the device body layer polygon
but is not required to enclose the device body layer polygon. The device body layer is
usually generated by an and() function call between a resistor recognition layer and the
resistor material. Then, the device layer is used to cut the resistor material using a not()
function call to form the resistor terminals.
Note:
See “Device Names” on page A-9 for the device_name argument restrictions.

Syntax
resistor(
matrix = device_matrix,
device_name = "string",
device_body = polygon_layer,
terminal_a = polygon_layer,
terminal_b = polygon_layer,
optional_pins = {{device_layer = polygon_layer,
pin_name = "string",
pin_type = TERMINAL | BULK
pin_compared = true | false},
...}, //optional
recognition_layer = polygon_layer, //optional
reference_layer = polygon_layer, //optional
processing_layer_hash = {"string" => {layer1 = polygon_layer,
range = double},
...}, //optional
properties = {{name = "string",
type = DOUBLE | DOUBLE_LIST | STRING,
scale = FEMTO | PICO | NANO | MICRO |
MILLI | KILO | MEGA | NONE},
...}, //optional
write_property_to =
NETLIST_XTR_SPICE | NETLIST_PEX_SPICE |
SPICE | ANNOTATION_FILE |
NETLIST_ANNOTATION_FILE_SPICE |
NETLIST | AUTO | NETLIST_SKIP_PCELL,

Chapter 3: Runset Functions: J - Z


resistor() 3-604
IC Validator Reference Manual Version N-2017.12-SP2

processing_layer_hash_map =
{"string", ...},
pin_map = {"string", ...}},
...}, //optional
property_function = function, //optional
merge_parallel = true | false, //optional
bulk_relationship = ENCLOSE | INTERACT, //optional
swappable_pins = {{"string", ...}, ...}, //optional
schematic_devices = {{device_name = "string",
terminal_a = "string",
terminal_b = "string",
optional_pins = {"string", ...},
ignore_pins = {"string", ...}},
...}, //optional
x_card = true | false, //optional
spice_netlist_function = "string", //optional
resistor_value = double, //optional
parasitic_diodes = {diode_name = "string",
diode_type = NP | PN | NONE}, //optional
extract_shorted_device = true | false, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
unique_identifier = "string", //optional
swappable_properties = {{pin_name = "string",
property_list = {"string", ...}},
...}, //optional
simulation_model_name = "string", //optional
dlink_libraries = {dev_dlink_library_handle, ...}, //optional
top_simulation_properties = true | false //optional
);

Returns
void

Arguments
matrix
Required. Specifies the device matrix used by the extraction functions. The matrix must
be defined by the init_device_matrix() function. Configuration details for device
extraction are stored in the matrix data object for use by the extract_devices()
function.

device_name
Required. Specifies the resistor. A device name can be reused across multiple calls of
the resistor() function if all calls have
❍ Equivalent numbers of optional pins with equivalent values for the pin_name and
pin_compared options.

❍ Equivalent settings for the swappable_pins argument.

Chapter 3: Runset Functions: J - Z


resistor() 3-605
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ Equivalent settings for the schematic_devices argument.


❍ Equivalent settings for x_card argument.

device_body
Required. Specifies the body layer of the resistor.

terminal_a
Required. Specifies the device layer that contains the first terminal of the resistor. The pin
name generated by the IC Validator tool is “A”.

terminal_b
Required. Specifies the device layer that contains the second terminal of the resistor.
The pin name generated by the IC Validator tool is “B”.

optional_pins
Optional. Lists additional bulk or terminal layers. You can specify up to 20 pins.
❍ device_layer. Required. Specifies the device layer.

❍ pin_name. Optional. Specifies the pin name. The default is "BULK".


Note:
If more than one optional pin is specified, use the pin_name option to avoid having
more than one pin named “BULK”.
❍ pin_type. Optional. Specifies whether the layer is a terminal or bulk. The default is
BULK.

❍ pin_compared. Optional. Specifies whether the pin connectivity is compared


between the schematic and layout netlists. The default is true.
■ true. The pin connectivity is compared between the schematic and layout
netlists.
■ false. The pin is discarded for schematic to layout comparison. This setting is
useful when a layout netlist instance has a bulk pin but the corresponding
schematic instance does not.

recognition_layer
Optional. Specifies the layer used to recognize a device when the device body layer does
not interact with all terminal layers and processing layers. All processing layers must
interact with this specified recognition layer. This layer is also used to identify device
instances that are merged during layout extraction when multiple individual devices
occur within a single recognition layer polygon. See the merge_parallel argument for
more information.

Chapter 3: Runset Functions: J - Z


resistor() 3-606
IC Validator Reference Manual Version N-2017.12-SP2

reference_layer
Optional. Specifies the intended location in the hierarchy for the extracted device. The
layer is usually an assign layer.

processing_layer_hash
Optional. Specifies a hash of string to a processing layer and range pair. In the remote
property function, each layer is retrieved as a polygon set by passing the hash key to the
dev_processing_layer() function.

❍ layer1. Required. Specifies the processing layer, which is a non-terminal layer used
for calculating properties.
❍ range. Optional. Specifies the maximum distance value from a device body polygon.
This value defines a window around the device body for data collection.
A nonnegative range value collects processing polygons that are within the specified
range of the body polygon which might or might not interact with the body polygon.
The default is -1.
■ When the range value is -1, only processing_layer_hash polygons interacting
with the body layer polygon are selected for the polygon set.
■ When the range value is >0, a window is created by oversizing the body layer
polygon by the range value. All processing_layer_hash polygons interacting
with this window, either by overlap or by an externally touching edge, are selected
for the polygon set.
See the description of the processing_layer_hash argument of the nmos() and
pmos() functions for diagrams that illustrate the application of the range value.

properties
Optional. Lists the property values that define the device. The default is
properties = {{"l", DOUBLE, MICRO},
{"w", DOUBLE, MICRO},
{"r"}
},

❍ name. Specifies the property name. See “Predefined Name Matches” in Chapter 7,
“Compare Functions Basics” of the IC Validator LVS User Guide for the names and
associated matches that are predefined during LVS compare.
Note:
More than one property sharing the same name is prohibited. Furthermore, the
property name is case-insensitive.
❍ type. Specifies the data type of the property. The default is DOUBLE.

Chapter 3: Runset Functions: J - Z


resistor() 3-607
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
The compare() function does not support the DOUBLE_LIST property. When
running dual-hierarchy extraction, the list of double properties is always written to
the annotation file unless the write_property_to argument is explicitly
specified.
❍ scale. Optional. Specifies the scale factor applied to property values output by the
write_spice(), write_xref_spice(), pex_generate_results(), and
write_annotation_file() functions. The default is NONE, which means no scaling.
You can use this scale option to convert dimensional property values from the
IC Validator native base unit of microns into the base unit of meters for SPICE
simulation.
❍ write_property_to. Optional. Specifies to which file the property is written. The
default is NETLIST_XTR_SPICE.
■ NETLIST_XTR_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_results() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ NETLIST_PEX_SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The output netlist (cell.net) by the netlist() function.
- The SPICE netlist for the interface between the IC Validator and StarRC tools
generated by the pex_generate_database() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
The property is not written to
- The annotation file by the write_annotation_file()function.
■ SPICE. Writes the corresponding property to

- The output SPICE netlist (cell.sp) by the write_spice()function.

Chapter 3: Runset Functions: J - Z


resistor() 3-608
IC Validator Reference Manual Version N-2017.12-SP2

The property is not written to


- The output netlist (cell.net) by the netlist() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
- The annotation file by the write_annotation_file() function.
■ ANNOTATION_FILE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


The property is not written to
- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_ANNOTATION_FILE_SPICE. Writes the corresponding property to

- The annotation file by the write_annotation_file() function.


- The output netlist (cell.net) by the netlist() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
The property is not written to
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.
- The output SPICE netlist (cell.sp) by the write_spice() function.
- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ AUTO. Writes the corresponding property to

- The output netlist (cell.net) by the netlist() function.


The property is not written to
- The annotation file by the write_annotation_file() function.

Chapter 3: Runset Functions: J - Z


resistor() 3-609
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- The output SPICE netlist (cell.sp) by the write_spice() function.


- The property lists of cell instances matching the extracted device inside the
parasitic extraction layout database generated by the IC Validator tool.
■ NETLIST_SKIP_PCELL. Writes the corresponding property to

- The properties file (cell_pcell.gz).


- When dual_hierarchy_extraction = true, the NETLIST_SKIP_PCELL
option is equivalent to the ANNOTATION_FILE option.
The NETLIST_SKIP_PCELL option is required when the property being calculated
requires the terminal or processing layers of the device to level out of a skip cell.
The terminal or processing layers associated with the property must be defined in
the pin_map or processing_layer_hash_map options.
❍ processing_layer_hash_map. Optional. Specifies the hash keys for any processing
layers from which the property specified by the name option is derived. Hash keys are
defined by the processing_layer_hash argument to each device configuration
function. This mapping enables the IC Validator tool to retain or discard these
processing layers from which device properties are derived during dual-hierarchy
extraction. The mapping process is:
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that processing layer
is retained only during the dual-hierarchy extraction phase that generates
properties for the annotation file. This phase is known as the simulation pass. The
processing layer is discarded during the phase that generates properties for the
layout netlist, known as the compare pass.
■ If a processing layer is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
processing layer is retained during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-32.
Table 3-32 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument

write_property_to value Dual-hierarchy phase Treatment of processing layer

ANNOTATION_FILE Simulation pass Retain layer

Compare pass Discard layer

Deactivated Retain layer

Chapter 3: Runset Functions: J - Z


resistor() 3-610
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-32 Dual-Hierarchy Extraction Treatment for Processing Layers Mapped Using the
processing_layer_hash_map Argument (Continued)

write_property_to value Dual-hierarchy phase Treatment of processing layer

NETLIST_XTR_SPICE and SPICE Simulation pass Retain layer

Compare pass Retain layer

Deactivated Retain layer

If a processing layer is not referenced by the processing_layer_hash_map option


for any property, then that layer is retained in all cases when dual-hierarchy extraction
is enabled or disabled.
❍ pin_map. Optional. Specifies the pin names for any terminal layers from which the
property specified by the name option is derived. This mapping enables the
IC Validator tool to collect all hierarchically interacting terminal layer polygons, from
which device properties are derived, into a common parent level of hierarchy for
dual-hierarchy extraction. This hierarchical polygon processing is known as leveling.
The process is:
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to ANNOTATION_FILE, then that terminal layer is
leveled only during the dual-hierarchy extraction phase that generates properties
for the annotation file. This phase is known as the simulation pass. The terminal
layer is not leveled during the phase that generates properties for the layout
netlist, known as the compare pass.
■ If a terminal layer pin name is mapped to a device property designated with the
write_property_to option set to NETLIST_XTR_SPICE or SPICE, then that
terminal layer is leveled during both the dual-hierarchy extraction phase which
generates properties for the layout netlist (compare pass) and the phase which
generates properties for the annotation file (simulation pass).
This behavior is summarized in Table 3-33.
Table 3-33 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

ANNOTATION_FILE Simulation pass Level layer

Compare pass Do not level layer

Deactivated Level layer

Chapter 3: Runset Functions: J - Z


resistor() 3-611
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-33 Dual-Hierarchy Extraction Treatment for Terminal Layers Mapped Using pin_map

write_property_to value Dual-hierarchy phase Treatment of terminal


layer

NETLIST_XTR_SPICE and SPICE Simulation pass Level layer

Compare pass Level layer

Deactivated Level layer

If the pin name of a terminal layer is not referenced in the pin map for any property,
then that layer is never leveled, regardless of whether dual-hierarchy extraction is
enabled or disabled.

property_function
Optional. Specifies the remote function that calculates the geometric properties for each
extracted resistor. The default calculations are for the length of the resistor between the
terminals, width of the resistor, and resistance. The default
calc_resistor_properties() function is defined in the device_public.rh header file.
If you use a remote function, you must specify the device properties in the properties
argument. See Chapter 4, “Utility Functions,” for more information about the utility
functions you can use to define a remote function.

merge_parallel
Optional. Specifies whether parallel devices enclosed by the same recognition layer
polygon are merged. The default is false.
❍ true. Merges parallel devices enclosed by the same recognition layer polygon.
Multiple banks of parallel-merged devices can occur within a single recognition layer
polygon.
❍ false. Does not merge parallel devices enclosed by the same recognition layer
polygon.

bulk_relationship
Optional. Specifies the required relationship between the bulk polygon and the device
polygon.
❍ ENCLOSE. Specifies that the bulk polygon must enclose the device polygon.

❍ INTERACT. Specifies that the bulk polygon must interact with the device polygon by
one of these methods: enclosing, cutting, or outside edge touching.

Chapter 3: Runset Functions: J - Z


resistor() 3-612
IC Validator Reference Manual Version N-2017.12-SP2

swappable_pins
Optional. Lists the pins that can be swapped for a successful comparison with the
schematic device. By default, pins “A” and “B” can be swapped. Use an empty list to
disable swapping of all pins:
swappable_pins = {}

In the following example, “A” and “B” can be swapped, and “C” and “D” can be swapped.
However, “A” and “C” cannot be swapped.
swappable_pins = {{"A","B"}, {"C","D"}}

schematic_devices
Optional. Lists the corresponding schematic devices and terminals for comparison. By
default, the comparison is based on matching names in the layout.
Note:
You need this argument if either of these statements are true:
■ The schematic device name does not match the device_name argument of the
device configuration function.
■ The schematic pin names do not match the standard “A”, “B”, and “BULK” pin
names, in addition to optional pin names provided in the optional_pins list of
structures argument of the device configuration function.
❍ device_name. Required. Specifies the schematic device.

❍ terminal_a. Optional. Specifies the first terminal of the device. The default is "A".

❍ terminal_b. Optional. Specifies the second terminal of the device. The default
is "B".
❍ optional_pins. Optional. Specifies the schematic pins that correspond to the pin
name in the optional_pins argument.
❍ ignore_pins. Optional. Ignores the specified schematic pins during pin connectivity
comparison between the layout and schematic. If a pin name is listed that matches a
pin name defined by the optional_pins argument, that pin is ignored both in the
layout and schematic. This behavior is similar to the pin_compared option of the
optional_pins argument of the resistor() function.
If the schematic device has an optional pin that does not correspond to any pin in the
resistor() function, that pin can be specified with the ignore_pins. Otherwise, this
optional pin produces an error during the compare operation.

x_card
Optional. Specifies if the instance name prefix is replaced. The default is false.

Chapter 3: Runset Functions: J - Z


resistor() 3-613
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ true. Replaces the default instance name prefix for the layout extracted device with
an X-card. This option facilitates the use of SPICE SUBCKT models to represent
devices in simulation.
❍ false. The default instance name prefix for the layout extracted device is not
replaced.

spice_netlist_function
Optional. Specifies the function used to format instances of the device in netlists
generated by the write_spice() and write_xref_spice() functions. See “Flexible
Netlisting Utility Functions” in Chapter 4 for more information.

resistor_value
Optional. Specifies the calculated value of sheet resistance per square unit.

parasitic_diodes
Optional. Specifies the device name for the newly created diodes generated in the netlist.
Note:
When using the parasitic_diodes argument, a bulk layer must be specified using
the optional_pins argument with the pin_type option set to BULK.
❍ diode_name. Specifies the name for the newly created parasitic diodes.

❍ diode_type. Specifies the device type. When you specify a diode name, set the
diode type to PN or NP.

extract_shorted_device
Optional. Specifies whether shorted resistors, that is, resistors with only one terminal, are
extracted. The default is true.
❍ true. Extracts shorted resistors if there are at least two touching edges between the
terminal and device body layers.
❍ false. Reports shorted resistors as error devices.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 3: Runset Functions: J - Z


resistor() 3-614
IC Validator Reference Manual Version N-2017.12-SP2

unique_identifier
Specifies the user-derived string used by the remote property function. The
unique_identifier argument value is retrieved from the remote property function with
the dev_unique_identifier() utility function. See the Examples section of the
capacitor() function for more information. You must ensure that the strings are valid
and unique. (The IC Validator tool does not check values to ensure that they are unique.)
The default is an empty string ("").
This functionality is used to access data objects created outside of a remote property
function but passed in as global variables. Use this functionality when access to these
global variables must be synchronized to a specific device configuration function call. For
example, you can create a global hash object containing property extraction parameters
for several device configuration functions. The hash key is a unique identifier string that
matches the unique_identifier argument value. Then, you can clear the hash key by
invoking the dev_unique_identifier() function that is in the property function. The
dev_unique_identifier() function retrieves the unique_identifier argument value
to the corresponding device configuration function call.

swappable_properties
Optional. Lists the pins and pin-specific device properties that can be swapped. The
IC Validator tool considers the connectivity of the corresponding swapped pins for
property-based merge exclusion, device merging composite property calculations, and
property comparisons. Pins that have properties with identical property_list indexes
are swapped. By default, the IC Validator tool does not map swappable pins to
properties.
❍ pin_name. Allows the specified pin to be swapped. The pin must be listed in the
swappable_pins argument.

❍ property_list. Specifies the ordered list of pin-specific device properties for


property-based merge exclusion, device merging composite property calculations,
and property comparisons.
See the swappable_properties argument of the capacitor() function for an example.

simulation_model_name
Optional. Specifies the simulation netlist model name. As needed, define this model
name for each device configuration function. This name is output to the runset report file.
The device name is not changed.

dlink_libraries
Optional. Specifies the libraries that can be used to pass measurement data to external
libraries. See the Dynamic-Link Library Support chapter in the IC Validator User Guide
and “Dynamic Linking Utility Functions” in Chapter 4 for more information.

Chapter 3: Runset Functions: J - Z


resistor() 3-615
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

top_simulation_properties
Optional. Controls whether properties identified as simulation properties are extracted
hierarchically or in the top cell. The default is false.
❍ true. Extracts simulation properties in the top cell.

❍ false. Extracts simulation properties hierarchically.


See Table 2-27 on page 2-734 for more information about the behavior of the
top_simulation_properties argument.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
Figure 3-151 shows the resistor design for the following example.
Figure 3-151 resistor() Function Example

resistor marker layer

resistor body

resistor terminal

matrix = init_device_matrix(cdb1);

resistor(
matrix,
device_name = "RES",
device_body = res_lay,
terminal_a = res_term,
terminal_b = res_term,
resistor_value = 1e8
);

Chapter 3: Runset Functions: J - Z


resistor() 3-616
IC Validator Reference Manual Version N-2017.12-SP2

device_db = extract_devices(matrix);
netlist_db = netlist(device_db);

Figure 3-152 shows the resistor design for the following example.
Figure 3-152 resistor() Function Example 2

M1

resistor marker layer

resistor body
mt1res
resistor terminal

resistor(
matrix = device_matrix,
device_name = "rm1",
device_body = mt1res,
terminal_a = metal1,
terminal_b = metal1,
extract_shorted_device = true);

See Also
capacitor()
gendev()
gendev_select()
inductor()
np() and pn()
res_select()

Chapter 3: Runset Functions: J - Z


resistor() 3-617
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

resolution_options()
The resolution_options() function specifies resolution and snapping values.

Syntax
resolution_options(
internal_resolution double,= //optional
snap_resolution double,= //optional
snap_instance_resolution double,= //optional
snap_preference =
OVERSIZE | UNDERSIZE |
RETAIN_45 | CLOSEST, //optional
working_resolution_factor = ONE_X | TWO_X | AUTO, //optional
spacing_tolerance = double, //optional
layout_resolution_check = {resolution = double,
action = ABORT | WARN |
IGNORE //optional
);

Returns
void

Arguments
internal_resolution
Optional. Enables the IC Validator tool to use a resolution for processing other than the
input library resolution. The default is the input library resolution.
❍ Use a finer value to provide more grid points for storing data, a finer precision for all
dimensional values specified, and a finer precision for all built-in tolerances.
❍ Use a coarser value to provide a larger coordinate space. A coarser value causes a
loss of precision and it might cause snapping.
❍ Use the internal_resolution argument to ensure that a magnification factor
results in all coordinates falling on grid. The magnification factor is specified in the
library() function.

snap_resolution
Optional. Snaps input data and instances to this resolution. The default is 0.

snap_instance_resolution
Optional. Snaps instances to this resolution. This value overrides the snap_resolution
argument for instances. The default is 0.

snap_preference
Optional. Specifies the preferences when snapping. The default is RETAIN_45.

Chapter 3: Runset Functions: J - Z


resolution_options() 3-618
IC Validator Reference Manual Version N-2017.12-SP2

❍ OVERSIZE. Snaps a polygon so that all vertices are snapped to grid points on or
outside the original polygon boundary.
❍ UNDERSIZE. Snaps a polygon so that all vertices are snapped to grid points on or
inside the original polygon boundary.
❍ RETAIN_45. Attempts to maintain 45-degree edges in the original polygon when
snapping.
❍ CLOSEST. Snaps the polygon vertices to the nearest grid point.

working_resolution_factor
Optional. Enables the IC Validator tool to use a finer working resolution than the internal
resolution for the storage of geometric data. The working resolution factor provides more
grid points to solve merging and snapping issues for 45-degree and all-angle data. Set
the working_resolution_factor argument to ONE_X to solve problems with integer
overflow for coordinates of large chips. The default is AUTO.
❍ ONE_X. Specifies that the working resolution is the same as the internal resolution.

❍ TWO_X. Specifies that the working resolution is twice the internal resolution, which
means there are twice as many grid points for storing data than the internal
resolution.
❍ AUTO. Specifies that the optimum working resolution factor is based on the input
library resolution and the internal resolution. If the input library resolution is an even
multiple of the internal resolution, the working resolution factor is ONE_X, otherwise it
is TWO_X.

spacing_tolerance
Optional. Specifies the tolerance for the distance of the dimensional spacing check on
nonorthogonal data. The default is unspecified to have default tolerances.
The specified spacing_tolerance value is used throughout the runset. It is applied to
all external*(), internal*(), and enclose*() functions except the corner-to-corner
measurements functions, such as external_corner*(), internal_corner*() and
enclose_corner*().
The spacing_tolerance value is applied only to measurements where either of the
edges is nonorthogonal. The effect of the spacing_tolerance option is to decrease the
maximum distance value (< or <=) specified in the dimensional functions. For orthogonal
data measurements, the spacing_tolerance option does not affect the maximum
distance value.

layout_resolution_check
Optional. Checks the input library resolution against the specified resolution value.

Chapter 3: Runset Functions: J - Z


resolution_options() 3-619
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ resolution. Specifies the resolution value to compare against the input library
resolution. The default is 0.001.
❍ action. Specifies the IC Validator action if the input library resolution does not match
the specified resolution value. The default is IGNORE.
■ ABORT. Aborts the run if the input library resolution does not match the specified
resolution value.
■ WARN. Issues a warning if the input library resolution does not match the specified
resolution value.
■ IGNORE. Does not compare the input library resolution against the specified
resolution value and continues the run.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
resolution_options (
snap_resolution = 0.05
);

See Also
library()

Chapter 3: Runset Functions: J - Z


resolution_options() 3-620
IC Validator Reference Manual Version N-2017.12-SP2

restart()
The restart() function loads a previously saved checkpoint and restores the state of the
run at the checkpoint.
The restart() function replaces the ASSIGN section of a runset. Runsets that have both
an ASSIGN section and a restart() function are not run. The restart() function must be
the first function in the runset and only one restart() function is allowed in a runset. You
must specify the layers you want to reload using the restart_layer(),
restart_layer_edge(), and restart_layer_text() functions immediately after the
restart() function in the runset.
Note:
The IC Validator version used to restart a run must be the same version used to create
the checkpoint. The restart runset can be different from the checkpoint runset as long as
the original layer names are not changed.

Syntax
restart(
path = "string"
);

Returns
void

Arguments
path
Required. Specifies the path of the saved checkpoint files.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
The following is an example of creating a checkpoint and restarting a run.
1. Generate the checkpoint by including the checkpoint() function in the original runset.
#include "icv.rh"

Chapter 3: Runset Functions: J - Z


restart() 3-621
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

library(
library_name = "test",
cell = "top",
format = GDSII
);

M1 = assign({{1,0}});

checkpoint(path = "./chkpt", polygon_layers = {M1});

@ "external error";
external1(M1, distance < 0.3, extension = NONE);

2. Create a checkpoint runset when executing the original runset.using the following
command:
% icv -checkpoint orig_runset

3. Restart the run from the checkpoint using the restart() function. Because you can
have multiple checkpoint() functions in a single runset, use the path specified for the
checkpoint location of interested.
Note:
Do not include the icv.rh file in the restart runset. The restart_include.rh file
automatically includes the icv.rh file.
Do not have library() or assign() functions in the runset. These functions are not
allowed.
You do not have to read in all layers from your checkpoint into the restart runset. You
choose the layers you need using the restart_layer_*() functions.
#include "./chkpt/restart_include.rh"
restart(path = "./chkpt");
M1 = restart_layer(read_layer = M1);

@ "My checkpoint error";


internal1(M1, distance < 2.23, extension = NONE);

See Also
checkpoint()
restart_layer()
restart_layer_edge()
restart_layer_text()
snapshot()

Chapter 3: Runset Functions: J - Z


restart() 3-622
IC Validator Reference Manual Version N-2017.12-SP2

restart_layer()
The restart_layer() function specifies the polygon layers for the restart run. Put the
restart_layer() function after the restart() function in the runset. See the
checkpoint() and restart() functions for more information.

Syntax
restart_layer(
read_layer = polygon_layer
);

Returns
polygon layer

Arguments
read_layer
Required. Specifies the polygon layer included in the restart run.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the restart() function for more information.

See Also
restart()
restart_layer_edge()
restart_layer_text()
snapshot()

Chapter 3: Runset Functions: J - Z


restart_layer() 3-623
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

restart_layer_edge()
The restart_layer_edge() function specifies the edge layers for the restart run. Put the
restart_layer_edge() function after the restart() function in the runset. See the
checkpoint() and restart() functions for more information.

Syntax
restart_layer_edge(
read_layer = edge_layer
);

Returns
edge layer

Arguments
read_layer
Required. Specifies the edge layer included in the restart run.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the restart() function for more information.

See Also
restart()
restart_layer()
restart_layer_text()
snapshot()

Chapter 3: Runset Functions: J - Z


restart_layer_edge() 3-624
IC Validator Reference Manual Version N-2017.12-SP2

restart_layer_text()
The restart_layer_text() function specifies the text layers for the restart run. Put the
restart_layer_text() function after the restart() function in the runset. See the
checkpoint() and restart() functions for more information.

Syntax
restart_layer_text(
read_layer = text_layer
);

Returns
text layer

Arguments
read_layer
Required. Specifies the text layer included in the restart run.

Function Group
ASSIGN. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the Example section of the restart() function for more information.

See Also
restart()
restart_layer()
restart_layer_edge()
snapshot()

Chapter 3: Runset Functions: J - Z


restart_layer_text() 3-625
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

route_directives()
The route_directives() function gives you better control over automatic DRC repair.
(The ADR flow uses the signoff_autofix_drc command within the IC Compiler tool.) The
bounding boxes are output to the LAYOUT_ERRORS file, and VUE displays the specified
display markers. The directive layers specified in this function — including combinations of
add shapes, subtract shapes, and multiple error markers — are passed directly to the
IC Compiler tool in the ADR flow.
This function is also compatible with IC Validator pattern matching.

Syntax
route_directives(
display_marker = polygon_layer,
group_marker = polygon_layer,
error_layers = {layername = polygon_layer, ...}, //optional
route_directives = {{add_layer = polygon_layer,
subtract_layer = polygon_layer}, ...} //optional
);

Returns
void

Arguments
display_marker
Required. Specifies the layer that contains the shapes used to display the errors.

group_marker
Required. Specifies the layer with the shapes that enclose the shapes defined by the
display_marker, error_layers, and route_directives arguments.

error_layers
Optional. Specifies the layers that are used to specify the errors. These layers are
interpreted by the signoff_autofix_drc command as alternative representations.
Each of these layers is used in an independent fixing attempt in the ADR flow.

route_directives
Optional. Specifies the layers that contain shapes which identify surgical fixes for the
IC Compiler Zroute router. For a given set of add_layer and subtract_layer shapes
contained by a single group_marker layer, the shapes are implemented by the Zroute
router if they are allowed actions.

Chapter 3: Runset Functions: J - Z


route_directives() 3-626
IC Validator Reference Manual Version N-2017.12-SP2

❍ add_layer. The shapes on this layer are added, as if by an OR operator, to the


database by the Zroute router, inheriting properties and connectivity based on the
shapes they are touching.
❍ subtract_layer. The shapes on this layer are subtracted, as if by a NOT operator,
from the database by the Zroute router, possibly leaving behind partial shapes in the
database.

Description
The following restrictions apply to the route_directives() function:
• All shapes altered by the route_directives argument must be on the minimum
manufacturing grid. (The manufacturing grid is specified in the technology file.)
• An add_layer directive must not create a short, even if a subtract_layer directive
would resolve it.
• The result of a route directive must not be an open or floating shape.
• A layer specified by a subtract_layer argument must not interact with any via
enclosure.
• Any route_directives layer must not overlap with power and ground straps, shapes
that have a route type of fixed or user enter, and pins.
• A subtract layer can interact only with shapes having a route type of SIGNAL_DETAIL.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
Use the pattern_learn() function to create a new pattern library, patternLib.
pattern_learn(
pattern_library_name = "patternLib",
pattern_layers = {layerInput},
pattern_marker = layerMarker,
optional_pattern_markers = {
layerPatternExtent,
layerAdd,
layerRemove
}
);

Chapter 3: Runset Functions: J - Z


route_directives() 3-627
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-20 shows an example of user-specified layers that are represented in the pattern
library, patternLib.
Figure 3-153 Pattern in patternLib Library

layerInput layerMarker layerAdd layerRemove

layerPatternExtent

Use the pattern_match() function to capture patterns on a design that match patterns in a
pattern library. Then, use the optional_pattern_markers() function to list polygon layers
associated with the pattern marker layer, allowing you to do additional error filtering. Finally,
use the route_directives() function to specify error markers that are used in the ADR
flow.
marker_layer = pattern_match(
pattern_library_name = "patternLib",
pattern_layers = {metal1}
);

extra_layers = optional_pattern_markers(
pattern_library_name = "patternLib",
layerMarker = marker_layer
);

pattern_extent = extra_layers[0];
m1_add = extra_layers[1];
m1_subtract = extra_layers[2];

@ “Add/Remove Layer”;

Figure 3-21 shows an example of layers in the pattern database in the context of a pattern
match for the layout. These layers are used as the directive layers for the
route_directives() function.

Chapter 3: Runset Functions: J - Z


route_directives() 3-628
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-154 Pattern Matched in the Layout

metal1 marker_layer m1_add m1_remove

pattern_extent

Add to the pattern library the exact modifications you want, as specified in the
route_directives() function.
route_directives(
marker_layer = metal1,
group_marker = pattern_extent,
route_directives = {{add_layer = m1_add,
subtract_layer = m1_subtract}}
);

Zroute implements the modifications.


• The standard ADR algorithm is bypassed in this flow.
• Shapes are bundled into groups.
• On a per-group basis, Zroute applies either all or none of the shapes exactly as
prescribed.
• Zroute guarantees: the shapes are
❍ Technology file clean.
❍ Appropriate for downstream ECOs.

Chapter 3: Runset Functions: J - Z


route_directives() 3-629
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-22 shows an example of what the input layers might look like at the completion of
the ADR flow, with the directive layers shown for context. Note that the jog on the metal1
layer has moved north to cover the m1_add shape and to uncover the m1_remove shape.
Figure 3-155 Layers After ADR

metal1 marker_layer m1_add m1_remove

pattern_extent

See Also
milkyway_route_directives()
pattern_learn()
pattern_match()

Chapter 3: Runset Functions: J - Z


route_directives() 3-630
IC Validator Reference Manual Version N-2017.12-SP2

run_options()
The run_options() function specifies directories, files, and run variations.

Syntax
run_options(
run_details_path = "string", //optional
group_path = "string", //optional
print_precision = integer, //optional
print_preprocess_files = {TREE, VCELL, TECH}, //optional
tree_files = ALL | FIRST_LAST //optional
flat_polygon_count = true | false, //optional
uppercase = true | false, //optional
instance_prefix = "string", //optional
optimize_floating_fills = true | false, //optional
lvs_netlist_flow = ICV | SPICE, //optional
lvs_user_unit = MICRON | METER, //optional
verbose_results_file = {ERRORS, ASSIGNS}, //optional
assign_layer_out_of_range = ABORT | WARN, //optional
compress_netlist = true | false, //optional
report_streamfile_information = {GDS_LAST_MODIFIED, GDS_LAST_ACCESSED,
MD5SUM, FORMAT, PATH, COMMAND}
//optional
);

Returns
void

Arguments
run_details_path
Optional. Specifies the directory location where files that are not crucial to debugging a
design are stored. The default is run_details in the run directory.
The path can be changed with the -rd command-line option. See the Command-Line
Options section in the “IC Validator Basics” chapter of the IC Validator User Guide for
more information.

group_path
Optional. Specifies the directory that contains layer group files and other files used
during a run. Because these files can be quite large, avoid reading and writing over a
network. The group directory should exist on a local disk of the host executing the run.
The default is the group directory in the run details directory.
Note:
The IC Validator tool does not allow you to set this path to the current working
directory (.).

Chapter 3: Runset Functions: J - Z


run_options() 3-631
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The path can be changed with the -g command-line option. See the Command-Line
Options section in the “IC Validator Basics” chapter of the IC Validator User Guide for
more information.

print_precision
Optional. Specifies the number of decimal places for the floating point values reported in
output files, including the LAYOUT_ERRORS file and the window statistics files for the
density family of functions. The default is 4.

print_preprocess_files
Optional. Specifies the preprocess files to generate. More than one value can be listed.
These files are useful when debugging runs. The default is {TREE, VCELL, TECH}.

tree_files
Optional. If the print_preprocess_files argument includes the TREE value, the
tree_files argument is used to determine the amount of tree files printed and saved on
disk. The default is ALL.
❍ ALL. Prints tree files for all of the preprocessing phases.

❍ FIRST_LAST. Prints tree files for the first and last preprocessing phases. The first
phase (tree0) represents the read-in hierarchy before hierarchy optimizations; the
last phase (tree999) represents the optimized hierarchy after all of the preprocessing
steps.

flat_polygon_count
Optional. Specifies if functions that derive layers include the flat polygon count along with
the cell level polygon count in the cell.sum file. When set to true, the polygon count is
included in the file. The default is false.
Note:
Using the flat_polygon_count argument is a debug option. Do not use it in
production runsets because there are performance and memory costs for calculating
the flat polygon count.

uppercase
Optional. Specifies if layout text and layout cell names are converted to uppercase
characters for DRC, ERC, extraction, and netlist functions. The default is false.
❍ true. Converts the layout text and layout cell names to uppercase characters for
these functions. This conversion affects all functions that process text and cell
names.
❍ false. Does not convert the layout text or layout cell names to uppercase characters.

Chapter 3: Runset Functions: J - Z


run_options() 3-632
IC Validator Reference Manual Version N-2017.12-SP2

See the FULL_NAME_CASE_INSENSITIVE setting in the generate_user_equivs


argument of the lvs_options() function for more information.

instance_prefix
Optional. Serves as a mechanism to make the cell instances different from the X-card
netlisted device instances in the SPICE netlist. To create a valid SPICE netlist when you
are using the x_card option of the device configuration functions, such as nmos(), you
must also set instance_prefix to a non-null string value.
For the SPICE flow, that is when the lvs_netlist_flow argument is SPICE, the tool
adds the prefix X to cell instances. The X is added automatically preceding the specified
instance prefix. For example, specifying instance_prefix="MyCell" and setting
lvs_netlist_flow=SPICE, the cell instance of layout has the prefix XMyCell.
Limitation:
The prefix X might conflict with the exploded_text_options argument of the
text_options() function. If the hierarchical_delimiter option is prefixed with X
in a SPICE flow, The tool cannot differentiate where the X come from and an error
occurs.

optimize_floating_fills
Optional. Specifies if the floating fill is optimized in the connect database. When set to
true, the fill is optimized in the connect database. The default is true.
Note:
All functions that check floating fill do so as usual and do the same work as without
this optimization.
The identify_fill() function optimizes floating fill for specified layers.

lvs_netlist_flow
Optional. Specifies the netlist format for the LVS flow. The default is ICV.
❍ ICV.

❍ SPICE. The format specified in the schematic() and read_layout_netlist()


functions must be SPICE.
Note:
The verilog_settings argument of the read_layout_netlist() and
schematic() functions is ignored.

lvs_user_unit
Optional. Specifies the unit of measure for the LVS flow, including device extraction and
compare. The units are for length, width, area, and perimeter. The coordinates are
always in microns. The default is MICRON.

Chapter 3: Runset Functions: J - Z


run_options() 3-633
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
For ICV flows, the units must be microns.
If the input SPICE input is only in meters, then the lvs_user_unit argument can be
set to MICRON or METER. But, if part of the SPICE input is in microns, the
lvs_user_unit argument can only be set to MICRON; setting it to METER causes an
error.
The tolerance-related functions that can be affected by the lvs_user_unit argument
are:
Runset Functions:
check_property()
merge_parallel()
merge_series()
recognize_gate()
short_equivalent_nodes_off()
Compare Utility Functions:
lvs_get_compare_tolerance()
lvs_get_exclude_tolerance()

❍ MICRON. Ensures consistency in micron units cross the LVS flow:

■ All schematic properties of netlists are converted to microns.


■ The geometry utility functions used in device extraction are also in microns. See
the Glossary for a list of the geometry functions.
■ The extracted netlist has geometry properties in microns.
■ Compare has no additional conversion of properties.
❍ METER. Ensures consistency in meters units cross the LVS flow:

■ All schematic properties are in meters. No conversion is required because the


SPICE netlist is in meters by default.
■ The scale option of the properties argument of the device configuration
functions is ignored.
■ The geometry utility functions in device extraction are also in meters.
■ The extracted netlist has geometry properties in meters.
■ Compare has no additional conversion of properties.

verbose_results_file
Optional. Specifies if error violation details and assign layer details are reported in the
cell.RESULTS file. The default is an empty list, which indicates that only a summary is

Chapter 3: Runset Functions: J - Z


run_options() 3-634
IC Validator Reference Manual Version N-2017.12-SP2

provided in the Results Summary and Assign Layer Statistics sections of the REPORT
file.
❍ ERRORS. Reports each rule name and the total number of violations for that rule.
Note:
When using error classification, the number of waived violations is excluded from
the number of violations found in the cell.RESULTS file. For example, the tool
detects 100 violations, but 60 of them are waived. Therefore, the number of
violations reported is 40.
❍ ASSIGNS. Reports each assign layer name, hierarchical and flat polygon counts for
the layer (or "Pruned" if the layer was pruned), and additional assignment information
for the layer from the assign functions in the runset.

assign_layer_out_of_range
Optional. Specifies the behavior of the IC Validator tool when an assign function contains
layer or datatype numbers that are greater than the maximum allowed range of the input
library format. The default is ABORT.
❍ ABORT. Aborts the run with an error when an assign function contains an out of range
layer.
❍ WARN. Issues a warning and continues the run when an assign function contains an
out of range layer.
See Layout Layer and Datatype Ranges for information about the limits of the values in
the assign functions.

compress_netlist
Optional. Compresses the output layout netlist generated using the netlist() function.
The output file name is cell.net.gz. A file called cell.net is a soft link to the compressed
file, and it enables certain flows to continue to operate normally. The default is false.

report_streamfile_information
Optional. Generates a report in the cell.RESULTS file for the GDSII and OASIS input
libraries, md5sum, GDSII last modified, last accessed data and time stamps, format,
path to the input library, and function specifying the input library, depending on the
settings. The default is no reporting.
❍ GDS_LAST_MODIFIED. Reports the date and time when GDSII was last modified and
extracted from the GDSII library. If this information is unavailable, then “NOT
AVAILABLE” is reported. This occurs when the date fields in GDSII are all “0” or
invalid characters.
❍ GDS_LAST_ACCESSED. Reports the date and time when GDSII was last accessed and
extracted from the GDSII library. If this information is unavailable, then “NOT

Chapter 3: Runset Functions: J - Z


run_options() 3-635
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

AVAILABLE” is reported. This occurs when the date fields in GDSII are all “0” or
invalid characters.
❍ MD5SUM. Reports md5sum of the input library computed on the entire file using the
UNIX command, md5sum -b file. For compressed GDSII, the md5sum is computed
on the compressed file. If this information is unavailable, then “NOT AVAILABLE” is
reported. This occurs when md5sum is not in the user $path.
❍ FORMAT. Reports the GDSII or OASIS input library formats.

❍ PATH. Reports the absolute path to input library file.

❍ COMMAND. Reports the function name, runset, and the line number where the library
was specified in the runset.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
run_options (
group_path = "/localdrive/path/group",
print_precision = 3
);

Example
run_options(
report_streamfile_information =
{MD5SUM,GDS_LAST_ACCESSED,GDS_LAST_MODIFIED, FORMAT, PATH, COMMAND}
);

Report in the cell.RESULTS file:


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Streamfile Information
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ADD4_w_unused_text.GDS
MD5SUM 178af6b5323ecaa415b698af4dcf6a6d
GDS_LAST_MODIFIED March 18 15:08:15 2016
GDS_LAST_ACCESSED March 18 15:08:15 2016
FORMAT GDSII
PATH /remote/testcases120/9000805501_9000806000/ \
9000805656/data/ADD4_w_unused_text.GDS
COMMAND library() at rules_16.06.rs:3

Chapter 3: Runset Functions: J - Z


run_options() 3-636
IC Validator Reference Manual Version N-2017.12-SP2

See Also
error_options()
gds_options()
hierarchy_auto_options()
hierarchy_options()
incremental_options()
library()
milkyway_options()
oasis_options()
openaccess_options()
resolution_options()
text_options()

Chapter 3: Runset Functions: J - Z


run_options() 3-637
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

schematic()
The schematic() function reads a schematic file and translates it to IC Validator netlist
format, if it is not already in that format and uncompressed.
Note:
In a SPICE flow (that is, when the lvs_netlist_flow argument of the run_options()
function is SPICE), the schematic file, which is in SPICE format, is not translated.
The result of this function is used by the compare() function. The NetTran utility does the
translation.
This function must be called before assign functions and can be called only one time in a
runset.
Note:
When you set the -sf command-line option to ICV, the schematic() function does not
run NetTran. In this situation, the IC Validator tool uses the netlist specified by the -s
option for LVS compare.
For a SPICE flow, the -sf command-line option can only be set to SPICE.

Syntax
schematic(
schematic_file = {{filename = "string",
format = SPICE | VERILOG | ICV},
...},
schematic_library_file = {{filename = "string",
format = SPICE | VERILOG | ICV},
...}, //optional
global_nets = {"string", ...}, //optional
expand_multiple_devices = true | false, //optional
uppercase = true | false, //optional
cell = "string", //optional
add_cell_ports = {"string", ...}, //optional
output_netlist_file = "string", //optional
remove_devices = {"string", ...}, //optional
remove_device_instances = {"string", ...}, //optional
spice_settings = {short_out_devices = {"string", ...},
short_voltage_threshold = double,
remove_instance_prefix = true | false,
remove_device_prefix = true | false,
device_map_file = "string",
ignore_cdl_resi = true | false,
resolve_duplicate_instances = true | false,
duplicate_port = ABORT | WARNING,
scale = double}, //optional
verilog_settings = {global_ground = "string",
global_power = "string",
bus_start_bit = HIGH | LOW,

Chapter 3: Runset Functions: J - Z


schematic() 3-638
IC Validator Reference Manual Version N-2017.12-SP2

global_net_map_file = "string",
retain_backslash = true | false,
prefer_module_supply = true | false,
localize_module_supply = true | false,
localize_global_supply = true | false}, //optional
floating_pins = ABORT | ALLOW, //optional
retain_comments = {SPICE, VERILOG, ICV}, //optional
duplicate_cell = ABORT | USE_MULTIPLE | USE_ONE //optional
);

Returns
schematic_netlist_file_handle

Arguments
schematic_file
Required. Lists the schematic files, including the optional path, and the format. The
formats are SPICE, VERILOG, and ICV. The default is ICV.
The file can be changed with the -s and -sf command-line options. When using these
command-line options, only one file can be specified. (See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.)
Important:
Do not use cell.net as the schematic netlist file name because this name is the file
name used for the extracted layout netlist. Using this name causes the schematic
netlist to be overwritten.

schematic_library_file
Optional. Lists the schematic files, including the optional path, and the format settings
that are not changed by the -s and -sf command-line options. The formats are SPICE,
VERILOG, and ICV. The default is ICV.

global_nets
Optional. Specifies the IC Validator global nets. The default is an empty list.

expand_multiple_devices
Optional. Specifies if devices are netlisted multiple times. The default is false.
❍ true. Lists devices in the netlist multiple times.

❍ false. Does not list the device multiple times.

uppercase
Optional. Specifies if input is converted to uppercase characters. The default is false.

Chapter 3: Runset Functions: J - Z


schematic() 3-639
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ true. Converts input to uppercase characters.

❍ false. Does not convert input to uppercase characters.

cell
Optional. Specifies the top cell for the output netlist. The top cell is also the cell to which
ports are added using the add_cell_ports argument. Only cells contained in the
hierarchy of this top cell are output. The default is an empty string (""), meaning that all
cells in the input netlist are translated into the output netlist.
Note:
The -stc command-line option overrides this name. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for more
information.

add_cell_ports
Optional. Specifies the ports to add to the cell specified by the cell argument. By
default, the IC Validator tool does not add ports to any cells.

output_netlist_file
Optional. Specifies the output netlist file. If the file already exists, the content of the file is
overwritten. The default name is "cell.sch_out".

remove_devices
Optional. Filters out the devices that have specific model names.

remove_device_instances
Optional. Filters out the devices that have specific instance names. You can use the "*"
metacharacter.

spice_settings
Optional. Specifies settings related to SPICE translations. For Boolean arguments set to
false, the described behavior is not enabled.

❍ short_out_devices. Specifies the resistors, capacitors, and inductors that are


filtered out. After the devices are removed, the two pins are shorted.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-fshort command-line option. See the -sp-fshort command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ short_voltage_threshold. Specifies the voltage source threshold value for shorts.
By default, the IC Validator tool replaces all voltage sources in SPICE designs with an

Chapter 3: Runset Functions: J - Z


schematic() 3-640
IC Validator Reference Manual Version N-2017.12-SP2

open. Use this setting to override the open with a short. All sources with a DC voltage
of less than or equal to the threshold are replaced by a short.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-voltThresh command-line option. See the -sp-voltThresh command-line
option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ remove_instance_prefix. Specifies if the leading X prefix in SPICE instance
names is stripped. The default is false.
■ true. Strips the leading X prefix in SPICE instance names.

■ false. Does not strip the prefix.


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-chopXPrefix command-line option. See the -sp-chopXPrefix command-line
option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ remove_device_prefix. Specifies if the leading R, L, C, Q, D, and M prefixes in
SPICE instance names are stripped. The default is false.
■ true. Strips the leading R, L, C, Q, D, and M prefixes in SPICE instance names
during netlist read-in and before any netlist processing, such as flattening.
■ false. Does not strip the prefix.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-chopDevPrefix command-line option. See the -sp-chopDevPrefix
command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ device_map_file. Specifies a map of device model names to new names. See the
CDL Map File section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for an example of the mapping file format.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-devMap command-line option. See the -sp-devMap command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ ignore_cdl_resi. Specifies if *.RESI statements in the netlist are ignored. The
default is false.
■ true. Does not short the resistors specified in the *.RESI statements.

■ false. Shorts the resistors specified in the *.RESI statements.


When the IC Validator tool runs NetTran, this argument corresponds to the NetTran
-sp-ignoreCdlResi command-line option. See the -sp-ignoreCdlResi

Chapter 3: Runset Functions: J - Z


schematic() 3-641
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ resolve_duplicate_instances. If duplicate instance names are found within the
same cell, you can rename these instance names by adding a suffix to the following
format: DUP#index. The new names do not cause any naming collisions. The default
is false.
When the IC Validator tool runs NetTran, this argument corresponds to the NetTran
-sp-resolveDupInstances command-line option. See the
-sp-resolveDupInstances command-line option in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide
for more information.
❍ duplicate_port. Controls the duplicate ports in the SPICE cell port list (implicitly
defined). For a $PINS statement, duplicate pins are not allowed. The default is
WARNING.
Note:
The -sp-dupPort NetTran command-line option provides the same functionality.
■ ABORT. Reports an error and aborts the run at the cell definition.

■ WARNING. Shorts the duplicate ports and gives a warning message.

❍ scale. Overwrites the scaling factor (*.SCALE and .OPTION SCALE) for all input
netlists in the SPICE format. If this argument is not specified, the scaling factor
follows the existing scaling syntax of the input SPICE netlist.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-sp-scale command-line option. See the -sp-scale command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.

verilog_settings
Optional. Specifies settings related to Verilog translations. For Boolean arguments set to
false, the described behavior is not enabled.

❍ global_ground. Specifies the Verilog global ground net.


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-b0 command-line option. See the -verilog-b0 command-line option in
the Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ global_power. Specifies the Verilog global power net.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-b1 command-line option. See the -verilog-b1 command-line option in

Chapter 3: Runset Functions: J - Z


schematic() 3-642
IC Validator Reference Manual Version N-2017.12-SP2

the Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ bus_start_bit. Specifies if Verilog buses start with the most or least significant bit
first in the bus range. The default is HIGH.
■ HIGH. Starts the buses with the most significant bit, for example, Y[7:0].

■ LOW. Starts the buses with the least significant bit, for example, Y[0:7].
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-busLSB command-line option. See the -verilog-busLSB command-line
option in the Command-Line Syntax for NetTran section in the “Netlist Formats”
chapter of the IC Validator LVS User Guide for more information.
❍ global_net_map_file. Specifies the Verilog supply net mapping file.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-voltmap command-line option. See the -verilog-voltmap
command-line option in the Command-Line Syntax for NetTran section in the “Netlist
Formats” chapter of the IC Validator LVS User Guide for more information.
❍ retain_backslash. Specifies if the backslash (\) is retained on Verilog net names.
The default is false.
■ true. Retains the backslash (\) on Verilog net names.

■ false. Does not retain the backslash (\) on Verilog net names.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-R command-line option. See the -verilog-R command-line option in the
Command-Line Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ prefer_module_supply. Changes the precedence of 1) user-specified global supply
nets, 2) local supply nets, and 3) default global supply nets, VDD and VSS. The
default is false.
■ true. Supply net precedence is 2) > 1) > 3).

■ false. Supply net precedence is 1) > 2) > 3).


When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-preferModuleSupply command-line option. See the
-verilog-preferModuleSupply command-line option in the Command-Line Syntax
for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ localize_module_supply. Changes the precedence of 1) user-specified global
supply nets, 2) local supply nets, and 3) default global supply nets, VDD and VSS.

Chapter 3: Runset Functions: J - Z


schematic() 3-643
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Global net generation for local supply nets can be disabled as well. The default is
false.

■ true. Supply net precedence is 2) > 1) > 3). Global net generation for local supply
nets is disabled.
■ false. Supply net precedence is 1) > 2) > 3).
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-localizeModuleSupply command-line option. See the
-verilog-localizeModuleSupply command-line option in the Command-Line
Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ localize_global_supply. Disables global net generation of user-specified global
supply nets and default global supply nets, VDD and VSS. The default is false.
■ true. Global net generation for global supply nets is disabled.

■ false. Global net generation for global supply nets is not disabled.
When the IC Validator tool runs NetTran, this value corresponds to the NetTran
-verilog-localizeGlobalSupply command-line option. See the
-verilog-localizeGlobalSupply command-line option in the Command-Line
Syntax for NetTran section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.

floating_pins
Optional. Reports if floating pins are detected. If you use the duplicate_cell argument
with the floating_pins argument, the NetTran utility tries to select duplicate cell
definitions that are not floating pins. The default is ALLOW.
See the -noFloatingPins command-line options in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide for
more information.
❍ ALLOW. Allows floating pins. When the NetTran utility detects a floating pin, it reports
a warning message. For the port that does not have a corresponding pin connection,
a dummy net, with the name icv_floatnet_xx, is added. See the Translating Standard
Netlists to IC Validator Format section in the “Netlist Formats” chapter of the
IC Validator LVS User Guide for more information.
❍ ABORT. Does not allow floating pins. When the NetTran utility detects a floating pin, it
reports an error message.

retain_comments
Optional. Retains comments from the input netlist in the output netlist for the specified
formats. The default is that comments are not output.

Chapter 3: Runset Functions: J - Z


schematic() 3-644
IC Validator Reference Manual Version N-2017.12-SP2

Note:
This argument will be retired.
See the -retainComments command-line option in the Command-Line Syntax for
NetTran section in the “Netlist Formats” chapter of the IC Validator LVS User Guide for
more information.

duplicate_cell
Optional. Specifies how to handle multiple cell definitions having the same name. The
default is USE_MULTIPLE.
❍ ABORT. Reports an error and aborts the run if more than one cell contains the same
cell name. The -dupCell ABORT NetTran command-line option provides the same
functionality.
❍ USE_MULTIPLE. Specifies the cell definition by using the following rules:

■ Each instance (placement) selects a cell definition with the same netlist type, if it
exists.
■ Each instance (placement) selects a cell definition in the same file, if it exists.
■ If there is no cell definition with the same netlist type or in the same file, NetTran
selects a random cell definition.
The -dupCell USE_MULTIPLE NetTran command-line option provides the same
functionality.
❍ USE_ONE. Selects the first-read definition as the master definition for all instances. If
both empty and non-empty duplicate .subckt cells exist in the input netlists, NetTran
selects the first read non-empty definition. If there are multiple netlist type definitions,
NetTran follows this priority: SPICE -> VERILOG -> ICV, to select the master
definition regardless of input order.
The -dupCell USE_ONE NetTran command-line option provides the same
functionality.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function does not require any additional licenses.
Shared licensing. This function requires the following IC Validator license: NET-TRAN.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


schematic() 3-645
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
schematic_netlist_db = schematic({{"sch", ICV}});

See Also
read_layout_netlist()
write_spice()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


schematic() 3-646
IC Validator Reference Manual Version N-2017.12-SP2

sconnect()
The sconnect() function selects the layer1 polygons that intersect the layer2 polygons
which belong to the net with the highest layer1 polygon count. The result is
nondeterministic because different nets can have the same polygon count.

Syntax
sconnect(
connect_sequence = connect_database,
layer1 = polygon_layer,
layer2 = polygon_layer,
mode = GLOBAL | LOCAL, //optional
include_touch = NONE | EDGE, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
connect_sequence
Required. Specifies the connect database.

layer1
Required. Selects polygons from the specified polygon layer, which must be in the
connect database.

layer2
Required. Specifies the second polygon layer. It must not be in the connect database.

mode
Optional. Specifies the context in which the net with the highest layer1 polygon count is
determined. The default is LOCAL.
❍ GLOBAL. Specifies that the context is the entire layer. All layer1 polygons that
intersect layer2 polygons are included in determining the net with the highest
polygon count.
❍ LOCAL. Specifies that the context is within a layer2 polygon. Only the layer1
polygon intersecting the layer2 polygon is included in determining the highest
polygon count.

Chapter 3: Runset Functions: J - Z


sconnect() 3-647
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

include_touch
Optional. Specifies the types of touches that provide an electrical connection. The default
is NONE.
❍ NONE. Specifies that no touches form an electrical connection.

❍ EDGE. Specifies that outside edge touches form an electrical connection.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.

Example
x = sconnect(con_db, tap, well);

See Also
soft_check()
soft_connect()
soft_connect_check()
stamp()

Chapter 3: Runset Functions: J - Z


sconnect() 3-648
IC Validator Reference Manual Version N-2017.12-SP2

select_by_double_property()
The select_by_double_property() function sorts the polygons of the input layer into a
polygon layer based on the specified property name and value pair. Each polygon that fits
the pair is in the output layer. Other polygons are ignored.

Syntax
select_by_double_property(
layer1 = polygon_layer,
property_name = "string",
property_value = doubleconstraint,
name = "layer_label"
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer that is sorted.

property_name
Required. Specifies the user-defined name of the property.

property_value
Required. Specifies the constraint that must be satisfied.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See IC Validator
Licenses in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


select_by_double_property() 3-649
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
m1_prop1_LT_6 = select_by_double_property (m1_prop1,"prop1", <6);
m1_prop1_EQ_2 = select_by_double_property (m1_prop1,"prop1", ==2);

See Also
net_polygon_by_property()
text_to_double_property()

Chapter 3: Runset Functions: J - Z


select_by_double_property() 3-650
IC Validator Reference Manual Version N-2017.12-SP2

select_marker_by_double_property()
The select_marker_by_double_property() function retrieves the pattern markers based
on the specified property name and double value pair. Each polygon that fits the pair is in the
output layer.

Syntax
select_marker_by_double_property(
layer1 = marker_layer,
property_name = "string",
property_value = doubleconstraint,
name = "layer_label"
);

Returns
marker_layer

Arguments
layer1
Required. Specifies the pattern markers.

property_name
Required. Specifies the user-defined name of the property.

property_value
Required. Specifies the property value, which is a constraint of double.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See IC Validator
Licenses in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


select_marker_by_double_property() 3-651
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
In the following example, the select_marker_by_double_property() function selects
hotspots based on its minimum CD.
//output pattern markers of all hotspots
hotspots = pattern_match(
pattern_library_name = "TEST_CASE_Mx",
pattern_layers = {metal}
);

//return pattern markers of hotspots with min_cd < 0.06 m


min_cd_hotspots = select_marker_by_double_property(
hotspots,
"min_cd",
(0,0.06)
);

See Also
pattern_learn()
select_marker_by_string_property()

Chapter 3: Runset Functions: J - Z


select_marker_by_double_property() 3-652
IC Validator Reference Manual Version N-2017.12-SP2

select_marker_by_string_property()
The select_marker_by_string_property() function retrieves the pattern markers based
on the specified property name and string value pair. Each polygon that fits the pair is in the
output layer.

Syntax
select_marker_by_string_property(
layer1 = marker_layer,
property_name = "string",
property_value = "string",
name = "layer_label"
);

Returns
marker_layer

Arguments
layer1
Required. Specifies the pattern markers.

property_name
Required. Specifies the user-defined name of the property.

property_value
Required. Specifies the property value, which is a string.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See IC Validator
Licenses in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


select_marker_by_string_property() 3-653
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
In the following example, the select_marker_by_string_property() function selects
hotspots based on its pattern type.
//output pattern markers of all hotspots
hotspots = pattern_match(
pattern_library_name = "TEST_CASE_Mx",
pattern_layers = {metal}
);
//return pattern markers of line type hotspots
line_hotspots = select_marker_by_string_property(
hotspots,
"pattern_type",
"width"
);
//return pattern markers of space type hotspots
space_hotspots = select_marker_by_string_property(
hotspots,
"pattern_type",
"space"
);

See Also
pattern_learn()
select_marker_by_double_property()

Chapter 3: Runset Functions: J - Z


select_marker_by_string_property() 3-654
IC Validator Reference Manual Version N-2017.12-SP2

shift_symmetry()
The shift_symmetry() function checks the symmetry of the target layer polygons against
the created, mirrored polygons. This function uses a bounding layer to identify symmetry
units within a given context layer bounding box. All of the original polygons (layer1) that
interact with the bounding layer within the context layer are considered to form one
symmetry unit. This unit is checked for symmetry as per the given criteria with the remaining
symmetry units. The function
• Selects a marker shape from the bounding layer for each polygon in the context layer
and creates mirrored bodies of the original polygons (layer1) within each bounding box
of the context layer according to the given symmetry type.
• For each bounding box in the context layer, compares the original polygons that interact
with the unselected marker shapes of the bounding layer against the created mirrored
polygons, and reports the existing part in target polygons not in mirrored polygons.
• Polygons in the context and bounding layers are deposited in the top cell and the
polygons of the bounding layer must be enclosed in the polygons of the context layer.

Syntax
shift_symmetry(
layer1 = polygon_layer,
context_layer = polygon_layer,
bounding_layer = polygon_layer,
symmetry = HORIZONTAL_AXIS | VERTICAL_AXIS | ROTATE_180 | NONE,
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is the target layer.

context_layer
Required. Specifies the polygon layer that is the context layer. Polygons in layer1 that
interact with polygons on the context layer are selected.

bounding_layer
Required. Specifies the polygon layer that is the bounding layer. Polygons in the
context_layer that interact with polygons on the bounding layer are selected.

Chapter 3: Runset Functions: J - Z


shift_symmetry() 3-655
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

symmetry
Required. Specifies the symmetry type of the pattern. The options are
❍ HORIZONTAL_AXIS.

❍ VERTICAL_AXIS.

❍ ROTATE_180.

❍ NONE.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See IC Validator
Licenses in the IC Validator User Guide for more information.

Example
In Figure 3-156, layer1 (filled green) polygons interacting with the context layer (unfilled
red) polygons are selected for the symmetry checking operation. A bounding layer (unfilled
cyan) is used to identify symmetry units from the layer1 polygons. A marker shape is then
selected from the bounding layer polygons in the context layer, and mirrored polygons within
the marker shape are created as per the symmetry criteria. The mirrored polygons from the
selected marker shape are checked for symmetry with the remaining target symmetry units
(unselected marker shapes), using an XOR operation. Shapes from the target polygons not
in mirrored polygons, and vice versa, are reported.

Chapter 3: Runset Functions: J - Z


shift_symmetry() 3-656
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-156 shift_symmetry() Function Example

Original Original
polygons in polygons in
selected unselected
marker shape marker shape
from the from the
bounding layer bounding layer

shift_symmetry (layer1, shift_symmetry (layer1, shift_symmetry (layer1, shift_symmetry (layer1,


context_layer, context_layer, context_layer, context_layer,
bounding_layer, NONE) bounding_layer, bounding_layer, bounding_layer,
HORIZONTAL_AXIX) VERTICAL_AXIS) ROTATE_180)

layer1 context bounding overlap symmetry


layer layer results

Y-Axis X-Axis

See Also
check_symmetry()

Chapter 3: Runset Functions: J - Z


shift_symmetry() 3-657
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

short_equivalent_nodes()
The short_equivalent_nodes() function creates shorts between electrically equivalent
nodes. The specified criteria must be met in order for the equivalent nodes to be shorted.
Note:
To be a candidate for equivalent node shorting, the bulk potential after shorting must be
consistent with the potential before shorting for every MOSFET in the stack.
See the stack_type argument for support of split series-parallel structure.
All nets are treated as non static except when they have the same name as the opposite
side port or when they are explicitly specified in the layout_static_nets or
schematic_static_nets arguments of the equiv_options() function.

This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
short_equivalent_nodes(
state =
compare_state,
device_type =
NMOS | PMOS,
device_names =
{"string", ...}, //optional
short_nodes =
SAME_DEVICE_NAME_ONLY | ANY_DEVICE_NAME |
ANY_DEVICE_TYPE, //optional
width_ratio_tolerance = {tolerance = doubleconstraint,
tolerance_type = RELATIVE | ABSOLUTE},
//optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"},
...}, //optional
stack_type = {SERIES_PARALLEL} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The information from the
short_equivalent_nodes() function is added.

device_type
Required. Specifies the device type. Only NMOS and PMOS device types are available.

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-658
IC Validator Reference Manual Version N-2017.12-SP2

device_names
Optional. Specifies the layout devices. Each device must match a device specified in a
device_name argument of a device configuration function.

short_nodes
Optional. Specifies when shorts can be created. The default is
SAME_DEVICE_NAME_ONLY.

❍ SAME_DEVICE_NAME_ONLY. Creates shorts when devices in the same series chain


and parallel row have the same device type and same device name.
❍ ANY_DEVICE_NAME. Creates shorts when devices in the same series chain and
parallel row have the same device type.
❍ ANY_DEVICE_TYPE. Creates shorts when devices in the same series chain are any
type or name, and the parallel row has the same device type.
There are four cases of series chains with swappable and non-swappable pin devices for
the short_equivalent_nodes() function:
❍ Case 1. Series chain with the same order of non-swappable pin devices
❍ Case 2. Series chain with a different order of non-swappable pin devices
❍ Case 3. Series chain with swappable pin devices
❍ Case 4. Series chain with swappable and non-swappable pin devices
Cases 1, 3, and 4 are considered valid series chains for the
short_equivalent_nodes() function.

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-659
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-157 Series Chain Cases

Case 1 Case 2 Case 3 Case 4

width_ratio_tolerance
Optional. Specifies the tolerance constraints. The difference of width ratio of devices at
the equivalent nodes must satisfy the tolerance constraints. Otherwise, the shorts are not
created.
❍ tolerance. Specifies the tolerance for the width ratio. The width ratio is checked
based on this tolerance. The tolerance must be specified as a range. The default is
[-10,+10].

❍ tolerance_type. Optional. Specifies how property tolerances are checked. The


default is RELATIVE.
■ RELATIVE. Specifies that tolerances are checked based on a percentage property
difference.
■ ABSOLUTE. Specifies that tolerances are checked based on an absolute property
value difference. The units are based on the lvs_user_unit argument of the
run_options() function.

equiv_cells
Optional. Specifies the schematic and layout cell name pairs for which the
short_equivalent_nodes() function applies. You must specify the equiv_cells pairs
in the equiv_options() function before calling the short_equivalent_nodes()
function. If only one cell name in the pair is specified, the names are assumed to be the
same.

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-660
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The short_equivalent_nodes() instruction is observed only when comparing each
listed equivalence cell pair. If an equivalence cell pair is exploded into the parent
equivalence cell pair while comparing the parent, the short_equivalent_nodes()
instruction is discarded for the content of the exploded cell.

stack_type
Optional. Specifies support for split series-parallel structures.
❍ SERIES_PARALLEL. Shorts nets of each series stack of parallel devices as shown in
Figure 3-158.
Figure 3-158 SERIES_PARALLEL Option of the stack_type Argument

This option applies to the series-parallel structures of MOS devices where each
series stack has the same form of parallel structures. Structures more complex than
series-parallel are not supported.

Description
All devices must satisfy the width_ratio_tolerance argument constraints. The
IC Validator tool calculates the series-to-series width ratio for each of the corresponding
device pairs. The smallest width ratio serves as base ratio and other width ratios are
compared to it. Figure 3-159 illustrates a simple example:
(width_ratio_tolerance = {tolerance=[-10,10], tolerance_type=RELATIVE})

The left series stack is chosen as reference and the smallest ratio is A=2, which is chosen
as the base ratio. As a result, only B violates the width_ratio_tolerance argument value
in that
Difference of ratio BA = (3-2)/2 = 50%
Difference of ratio CA = (2.2-2)/2 = 10%

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-661
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-159 width_ratio_tolerance Argument Example

Figure 3-160 illustrates an example for cases with a series stack of parallel structures:
(width_ratio_tolerance = {tolerance=[-10,10], tolerance_type=RELATIVE})

The left series stack is chosen as reference and the smallest ratio is E=1, which is chosen
as the base ratio. As a result, A, B, and C violate the width_ratio_tolerance argument
value in that:
Difference of ratio AE = (4/3-1)/1 = 33%,
Difference of ratio BE = (5/4-1)/1 = 25%
Difference of ratio CE = (3/2-1)/1 = 50%
Difference of ratio DE = (21/20-1)/1 = 5%
Difference of ratio FE = (11/10-1)/1 = 10%

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-662
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-160 width_ratio_tolerance Example

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See IC Validator
Licenses in the IC Validator User Guide for more information.

Example
short_equivalent_nodes(state = my_compare_state,
device_type = NMOS,
device_names = {"nm1","nm2"},
short_nodes = SAME_DEVICE_NAME_ONLY,
width_ratio_tolerance = { [-10,+10], RELATIVE }
);

See Also
short_equivalent_nodes_off()
text_net()
text_options()

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes() 3-663
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

short_equivalent_nodes_off()
The short_equivalent_nodes_off() function prevents equivalent node shorts from being
created on a path that contains one of the specified devices.
This function must be called before the compare() function. See Chapter 7, “Compare
Functions Basics” in the IC Validator LVS User Guide for more information about
complementary functions and precedence rules.

Syntax
short_equivalent_nodes_off(
state = compare_state,
device_type = NMOS | PMOS,
device_names = {"string", ...}, //optional
equiv_cells = {{schematic_cell = "string",
layout_cell = "string"}, ...} //optional
);

Returns
void

Arguments
state
Required. Specifies the structure that contains compare settings. The compare matrix
must be defined by the init_compare_matrix() function. The
short_equivalent_nodes_off() information is added.

device_type
Required. Specifies the device type. Only NMOS and PMOS device types are available.

device_names
Optional. Specifies the layout devices. Each device must match a device specified in a
device_name argument of a device configuration function.

equiv_cells
Optional. Specifies the schematic and layout cell name pairs for which the
short_equivalent_nodes_off() function applies. You must specify the equiv_cells
pairs in the equiv_options() function before calling the
short_equivalent_nodes_off() function. If only one cell name in the pair is specified,
the names are assumed to be the same.
Note:
The short_equivalent_nodes_off() instruction is observed only when comparing
each listed equivalence cell pair. If an equivalence cell pair is exploded into the parent

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes_off() 3-664
IC Validator Reference Manual Version N-2017.12-SP2

equivalence cell pair while comparing the parent, the


short_equivalent_nodes_off() instruction is discarded for the content of the
exploded cell.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
short_equivalent_nodes()

Chapter 3: Runset Functions: J - Z


short_equivalent_nodes_off() 3-665
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

shrink()
The shrink() function creates polygons from the input layer that are undersized in the
specified directions by the specified distances. If the north, south, east, and west
arguments are all 0 (zero) then the output is the original layer. See the
prototype_options() function for more information about defining the criteria for the
creation of prototype cells during hierarchical preprocessing.

Syntax
shrink(
layer1 = polygon_layer,
north = double, //optional
south = double, //optional
east = double, //optional
west = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

north
Optional. Specifies the undersize distance from the northern direction, or the top of the
polygons. The default is 0.

south
Optional. Specifies the undersize distance from the southern direction, or the bottom of
the polygons. The default is 0.

east
Optional. Specifies the undersize distance from the eastern direction, or right of the
polygons. The default is 0.

west
Optional. Specifies the undersize distance from the western direction, or left of the
polygons. The default is 0.

Chapter 3: Runset Functions: J - Z


shrink() 3-666
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-161 shows examples of the shrink() function.

Chapter 3: Runset Functions: J - Z


shrink() 3-667
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-161 shrink() Function Examples

north = 5 east = 5 north = 5,


east = 5

layer1 Result

See Also
edge_grow()
edge_shrink()
grow()
move()
size()

Chapter 3: Runset Functions: J - Z


shrink() 3-668
IC Validator Reference Manual Version N-2017.12-SP2

size()
The size() function oversizes the polygons on the input layer by the specified value.

Syntax
size(
layer1 = polygon_layer,
distance = double,
corner_extension = INTERSECTION | RADIAL_OUTSIDE |
RADIAL_INSIDE | NONE, //optional
clip_acute = BISECTOR | ORTHOGONAL | OCTAGONAL | NONE,
//optional
corner_steps = integer, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
radial_sectors = integer, //optional
snap = CLOSEST | OVERSIZE | UNDERSIZE //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Specifies the size distance.
❍ A positive value oversizes the polygons.
❍ A negative value undersizes the polygons.
❍ A value of 0 is a copy.

corner_extension
Optional. Specifies how the corners are processed. The default is INTERSECTION.
❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ RADIAL_OUTSIDE. Forms a radial corner using an approximation curve that is
generated by a regular polygon circumscribed by a circle with the radius distance.
❍ RADIAL_INSIDE. Forms a radial corner using an approximation curve that is
generated by a regular polygon inscribed by a circle with the radius distance.

Chapter 3: Runset Functions: J - Z


size() 3-669
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ NONE. Does not extend corners.

clip_acute
Optional. When the corner_extension argument is INTERSECTION, specifies the type
of clipping that occurs when an acute interior angle is oversized, or an acute exterior
angle is undersized. The default is OCTAGONAL.
❍ BISECTOR. Clips acute angles with an edge perpendicular to the angle bisector at
(sqrt(2) x distance) from the original corner.
❍ ORTHOGONAL. When one edge is orthogonal, clips the angle perpendicular to that
edge at the specified distance from the original corner. Otherwise, clips the angle with
an edge perpendicular to the angle bisector at the specified distance away from the
original corner.
❍ OCTAGONAL. Clips acute angles with two edges at the specified distance from the
original corner, perpendicular to each of the edges forming the corner.
❍ NONE. Does not clip acute angles.

corner_steps
Optional. When the corner_extension argument is NONE, this argument provides an
approximation of the oversize of orthogonal corners using the specified number of steps.
Nonorthogonal corners are approximated with a single edge. The default is 0.
If the specified corner_steps value is too big, meaning that the corresponding corner
step size is smaller than the internal resolution, the specified corner_steps value has
no effect. The internal_resolution argument of the resolution_options() function
sets the internal resolution. In this case, the internal resolution is used to determine the
largest possible number to be used as the corner_steps value.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


size() 3-670
IC Validator Reference Manual Version N-2017.12-SP2

radial_sectors
Optional. Specifies the number of radial sectors used to approximate a quadrant at the
right corner. The effect of this argument on the sizing depends on the value of the
corner_extension argument.
The minimum value is 0, and the maximum value is 16. The value must be greater than
0 if the corner_extension argument is RADIAL_INSIDE or RADIAL_OUTSIDE. The
default is 0.

snap
Optional. Specifies how non-orthogonal edges are snapped. The default is CLOSEST.
❍ CLOSEST. Specifies that sized vertices are snapped to the closest internal resolution.

❍ OVERSIZE. Specifies that sized vertices are snapped to the closest upper internal
resolution.
❍ UNDERSIZE. Specifies that sized vertices are snapped to the closest lower internal
resolution.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In Figure 3-162, the polygons on layerA are sized by the specified distance, in m. For
example,
result = size(layerA, distance = -0.1);

Chapter 3: Runset Functions: J - Z


size() 3-671
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-162 distance Argument Examples

-0.1 -0.2 +0.1 +0.2

layerA result

Figure 3-163 shows the processing of corners. For example,


result = size(layerA, 0.1, corner_extension = NONE);

Figure 3-163 corner_extension Argument Examples

layerA

result
INTERSECTION NONE
(default)

Figure 3-164 shows the clipping that occurs when an acute interior angle is oversized or an
acute exterior angle is undersized. For example,
result = size(layerA, 0.1, clip_acute = BISECTOR);

Chapter 3: Runset Functions: J - Z


size() 3-672
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-164 clip_acute Argument Examples

OCTAGONAL BISECTOR ORTHOGONAL NONE


(default)
layerA result

In Figure 3-165, edges of polygons on layerA are projected outward by 0.3 m.
Nonorthogonal corners are clipped and orthogonal corners are replaced with multiple steps,
approximating a circle. For example,
result = size(layerA, 0.3, NONE, corner_steps = 8);

Figure 3-165 corner_steps Argument Examples

0 2 8

layerA result

See Also
edge_grow()
edge_shrink()
edge_size()
extend_edge()
move()
shrink()
size_inside()
size_outside()

Chapter 3: Runset Functions: J - Z


size() 3-673
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

size_inside()
The size_inside() function is a bounded, incremental, oversize operation. The process
begins with an AND operation to find the active area shared by the two layers. The layer1
or the bounding layer polygons that do not share active areas with the other layer are
ignored. The process continues by repeating these two steps:
1. An oversize using the increment argument value.
2. An AND with the bounding layer.

Each iteration results in data that increasingly fills the area of the enclosing, bounding
polygon. These two steps are repeated until the accumulated oversize meets the specified
distance. By default, the process is completed by subtracting the sized data from the
bounding polygon, such that the result is the portion of the bounding polygon that was not
covered by the incrementally sized data.

Syntax
size_inside(
layer1 = polygon_layer,
bounding = polygon_layer,
distance = double,
increment = double,
output_type = OVERSIZE | REMAINDER, //optional
radial_points = {ONE, TWO, FOUR, EIGHT, SIXTEEN}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label", //optional
radial_sectors = integer, //optional
corner_extension = INTERSECTION | RADIAL_OUTSIDE | RADIAL_INSIDE,
//optional
start_with = AND | SIZE //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is sized.

bounding
Required. Specifies the bounding polygon layer.

distance
Required. Specifies the total oversize distance. It must be a nonnegative number.

Chapter 3: Runset Functions: J - Z


size_inside() 3-674
IC Validator Reference Manual Version N-2017.12-SP2

increment
Required. Specifies the step size, which must have a value greater than 0.

output_type
Optional. Specifies the type of output generated.
❍ OVERSIZE. Outputs the incremental, bounded, size.

❍ REMAINDER. Outputs the portion of the bounding polygon that is not covered by the
oversized data. The remainder does not include bounding polygons that do not share
an active area with layer1.

radial_points
Optional. Specifies the number of points used to approximate a radial curve when
oversizing right, interior corners. The default is ONE. The possible values are:
❍ ONE (indicates that no approximation curve is formed)

❍ TWO

❍ FOUR

❍ EIGHT

❍ SIXTEEN
Approximation Curves
Approximation curves are formed, as follows:
❍ 90-degree interior corners are approximated with the number of radial points
specified.
❍ The sharper the interior angle, the more points that are used for the approximation.
The number of points used varies across the continuum of angles. That is,
■ The oversizing of 135-degree interior corners is approximated with 0.5 as many
radial points.
■ The oversizing of 45-degree interior corners is approximated with 1.5 as many
radial points.
The objective is to set the increment argument to the largest legal value so that the
size_inside() function takes the fewest iterations to complete.
The limitations are
❍ Too large of an increment can cause the oversized data to jump into adjacent data.
❍ Too small of an increment causes the operation to run in less than optimal time.

Chapter 3: Runset Functions: J - Z


size_inside() 3-675
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

If the radial_points argument is not ONE, set the increment as


increment = distance / error ratio

where the error ratios are shown in Table 3-34.


Table 3-34 Error Ratios

radial_points value Error ratio

TWO 1.09

FOUR 1.02

EIGHT 1.005

SIXTEEN 1.002

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

radial_sectors
Optional. Specifies the number of radial sectors used to approximate a quadrant at the
right corner. The effect of this argument on the sizing depends on the value of the
corner_extension argument. The radial_points argument must be ONE.
The minimum value is 0, and the maximum value is 16. If the value is 0, then the
size_inside() function does not form an approximation curve. The default is 0.

corner_extension
Optional. Specifies how corners are handled when the function causes the adjacent
edges to pull apart. This behavior does not apply to corners where the function causes
the edges to collide. The radial_points argument must be ONE. The default is
INTERSECTION.

Chapter 3: Runset Functions: J - Z


size_inside() 3-676
IC Validator Reference Manual Version N-2017.12-SP2

❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ RADIAL_OUTSIDE. A radial corner is formed by the approximation curve is generated
by a regular polygon circumscribed by a circle with the radius distance.
❍ RADIAL_INSIDE. A radial corner is formed by the approximation curve is generated
by a regular polygon inscribed by a circle with the radius distance.

start_with
Optional. Specifies how to start the size_inside operations of layer1. The default is
AND.

❍ AND. Starts with an AND operation to find the area shared by layer1 and a bounding
layer.
Note:
The output of the size_inside() function is empty for a layer1 shape that does
not share an active area with a bounding layer.
❍ SIZE. Starts with a SIZE operation. Use this setting when the size_inside()
function needs to size a layer1 shape inside a bounding layer that does not share an
active area with a boundary layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-166 shows how to use the size_inside() function to flow around notches. For
example,
boundingLyrNotch : const double = 5.0;
// Note: for 45-degree layer1 data (not shown),
// increment = boundingLyrNotch/(sqrt(2) +1);
// 90-degree layer1 data
incrementValue : const double = boundingLyrNotch/sqrt(2);

Chapter 3: Runset Functions: J - Z


size_inside() 3-677
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

// Assign Layers
boundingLyr = assign({{1}});
layerA = assign({{2}});

result = size_inside(layerA, boundingLyr, distance = 55.0,


increment = incrementValue, output_type = OVERSIZE);

Figure 3-166 distance Argument Examples

3.0 16.0 42.0 55.0

layerA boundingLyr result

Figure 3-167 shows the operation of the size_inside() function with


• The increment argument value chosen correctly.
• The increment argument value chosen incorrectly.

For example,
boundingLyrNotch : const double = 5.0;
// 90-degree layer1 data
good_incrementValue : const double = boundingLyrNotch/sqrt(2);
// Note: The bad increment jumps over the notch
// rather than going around it.
bad_incrementValue : const double = 7.0;

// Assign Layers
boundingLyr = assign({{1}});
layerA = assign({{2}});

good = size_inside(layerA, boundingLyr, 20.0,


increment = good_incrementValue,
output_type = OVERSIZE);
bad = size_inside(layerA, boundingLyr, 20.0,
increment = bad_incrementValue,
output_type = OVERSIZE);

Chapter 3: Runset Functions: J - Z


size_inside() 3-678
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-167 increment Argument Examples

layerA

boundingLyr

result
good increment bad increment

Figure 3-168 shows the results of setting the output_type argument. For example,
// 90-degree layer1 data
boundingLyrNotch : const double = 5.0;
incrementValue : const double = boundingLyrNotch/sqrt(2);
// Assign Layers
boundingLyr = assign({{1}});
layerA = assign({{2}});

result = size_inside(layerA, boundingLyr, 55.0, incrementValue,


output_type=REMAINDER);

Figure 3-168 output_type Argument Examples

layerA

boundingLyr

REMAINDER OVERSIZE
(default) result

Figure 3-169 shows the results of using the radial_points argument. For example,
boundingLyrNotch : const double = 5.0;
// 90-degree layer1 data

Chapter 3: Runset Functions: J - Z


size_inside() 3-679
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

incrementValue : const double = boundingLyrNotch/sqrt(2);

// Assign Layers
boundingLyr = assign({{1}});

result = size_inside(layerA, boundingLyr, 55.0, incrementValue,


REMAINDER, radial_points = FOUR);

Figure 3-169 radial_points Argument Examples

ONE TWO FOUR


(default)
layerA boundingLyr result

Figure 3-170 shows the results of using the start_with argument.


When start_with=SIZE, the purple layer1 polygon is sized first. The sized layer1
polygon that overlaps with the boundary layer is ANDed, which continues the size_inside
operation. Because layer1 was outside of the boundary layer and start_with=SIZE, the
size_inside operation outputs the green shaded portions of the boundary layer.

Chapter 3: Runset Functions: J - Z


size_inside() 3-680
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-170 start_with Argument Example

See Also
edge_grow()
edge_shrink()
edge_size()
size()
size_outside()

Chapter 3: Runset Functions: J - Z


size_inside() 3-681
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

size_outside()
The size_outside() function is an incremental oversize operation that sizes around
polygons. The size_outside() operation is performed by repeating two steps:
1. An oversizing operation that sizes layer1 data by the specified increment argument
value;
2. Followed by a NOT operation of the data on the layer1 argument layer and the specified
outside layer.

These two steps are repeated until the total oversizing specified in the operation is
completed. This process creates an oversized region that fills the “empty space” around the
specified outside-layer shapes. The result depends on the specification of the to_layer
argument.

If the to_layer argument is specified as a regular polygon layer, the result is the portions of
the to_layer argument that are not covered by the oversized region. If the to_layer
argument is specified to be NULL_POLYGON_LAYER, the result is the oversized region itself.
This is comparable to the result for the size_inside() function when output_type =
OVERSIZE.

Syntax
size_outside(
layer1 = polygon_layer,
outside = polygon_layer,
to_layer = polygon_layer,
distance = double,
increment = double,
radial_points = {ONE, TWO, FOUR, EIGHT, SIXTEEN}, //optional
name = "layer_label", //optional
radial_sectors = integer, //optional
corner_extension = INTERSECTION | RADIAL_OUTSIDE | RADIAL_INSIDE,
//optional
start_with = NOT | SIZE //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer that is sized.

Chapter 3: Runset Functions: J - Z


size_outside() 3-682
IC Validator Reference Manual Version N-2017.12-SP2

outside
Required. Specifies the restricting input polygon layer.

to_layer
Required. Specifies the destination input layer.

distance
Required. Specifies the total oversize distance. It must be a nonnegative number.

increment
Required. Specifies the step size, which must have a value greater than 0.

radial_points
Optional. Specifies the number of points used to approximate a radial curve when
oversizing right, interior corners. The default is ONE. The possible values are
❍ ONE (indicates that no approximation curve is formed)

❍ TWO

❍ FOUR

❍ EIGHT

❍ SIXTEEN
Approximation Curves
Approximation curves are formed, as follows:
❍ 90-degree interior corners are approximated with the number of radial points
specified.
❍ The sharper the interior angle, the more points that are used for the approximation.
The number of points used varies across the continuum of angles. That is,
■ The oversizing of 135-degree interior corners is approximated with 0.5 as many
radial points.
■ The oversizing of 45-degree interior corners is approximated with 1.5 as many
radial points.
The objective is to set the increment to the largest legal value so that the
size_outside() function takes the fewest iterations to complete.
The limitations are
❍ Too large of an increment can cause the oversized data to jump into adjacent data.
❍ Too small of an increment causes the operation to take longer to run.

Chapter 3: Runset Functions: J - Z


size_outside() 3-683
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

If the radial_points argument is not ONE, set the increment as


increment = distance / error ratio

where the error ratios are shown in Table 3-35.

Table 3-35 Error Ratios

radial_points value Error ratio

TWO 1.09

FOUR 1.02

EIGHT 1.005

SIXTEEN 1.002

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

radial_sectors
Optional. Specifies the number of radial sectors used to approximate a quadrant at the
right corner. The effect of this argument on the sizing depends on the value of the
corner_extension argument. The radial_points argument must be ONE.
The minimum value is 0, and the maximum value is 16. If the value is 0, then the
size_outside() function does not form an approximation curve. The default is 0.

corner_extension
Optional. Specifies how corners are handled when the function causes the adjacent
edges to pull apart. This behavior does not apply to corners where the function causes
the edges to collide. The radial_points argument must be ONE. The default is
INTERSECTION.

❍ INTERSECTION. Forms a new corner at the intersection point of the sized adjacent
edges.
❍ RADIAL_OUTSIDE. A radial corner is formed by the approximation curve is generated
by a regular polygon circumscribed by a circle with the radius distance.

Chapter 3: Runset Functions: J - Z


size_outside() 3-684
IC Validator Reference Manual Version N-2017.12-SP2

❍ RADIAL_INSIDE. A radial corner is formed by the approximation curve is generated


by a regular polygon inscribed by a circle with the radius distance.

start_with
Optional. Specifies how to start the size_outside() operations of layer1. The default is
NOT.

❍ NOT. Specifies that size_outside() function starts with a NOT operation to find
layer1 polygons that do not share area with a bounding layer.
Note:
The output of the size_outside() operation is empty for a layer1 shape that is
enclosed by a bounding layer.
❍ SIZE. Specifies that the size_outside() function starts with a SIZE operation. This
setting is necessary when the size_outside() operation must size a layer1 shape
outside of a bounding layer, and it is enclosed by a boundary layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
Figure 3-171 shows how to use the size_outside() function to flow around a handle. For
example,
// Determine the increment value using the smallest feature size:
// min(outsideLyrWidth, outsideLyrhandle)
outsideLyrWidth : const double = 10.0;
outsideLyrhandle : const double = 5.0;
// Note: for 45-degree layer1 data (not shown),
// increment = outsideLyrhandle/(sqrt(2) +1);
// 90-degree layer1 data
incrementValue : const double = outsideLyrNotch/sqrt(2);

// Assign Layers
outsideLyr = assign({{1}});
tapLyr = assign({{2}});

Chapter 3: Runset Functions: J - Z


size_outside() 3-685
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndev = assign({{3}});

Result = size_outside(tapLyr, outsideLyr, ndev, distance = 19.0,


increment = incrementValue);

Figure 3-171 distance Argument Examples

4.0 9.0 14.0 19.0

tapLyr outsideLyr ndev Result Areas shown for illustration

Figure 3-172 shows the operation of the size_outside() function with


• The increment value chosen correctly.
• The increment value chosen incorrectly.

For example,
// Determine the increment value using the smallest feature size:
// min(outsideLyrWidth, outsideLyrhandle)
outsideLyrWidth : const double = 10.0;
outsideLyrhandle : const double = 5.0;
// 90-degree layer1 data
good_incrementValue : const double = outsideLyrhandle/sqrt(2);
// Note: The bad increment jumps over the notch
// rather than going around it.
bad_incrementValue : const double = 9.0;

// Assign Layers
outsideLyr = assign({{1}});
tapLyr = assign({{2}});
ndev = assign({{3}});

good_dist09 = size_outside(tapLyr, outsideLyr, ndev, 9,


good_incrementValue );
good_dist14 = size_outside(tapLyr, outsideLyr, ndev, 14,
good_incrementValue );

bad_dist09 = size_outside(tapLyr, outsideLyr, ndev, 9,


bad_incrementValue);
bad_dist14 = size_outside(tapLyr, outsideLyr, ndev, 14,
bad_incrementValue);

Chapter 3: Runset Functions: J - Z


size_outside() 3-686
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-172 increment Argument Examples

good increment, good increment, bad increment, bad increment,


with with with with
distance = 9 distance = 14 distance = 9 distance = 14

tapLyr outsideLyr ndev Result Areas shown for illustration

Figure 3-173 shows the results of using the radial_points argument. For example,
// Determine the increment value using the smallest feature size:
// min(outsideLyrWidth, outsideLyrhandle)
outsideLyrWidth : const double = 10.0;
outsideLyrhandle : const double = 5.0;
// 90-degree layer1 data
incrementValue : const double = outsideLyrhandle/sqrt(2);

// Assign Layers
outsideLyr = assign({{1}});
tapLyr = assign({{2}});
ndev = assign({{3}});

Result = size_outside(layer1, outsideLyr, ndev, 20, incrementValue,


radial_points=FOUR)

Chapter 3: Runset Functions: J - Z


size_outside() 3-687
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-173 radial_points Argument Examples

ONE TWO FOUR


(default)
tapLyr outsideLyr ndev result

Figure 3-174 to_layer Argument Examples

Chapter 3: Runset Functions: J - Z


size_outside() 3-688
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-175 to_layer Argument Examples

When start_with=SIZE, the purple layer1 polygon is sized first. The sized layer1 polygon
that is outside of the boundary layer is NOTed to continue the size_outside operation.
Because layer1 was enclosed by the boundary layer and start_with=SIZE, the
size_outside operation outputs the blue shaded portions outside of the boundary, as
shown in Figure 3-176.

Chapter 3: Runset Functions: J - Z


size_outside() 3-689
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-176 start_with Argument Examples

See Also
edge_grow()
edge_shrink()
edge_size()
size()
size_inside()

Chapter 3: Runset Functions: J - Z


size_outside() 3-690
IC Validator Reference Manual Version N-2017.12-SP2

size_overlap()
The size_overlap() function oversizes the polygons on the input layer by the specified
value, and then creates polygons that represent the area where the separate, oversized
polygons overlap.

Syntax
size_overlap(
layer1 = polygon_layer,
distance = double,
clip_acute = BISECTOR | ORTHOGONAL | OCTAGONAL | NONE, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Specifies the oversize distance. It must be positive; a value of 0 results in an
empty output layer.

clip_acute
Optional. When the corner_extension argument is INTERSECTION, this argument
specifies the type of clipping that occurs on acute interior angles. The default is NONE.
❍ BISECTOR. Clips acute angles with an edge perpendicular to the angle bisector at
(sqrt(2) x distance) from the original corner.
❍ ORTHOGONAL. When one edge is orthogonal, clips the angle perpendicular to that
edge at the specified distance from the original corner. Otherwise, clips the angle with
an edge perpendicular to the angle bisector at the specified distance away from the
original corner.
❍ OCTAGONAL. Clips acute angles with two edges at the specified distance from the
original corner, perpendicular to each of the edges forming the corner.
❍ NONE. Does not clip acute angles.

Chapter 3: Runset Functions: J - Z


size_overlap() 3-691
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In Figure 3-177 the three squares are oversized by 1 m. Only the areas of overlap are
output.
Result = size_overlap(layer1 = layerA, distance = 1);

Figure 3-177 size_overlap() Function Example


layerA Result

See Also
rectangle_overlap()

Chapter 3: Runset Functions: J - Z


size_overlap() 3-692
IC Validator Reference Manual Version N-2017.12-SP2

snap()
The snap() function creates polygons that represent the input polygons with all vertices
snapped to the specified resolution. This function is a cell-level operation.
Note:
The tool does not fill in holes created by a self-intersecting polygons that are created by
the snap() function.

Syntax
snap(
layer1 = polygon_layer,
resolution = double,
preference = OVERSIZE | UNDERSIZE | RETAIN_45 | CLOSEST, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer.

resolution
Required. Specifies the resolution value for snapping the polygons. It must be a positive
value.

preference
Optional. Specifies where vertices are snapped. The default is RETAIN_45.
❍ OVERSIZE. Specifies that vertices are snapped to the closest grid point that is outside
or on the input polygon.
❍ UNDERSIZE. Specifies that vertices are snapped to the closest grid point that is inside
or on the input polygon.
❍ RETAIN_45. Specifies that vertices are snapped to the closest grid point with the
possible exception of 45-degree edges. An attempt is made to maintain 45-degree
edges when snapping.
❍ CLOSEST. Specifies that vertices are snapped to the closest grid point.

Chapter 3: Runset Functions: J - Z


snap() 3-693
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = snap(grown_metal, 0.05);

See Also
edge_size()
resolution_options()
size()
snap_edge()

Chapter 3: Runset Functions: J - Z


snap() 3-694
IC Validator Reference Manual Version N-2017.12-SP2

snap_edge()
The snap_edge() function creates edges that represent the input edges with all endpoints
snapped to the specified resolution. This function is a cell-level operation.

Syntax
snap_edge(
layer1 = edge_layer,
resolution = double,
preference = OVERSIZE | UNDERSIZE | RETAIN_45 | CLOSEST, //optional
name = "layer_label" //optional
);

Returns
edge layer

Arguments
layer1
Required. Specifies the edge layer.

resolution
Required. Specifies the resolution value for snapping the edges. It must be a positive
value.

preference
Optional. Specifies where endpoints are snapped. The default is RETAIN_45.
❍ OVERSIZE. Specifies that endpoints are snapped to the closest grid point that is
outside or on the input edge.
❍ UNDERSIZE. Specifies that endpoints are snapped to the closest grid point that is
inside or on the input edge.
❍ RETAIN_45. Specifies that endpoints are snapped to the closest grid point with the
possible exception of 45-degree edges. An attempt is made to maintain 45-degree
edges when snapping.
❍ CLOSEST. Specifies that endpoints are snapped to the closest grid point.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


snap_edge() 3-695
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = snap_edge(metal_edges, 0.05);

See Also
resolution_options()
snap()

Chapter 3: Runset Functions: J - Z


snap_edge() 3-696
IC Validator Reference Manual Version N-2017.12-SP2

snap_to_pattern()
The snap_to_pattern() function creates data that represent the input data snapped to the
specified grid_pattern. This function is a cell-level operation.

Syntax
snap_to_pattern(
layer1 = polygon_layer,
bounding_layer = polygon_layer,
reference_layer = polygon_layer,
grid_pattern = list of double,
offset = double,
orientation = VERTICAL | HORIZONTAL,
preference = OVERSIZE | UNDERSIZE | CLOSEST_OVERSIZE |
CLOSEST_UNDERSIZE, //optional
name = "layer_label", //optional
snap_side = ALL | HIGH | LOW, //optional
output_type = ALL | DELTA //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the input layer to be snapped. The snap_to_pattern() argument
accepts polygon layer and output polygon layer.

bounding_layer
Required. Specifies the input polygon layer to limit the edges that could be snapped.
Both the data to be snapped and the snapped result should be inside or
inside_coincident with the bounding layer.

reference_layer
Required. Specifies the input polygon layer to use (left, bottom) of its layer extents as the
reference point to define the grid pattern.

grid_pattern
Required. Specifies different distance values to form the repeated pattern.

offset
Required. Specifies the distance before the repeated pattern, measured from the
reference point, which depends on the orientation argument:

Chapter 3: Runset Functions: J - Z


snap_to_pattern() 3-697
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ orientation=VERTICAL. Uses the left of the layer extents of the reference layer.

❍ orientation=HORIZONTAL. Uses the bottom of the layer extents of the reference


layer.

orientation
Required. Specifies the orientation used to snap to the grids.
❍ VERTICAL. Snaps the x-coordinate of vertices from vertical edges.

❍ HORIZONTAL. Snaps the y-coordinate of vertices from horizontal edges.

preference
Optional. Specifies how edges are snapped. These edges cannot snap exceed the
bounding layer polygon where they are inside or inside_coincident. The default is
CLOSEST_OVERSIZE.

❍ OVERSIZE. Specifies that vertices from candidate edges are snapped to the closest
grid that is outside or on the input polygon or edge.
❍ UNDERSIZE. Specifies that vertices from candidate edges are snapped to the closest
grid that is inside or on the input polygon or edge.
❍ CLOSEST_OVERSIZE. Specifies that vertices from candidate edges are snapped to the
closest grid. If it is in the middle point, choose OVERSIZE.
❍ CLOSEST_UNDERSIZE. Specifies that vertices from candidate edges are snapped to
the closest grid. If it is in the middle point, choose UNDERSIZE.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

snap_side
Optional. Specifies the limit at which the side must be snapped. The default is ALL.
❍ ALL. Specifies that both the LOW and HIGH edges must be snapped.

❍ HIGH. Specifies that if the orientation is HORIZONTAL, the edge on the top side, with a
direction from left to right is snapped. If the orientation is VERTICAL, the edge on the
right side, with a direction from top to bottom, is snapped.
❍ LOW. Specifies that if the orientation is HORIZONTAL, the edge on the bottom side, with
a direction from right to left is snapped. If the orientation is VERTICAL, the edge on the
left side, with a direction from bottom to top is snapped.

Chapter 3: Runset Functions: J - Z


snap_to_pattern() 3-698
IC Validator Reference Manual Version N-2017.12-SP2

output_type
Optional. Specifies how the post-snapping result is returned. The default is ALL.
❍ ALL. Specifies that the post-snap output is the extension and retraction portion along
with the polygon that is input to the snapping operation.
❍ DELTA. Specifies that the post-snap output is just the extension and retraction portion
of the snapping operation.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 3-178 shows the CLOSEST_OVERSIZE and CLOSEST_UNDERSIZE options of the
preference argument.
snap_to_pattern(preference = CLOSEST_OVERSIZE | CLOSEST_UNDERSIZE)

Figure 3-178 Example of preference Argument

Figure 3-179 shows the output_type argument.

Chapter 3: Runset Functions: J - Z


snap_to_pattern() 3-699
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

snap_to_pattern(output_type = DELTA)

Figure 3-179 Example of output_type Argument

Figure 3-180 shows the snap_side argument.


snap_to_pattern(snap_side = HIGH | LOW)

Chapter 3: Runset Functions: J - Z


snap_to_pattern() 3-700
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-180 Example of snap_side Argument

See Also
grid_pattern_edge()
resolution_options()
snap()
snap_edge()
snap_to_pattern_edge()

Chapter 3: Runset Functions: J - Z


snap_to_pattern() 3-701
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

snap_to_pattern_edge()
The snap_to_pattern_edge() function creates data that represent the input data snapped
to the specified grid_pattern. This function is a cell-level operation.

Syntax
snap_to_pattern_edge(
layer1 = edge_layer,
bounding_layer = polygon_layer,
reference_layer = polygon_layer,
grid_pattern = list of double,
offset = double,
orientation = VERTICAL | HORIZONTAL,
preference = OVERSIZE | UNDERSIZE | CLOSEST_OVERSIZE |
CLOSEST_UNDERSIZE, //optional
name = "layer_label", //optional
snap_side = ALL | HIGH | LOW //optional
);

Returns
edge layer

Arguments
layer1
Required. Specifies the input layer to be snapped. The snap_to_pattern_edge()
argument accepts edge layer and output edge layer. For edge input, edges are snapped
independently per edge.

bounding_layer
Required. Specifies the input polygon layer to limit the edges that could be snapped.
Both the data to be snapped and the snapped result should be inside or
inside_coincident with the bounding layer.

reference_layer
Required. Specifies the input polygon layer to use (left, bottom) of its layer extents as the
reference point to define the grid pattern.

grid_pattern
Required. Specifies different distance values to form the repeated pattern.

offset
Required. Specifies the distance before the repeated pattern, measured from the
reference point, which depends on the orientation argument:

Chapter 3: Runset Functions: J - Z


snap_to_pattern_edge() 3-702
IC Validator Reference Manual Version N-2017.12-SP2

❍ orientation=VERTICAL. Uses the left of the layer extents of the reference layer.

❍ orientation=HORIZONTAL. Uses the bottom of the layer extents of the reference


layer.

orientation
Required. Specifies the orientation used to snap to the grids.
❍ VERTICAL. Snaps the x-coordinate of vertices from vertical edges.

❍ HORIZONTAL. Snaps the y-coordinate of vertices from horizontal edges.

preference
Optional. Specifies how edges are snapped. These edges cannot snap exceed the
bounding layer polygon where they are inside or inside_coincident. The default is
CLOSEST_OVERSIZE.

❍ OVERSIZE. Specifies that vertices from candidate edges are snapped to the closest
grid that is outside or on the input polygon or edge.
❍ UNDERSIZE. Specifies that vertices from candidate edges are snapped to the closest
grid that is inside or on the input polygon or edge.
❍ CLOSEST_OVERSIZE. Specifies that vertices from candidate edges are snapped to the
closest grid. If it is in the middle point, choose OVERSIZE.
❍ CLOSEST_UNDERSIZE. Specifies that vertices from candidate edges are snapped to
the closest grid. If it is in the middle point, choose UNDERSIZE.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

snap_side
Optional. Specifies the limit at which the side must be snapped. The default is ALL.
❍ ALL. Specifies that both the LOW and HIGH edges must be snapped.

❍ HIGH. Specifies that if the orientation is HORIZONTAL, the edge on the top side, with a
direction from left to right is snapped. If the orientation is VERTICAL, the edge on the
right side, with a direction from top to bottom, is snapped.
❍ LOW. Specifies that if the orientation is HORIZONTAL, the edge on the bottom side, with
a direction from right to left is snapped. If the orientation is VERTICAL, the edge on the
left side, with a direction from bottom to top is snapped.

Chapter 3: Runset Functions: J - Z


snap_to_pattern_edge() 3-703
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
grid_pattern_edge()
resolution_options()
snap()
snap_edge()
snap_to_pattern()

Chapter 3: Runset Functions: J - Z


snap_to_pattern_edge() 3-704
IC Validator Reference Manual Version N-2017.12-SP2

snapshot()
The snapshot() function marks the location in a runset where the IC Validator tool
• Saves data about the state of a run when the -snapshot command-line option is used.
The snapshot() function does not stop the IC Validator run.
• Resumes the run using the saved data when the -snapshot_resume command-line
option is used.

See the Command-Line Options section in the “IC Validator Basics” chapter of the
IC Validator User Guide for information about the command-line options.
The snapshot data includes information about group files, error hierarchy files, and connect
databases. However, violations in the error classification database and other information in
text files are not saved.
No modifications are permitted to the runset after the snapshot is generated. These
modifications include adding, removing, or modifying functions and violation blocks. It also
includes adding, removing or modifying #runonly pragmas and preprocessor macros.
Multiple snapshot() functions are not allowed in a runset.

Syntax
snapshot(
path = "string"
);

Returns
void

Arguments
path
Required. Specifies the path of the saved snapshot files.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


snapshot() 3-705
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

soft_check()
The soft_check() function verifies that all layer1 polygons which intersect a layer2
polygon belong to the same net. It can be used in polygon mode or error mode. Output can
be reported as a polygon layer or error.
Bounding box errors are reported to the LAYOUT_ERRORS file and appear as boxes in
VUE.
The layer1 polygons must be in the connect database while the layer2 polygons must not
be in connect database, as this affects the selection of output.

Syntax
soft_check(
connect_sequence = connect_database,
layer1 = polygon_layer,
layer2 = polygon_layer,
output_layer = LAYER1 | LAYER2 | ALL, //optional
layer1_output = ONE | ALL, //optional
include_touch = NONE | EDGE, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies the connect database.

layer1
Required. Specifies a polygon layer. It must be in the connect database.

layer2
Required. Specifies a polygon layer. It must not be in the connect database.

output_layer
Optional. Specifies the layer used to generate the derived output layer. The default is
LAYER2.

❍ LAYER1. Outputs the layer1 polygons that are not connected to the same net.

❍ LAYER2. Outputs the layer2 polygons that intersect the failed layer1 polygons.

Chapter 3: Runset Functions: J - Z


soft_check() 3-706
IC Validator Reference Manual Version N-2017.12-SP2

❍ ALL. Outputs all layer1 polygons that interact with layer2 polygons and layer2
polygons.

layer1_output
Optional. Specifies the number of layer1 polygons per net reported for a layer2
polygon. This argument affects the generated layer only when the output_layer
argument is LAYER1 or ALL. The default is ONE.
❍ ONE. Outputs one arbitrary layer1 polygon from each net.

❍ ALL. Outputs all layer1 polygons that intersect the layer2 polygon.

include_touch
Optional. Specifies the types of touches that provide an electrical connection. The default
is NONE.
❍ NONE. Specifies that no touches form an electrical connection.

❍ EDGE. Specifies that outside edge touches form an electrical connection.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_ERC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = soft_check(condb, tap, well, LAYER1, ONE);

The tap1 and tap2 circuits in Figure 3-181 are in the same well, but they are not connected
and therefore produce two disconnected nets. The same well is now connected to two
different circuits, causing a soft_check() violation.

Chapter 3: Runset Functions: J - Z


soft_check() 3-707
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-181 Circuits in the Same well

tap2
well
tap1
tap
contact
Result X metal1
Result X

The tap1 and tap2 circuits in Figure 3-182 are connected by metal1 in the upper cell, and
maintain the potential of the well to one potential. Therefore, the circuit produces a clean
soft_check() error.

Figure 3-182 Circuits Connected by metal1

well
tap2 tap
tap1 contact
metal1

See Also
sconnect()
soft_connect()
soft_connect_check()
stamp()

Chapter 3: Runset Functions: J - Z


soft_check() 3-708
IC Validator Reference Manual Version N-2017.12-SP2

soft_connect()
The soft_connect() function creates a connect database that defines electrical
connectivity for the specified layers. For each entry within the soft_connect_items
definition, the soft_connect() function passes connectivity from upper to lower layers
when the lower layer interacts with one or multiple upper-layer nets.
When the lower layer interacts with multiple upper-layer nets, the soft_connect() function
selectively passes connectivity between one upper-layer net and the lower layer. The
soft_connect() function detects when the lower layer interacts with multiple upper-layer
nets, even when different by layers are used. The connect database created by the
soft_connect() function retains text from the input connect database. Lower layers
interacting with multiple upper-layer nets can be reported as errors by using the
soft_connect_check() function.

Syntax
soft_connect(
connect_sequence = connect_database,
soft_connect_items = {{upper_layer = polygon_layer,
lower_layers = {polygon_layer, ...},
by_layer = polygon_layer,
include_touch = NONE | EDGE},
...},
allow_connected_lower_layers = true | false, //optional
conflict_resolution = POLYGON_COUNT | TRAPEZOID_COUNT //optional
);

Returns
connect database

Arguments
connect_sequence
Required. Specifies the connect database.

soft_connect_items
Required. Lists the connection specifications.
❍ upper_layer
Required. Specifies the layer used by the soft_connect() to pass connectivity to
the lower layer. This layer must exist in the input connect database or already exist in
the soft_connect_items definition as a lower layer. This is usually a routing layer.

Chapter 3: Runset Functions: J - Z


soft_connect() 3-709
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ lower_layers
Required. Specifies the layer that receives connectivity from the upper layer. This
layer cannot exist in the input connect database. This layer is usually the well layer.
❍ by_layer
Optional. Specifies the polygon layer by which the upper and lower layers are
connected. These layers are usually contact or tap layers.
❍ include_touch
Optional. Specifies the types of touches that provide an electrical connection. The
default is NONE.
■ NONE. Specifies that no outside edge touches form an electrical connection.

■ EDGE. Specifies that upper layers that outside edge touch the lower layer form an
electrical connection.
Note:
The by layer cannot be used when include_touch=EDGE.

allow_connected_lower_layers
Optional. Specifies whether connected layers are present in the lower layers. This
relaxed condition might indicate that lower-layer polygons are already shorted with their
given connectivity. This scenario suggests a misuse of the argument, but it is still
allowed. Therefore, be aware of the potential risk of setting the
allow_connected_lower_layers argument to true. The default is false.

❍ true. Specifies that any layer in the lower layers can be connected if its connectivity
has nothing to do with any of its corresponding upper layers. Therefore, it still should
not be connected to any of its upper layers, either directly or indirectly.
❍ false. Specifies that the lower layers cannot be connected.

conflict_resolution
Optional. Specifies how a soft connection conflict is resolved. The default is
POLYGON_COUNT.

❍ POLYGON_COUNT. Resolves the conflict on the lower-layer polygon by selecting the net
that has the most contact polygons which interact with this polygon.
Note:
This behavior is similar to the sconnect() function when mode = LOCAL.
❍ TRAPEZOID_COUNT. Resolves the conflict on the lower-layer polygon by selecting the
net that has the most polygon trapezoids among all of the upper layers and by layers.

Chapter 3: Runset Functions: J - Z


soft_connect() 3-710
IC Validator Reference Manual Version N-2017.12-SP2

Note:
A layer in upper layer or by layer is related to the conflict when it is specified as
the same item as the lower-layer polygon of the soft_connect_items definition.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Example
The following examples show the criteria the soft_connect() function uses to pass
connectivity when the lower layer interacts with multiple upper-layer nets.
The soft_connect() function first attempts to pass connectivity from the upper to lower
layer by selecting the net with the most upper layer or by layer local intersections with the
lower layers.
net2 has two tap1 intersections with well1, and net1 has only one tap2. The
soft_connect() function passes connectivity from net2 to well1, as shown in Figure 3-183.
cdb = soft_connect(cdb, {
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap1},
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap2} }
);

Figure 3-183 soft_connect() Function Example 1

If intersections between the upper layer or by layer and lower layers are the same, locally,
the soft_connect() function attempts to pass connectivity through the net that has the
most upper layers or by layer intersections with the lower layer globally, as shown in
Figure 3-184. The soft_connect() function passes connectivity between net1 and well since
this net has the most global tap polygons.
cdb = soft_connect(cdb, {
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap1} }
);

Chapter 3: Runset Functions: J - Z


soft_connect() 3-711
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-184 soft_connect() Function Example 2

If the intersection count between the upper layer or by layer and lower layer cannot resolve
connectivity, the soft_connect() function chooses the texted net first. If text cannot resolve
the selected net, the engine chooses a net arbitrarily.

See Also
sconnect()
soft_check()
soft_connect_check()
stamp()

Chapter 3: Runset Functions: J - Z


soft_connect() 3-712
IC Validator Reference Manual Version N-2017.12-SP2

soft_connect_check()
The soft_connect_check() function processes a connect database generated by
soft_connect() function to verify that the lower layer touches only one upper layer net.
The soft_connect_check() function creates a polygon or error representing the upper,
lower, and contact layers that do not meet this criteria.

Syntax
soft_connect_check(
connect_sequence = connect_database,
lower_layer = polygon_layer,
output_layer = UPPER | LOWER | CONTACT | ALL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
connect_sequence
Required. Specifies a connect database generated by the soft_connect() function.

lower_layer
Required. Specifies the lower layer needed to verify the number of touching upper-layer
nets. This lower layer must be used as a lower layer in a previous soft_connect()
function.

output_layer
Optional. Specifies the layer used to generate the polygon or error layer when lower
layers interact with multiple upper level nets. When the soft_connect() function
generates a polygon layer, only UPPER and CONTACT polygons, which are not connected
to the lower layers by the soft_connect() function, are candidates for output. When the
soft_connect() function generates an error, all UPPER and CONTACT polygons are
candidates for output. The default is LOWER.
❍ UPPER. Outputs an upper layer used in a previous a soft_connect() function.

❍ LOWER. Outputs a lower layer used in a previous a soft_connect() function.

❍ CONTACT. Outputs a by_layer used in a previous a soft_connect() function. If


CONTACT is selected and the by_layer argument is not defined for all soft connect
items containing the lower layer in a previous soft_connect() function, a warning
message is reported and the output_layer argument is automatically set to LOWER.
❍ ALL. Outputs all layers.

Chapter 3: Runset Functions: J - Z


soft_connect_check() 3-713
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Example
net1 has fewer connections in well1, so the soft_connect_check() output layer should be
tap2 on net1, as shown in Figure 3-185.
cdb = soft_connect(cdb,
{
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap1},
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap2} }
);
soft_connect_check(cdb, well, CONTACT);

Figure 3-185 soft_connect_check() Function Example 1

net1 has fewer connections in well, so the soft_connect_check() output layer should be
diff on net1, as shown in Figure 3-186.
cdb = soft_connect(cdb,
{
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap1},
{upper_layer = diff, lower_layers = {WELL}, by_layer = tap2} }
);
soft_connect_check(cdb, well, UPPER);

Chapter 3: Runset Functions: J - Z


soft_connect_check() 3-714
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-186 soft_connect_check() Function Example 2

See Also
sconnect()
soft_check()
soft_connect()
stamp()

Chapter 3: Runset Functions: J - Z


soft_connect_check() 3-715
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

spice_netlist_file()
The spice_netlist_file() function defines a SPICE file name. This file is specified in the
output_file argument of the write SPICE functions, write_spice() and
write_xref_spice().
Limitation:
The spice_netlist_file() function cannot be called more than one time with the
same file argument. The result, however, can be used in more than one write_spice()
or write_xref_spice() function, in which case the file is overwritten.

Syntax
spice_netlist_file(
file = "string"
);

Returns
spice_netlist_file_handle

Arguments
file
Required. Names the SPICE netlist output file. See the write_spice() and
write_xref_spice() functions for more information.

Function Group
No assigned runset section. See “Function Order in Runsets” on page A-11 for more
information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

See Also
write_spice()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


spice_netlist_file() 3-716
IC Validator Reference Manual Version N-2017.12-SP2

stamp()
The stamp() function passes connectivity from one layer to another without modifying the
connectivity of the connected layer.
The stamp() function derives a layer by selecting the layer1 polygons that interact with the
layer2 polygons from the same net. The output connect database retains text from the
input connect database.
A connectivity database, specified by the out_connect_sequence argument, is then
created by incrementally connecting the derived layer (from the stamp() function output) by
the layer2 polygons. The connectivity is determined within the context of the database
specified by the in_connect_sequence argument.
The layer1 polygons are not selected when
• The layer1 polygons do not interact with the layer2 polygons.
• The layer1 polygons interact with the layer2 polygons on more than one net.
Note:
The layer polygons that interact with one hierarchical net, but with more than one
cell-level net, are exploded to a hierarchical location where they interact with only one
cell-level net.

Syntax
stamp(
layer1 = polygon_layer,
layer2 = polygon_layer,
in_connect_sequence = connect_database,
out_connect_sequence = out_connect_database,
include_touch = NONE | EDGE, //optional
name = "layer_label", //optional
check_connectivity = true | false //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the polygon layer that needs connectivity.

layer2
Required. Specifies the polygon layer that is already connected.

Chapter 3: Runset Functions: J - Z


stamp() 3-717
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

in_connect_sequence
Required. Specifies the connect database in which the layer2 layer is connected.

out_connect_sequence
Required. Specifies the output connect database that contains the derived layer.

include_touch
Optional. Specifies the types of touches that provide an electrical connection. The default
is EDGE.
❍ NONE. Specifies that no touches form an electrical connection.

❍ EDGE. Specifies that outside edge touches form an electrical connection.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

check_connectivity
Optional. Specifies whether a connectivity check between two input layers are enabled.
The default is true.
❍ true. Specifies that a connectivity check is enabled.

❍ false. Specifies that a connectivity check is disabled. All layer1 polygons are
selected for output regardless of the interaction with layer2 edges.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
PWEL_NODAL = stamp(PWELx, PWELi, global_connect_DWN,
global_connect_DWN);

See Also
connect()
create_ports()

Chapter 3: Runset Functions: J - Z


stamp() 3-718
IC Validator Reference Manual Version N-2017.12-SP2

incremental_connect()
sconnect()
soft_check()
stamp_edge()
text_net()

Chapter 3: Runset Functions: J - Z


stamp() 3-719
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

stamp_edge()
The stamp_edge() function passes connectivity from a polygon layer to an edge layer
without modifying the connectivity of the connected layer.
The stamp_edge() function derives an edge layer by selecting the layer1 edges that
interact with the layer2 polygons from the same net. The output connect database retains
text from the input connect database.
A connectivity database, specified by the out_connect_sequence argument, is then
created by incrementally connecting the derived layer (from the stamp() function output) by
layer2 polygons. The connectivity is determined within the context of the database
specified by the in_connect_sequence argument.
The layer1 edges are not selected when
• The layer1 edges do not interact with layer2 polygons.
• The layer1 edges interact with layer2 polygons on more than one net.
Note:
Layer polygons that interact with one hierarchical net, but more than one cell-level net,
are exploded to a hierarchical location where they interact with only one cell-level net.
The summary file contains
• Missing connections are reported if a layer1 edge does not interact with any layer2
polygon.
• Conflicting connections are reported if a layer1 edge interacts with two or more layer2
polygons that have different connectivity.

Syntax
stamp_edge(
layer1 = edge_layer,
layer2 = polygon_layer,
in_connect_sequence = connect_database,
out_connect_sequence = out_connect_database,
include_touch = NONE | EDGE, //optional
name = "layer_label", //optional
check_connectivity = true | false //optional
);

Returns
edge layer

Chapter 3: Runset Functions: J - Z


stamp_edge() 3-720
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
layer1
Required. Specifies the edge layer that needs connectivity.

layer2
Required. Specifies the polygon layer that is already connected.

in_connect_sequence
Required. Specifies the connect database in which the layer2 layer is connected.

out_connect_sequence
Required. Specifies the output connect database that contains the derived layer.

include_touch
Optional. Specifies the types of touches that provide an electrical connection. The default
is EDGE.
❍ NONE. Specifies that only intersecting edges form an electrical connection; edge
touches do not form an electrical connection.
❍ EDGE. Specifies that intersecting edges, inside edge touches, and outside edge
touches form electrical connections.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

check_connectivity
Optional. Specifies whether a connectivity check between two input layers are enabled.
The default is true.
❍ true. Specifies that a connectivity check is enabled.

❍ false. Specifies that a connectivity check is disabled. All layer1 edges are selected
for output regardless of the interaction with layer2 edges.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


stamp_edge() 3-721
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
Consider the edges and polygons in Figure 3-187:
Figure 3-187 stamp_edge() Function Example
A B C D E

In the following example, the include_touch argument is EDGE by default:


stamped_edge_lyr = stamp_edge(red, green, in_connect_db, out_connect_db);

The output is:


• A. Edge is output.
• B. Edge is output.
• C. Edge is output.
• D. Edge is output if both green polygons belong to the same net.
• E. Edge is output if both green polygons belong to the same net.

In the following example, the include_touch argument is NONE:


stamped_edge_lyr = stamp_edge(red, green, in_connect_db, out_connect_db,
include_edge = NONE);

The output is:


• A. Edge is output.
• B. Edge is not output.

Chapter 3: Runset Functions: J - Z


stamp_edge() 3-722
IC Validator Reference Manual Version N-2017.12-SP2

• C. Edge is not output.


• D. Edge is output if both green polygons belong to the same net.
• E. Edge is not output even if both green polygons belong to the same net.

See Also
connect()
create_ports()
incremental_connect()
sconnect()
soft_check()
stamp()
text_net()

Chapter 3: Runset Functions: J - Z


stamp_edge() 3-723
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

system()
The system() function executes any valid UNIX command during an IC Validator run. After
the UNIX command is completed, runset execution resumes at the place it stopped.
Note:
When you are using distributed processing, any system() function must be included in
runtime control flow constructs to force it to execute after specific functions.
You cannot use the system() function in a remote function.

Syntax
system(
command = "string"
);

Returns
void

Arguments
command
Required. Specifies any valid UNIX command.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
system("echo Hello World.");

system("ls -tlc group > group.listing");

See Also
The following are diagnostic functions that are defined in “Diagnostics Functions” on
page 4-29. These functions can be used in remote functions.
note()
warning()
error()
fatal()

Chapter 3: Runset Functions: J - Z


system() 3-724
IC Validator Reference Manual Version N-2017.12-SP2

text_net()
The text_net() function applies the specified text to the specified layers in the specified
connect database. A new connect database with the texted nets is created. In addition, this
function resolves text opens as specified.
Note:
For optimal use of the text_net() function, you can use both the text_layer_items
and text_string_items arguments. You must use at least one of these arguments.

Syntax
text_net(
connect_sequence = connect_database,
text_layer_items = {{layer = polygon_layer,
text_layer = text_layer,
create_edtext_file = edtext_file_handle,
create_edtext_ldt =
{layer_num = integer, data_type = integer},
create_edtext_cells = {"string", ...}},
...}, //optional
text_string_items = {{layer = polygon_layer,
text = "string",
apply_to_texted_net = true | false},
...}, //optional
use_text = ALL | TOP, //optional
attach_text = NONE | TOP | ALL, //optional
create_short_finder_nets = {{nets = {"string", ...},
with_nets = {"string", ...}},
...}, //optional
text_priority_list = {"string", ...}, //optional
shorts = KEEP_ONE | DISCARD, //optional
opens = IGNORE | RENAME | MERGE_CONNECTED |
MERGE_CONNECTED_AND_TOP | MERGE_ALL |
MERGE_TOP_THEN_CONNECTED |
MERGE_TOP_PORTS_THEN_CONNECTED, //optional
rename_prefix = "string", //optional
report_errors = {UNUSED, SHORTED, MERGED,
RENAMED, REASSIGN_SHORTED}, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
shorted_violation_comment = "string", //optional
unused_violation_comment = "string", //optional
merged_violation_comment = "string", //optional
renamed_violation_comment = "string", //optional
reassign_shorted_violation_comment = "string", //optional
merge_open_net_names = {"string", ...}, //optional
rename_open_nets = KEEP_ONE | ALL, //optional
error_classifications = {{errors = {UNUSED, SHORTED, MERGED,
RENAMED, REASSIGN_SHORTED},
text = {"string", ...},
cells = {"string", ...},

Chapter 3: Runset Functions: J - Z


text_net() 3-725
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

classification = "string",
cpydb = USE | DISCARD,
comment = "string"}, ...}, //optional
short_debugging = {vue_short_finder = true | false,
static_output = {graphics = NONE | OASIS | GDSII,
ascii = true | false,
error = true | false},
output_limit = integer}, //optional
report_errors_from = ALL_CELLS | TOP_CELL //optional
);

Returns
connect database or void

Arguments
connect_sequence
Required. Specifies the connect database.

text_layer_items
Optional. Lists the polygon layer and text layer pairs. Text whose origin interacts with
polygons in the associated layer is applied to the net containing the polygon. The layers
must be in the specified connect database. By default, no layers are texted by text layer.
Note:
The order of this list is important. The same text layer can be used on multiple
different polygon layers. But, a text string from a text layer is not available after it is
applied to a polygon layer. Therefore, text used on one polygon layer from a text layer
is no longer available if that same text layer is paired with another polygon layer later
in the list.
You can use both the text_layer_items and text_string_items arguments. The
text_layer_items argument selections have precedence over the
text_string_items argument selections. If a text_layer_items selection exists at
the cell level of interest, then the text_string_items argument has no effect. If a
text_layer_items selection does not exist at the cell level of interest, then the
text_string_items argument selection is used.

❍ layer. Specifies the polygon layer.

❍ text_layer. Specifies the text layer.

❍ create_edtext_file. Specifies the handle of an Edtext file that contains a formatted


list of all texts which were used as part of this text_net() function. The file handle is
defined using the edtext_file() function. By default, the IC Validator tool does not
write an Edtext file.

Chapter 3: Runset Functions: J - Z


text_net() 3-726
IC Validator Reference Manual Version N-2017.12-SP2

❍ create_edtext_ldt. Specifies the layer and datatype to use when creating an


Edtext file. The defaults of layer_num and data_type options are both 0. See
“Layout Layer and Datatype Ranges” on page A-6 for information about the limits of
the values.
❍ create_edtext_cells. Specifies the cells to write to the Edtext file when the
create_edtext_file option is specified. String matching using metacharacters is
allowed. See “String Matching” on page A-11 for more information. By default, the
IC Validator tool writes all cells.

text_string_items
Optional. Lists the text strings applied to all nets that contain the specified layer and that
were not texted by the text_layer_items argument. The layers must be in the specified
connect database. By default, no layers are texted by text string.
You can use both the text_layer_items and text_string_items arguments. The
text_layer_items argument selections have precedence over the
text_string_items argument selections. If the text_layer_items argument selection
does not exist at the cell level of interest, then the text_string_items argument
selection is used.
❍ layer. Specifies the polygon layer.

❍ text. Specifies the text string to apply. This string cannot contain a space (" ").

❍ apply_to_texted_net. Specifies if the text is applied to a previously texted net,


which creates a short. When set to false, shorts are not reported. The default is
false.

use_text
Optional. Specifies the cells whose text is used. The default is ALL.
❍ ALL. Uses text from all cells. Use this option to get text from lower level cells.

❍ TOP. Uses only text from the top cell. The lower-level-cell port names in the layout
netlist are generated by the IC Validator tool.
■ When texting by a text layer, top cell text is text in the top cell of a text file.
■ When texting by a text string, top cell text is applied to all polygons in the top cell.

attach_text
Optional. Controls the attachment of the unused higher-level text to the lower-level
polygon. The default is NONE.
Note:
This argument is used only when the processing_mode argument is HIERARCHICAL.
This argument does not apply to text_string_items.

Chapter 3: Runset Functions: J - Z


text_net() 3-727
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

When a text interacts with a polygon in a lower-level cell, which has a physical port to the
cell containing the text, the text is applied to the associated net. This is the default
behavior of the text_net() function.
This argument provides the capability to create a new port and attach the unused text
that is not attached by the text_net() default behavior.
❍ ALL. When an unused text interacts with a polygon in a lower-level cell,

■ If the lower-level cell net is not connected to a higher level (meaning there is no
physical port connected to a higher level), a port is created in the lower-level cell,
and a parent net is created in a higher-level cell and connected to the port. Then,
the unused text is attached to the parent net.
❍ NONE. There is no additional handling for unused text.

❍ TOP. For text in the top cell, the behavior of text is the same as the behavior for ALL.
For text in the lower cells, the behavior of text is the same as the behavior for NONE.
Figure 3-188 attach_text Argument Example

In Figure 3-188, there are three unused texts: A, B of m1 text at level 0, and D of m1 text
level 1. C has a physical port to level 0 and is attached by default.
❍ A overlaps a net containing m1 in level 1
❍ B does not overlap any m1 at any level
❍ C overlaps a net containing m1 in level 2
❍ D overlaps a net containing m1 in level 2
Results of setting attach_text to ALL:

Chapter 3: Runset Functions: J - Z


text_net() 3-728
IC Validator Reference Manual Version N-2017.12-SP2

❍ For A, port m1 is created in level 1, a net for polygon m1 (of level 1) is created in level
0, and A is attached to this net.
❍ For B, there is no text attachment and B is reported as unused text.
❍ For C, a physical port is connected to the net and C is attached to the net by default.
Note:
Physical ports exist for this net between all three levels.
❍ For D, port m1 is created in level 2, a net for m1 is created in level 1, and D is attached
to this net.
Results of setting attach_text to TOP:
❍ For A, port m1 is created in level 1, a net for polygon m1 (of level 1) is created in level
0, and A is attached to this net.
❍ For B, there is no text attachment and B is reported as unused text.
❍ For C, a physical port is connected to the net and C is attached to the net by default.
Note:
Physical ports exist for this net between all three levels.
❍ For D, there is no text attachment and D is reported as unused text.
Results of setting attach_text to NONE:
❍ A, B, and D are reported as unused texts. No text attachment occurs.
❍ For C, a physical port is connected to the net and C is attached to the net by default.
Note:
Physical ports exist for this net between all three levels.

create_short_finder_nets
Optional. Lists the net pairs for which short-finder data is generated for the VUE
interactive Short Finder. A maximum of 200 shorts are reported. See the
short_debugging argument and also the IC Validator VUE User Guide for more
information about the Short Finder.
Note:
The -vueshort command-line option also creates VUE output and extract short data.
With the command-line option you can specify to report only a set number of shorts
or all shorts. See the Command-Line Options section in the “IC Validator Basics”
chapter of the IC Validator User Guide for more information.
This pairing is a many-to-many pairing. If a net listed within the nets list shorts with any
net listed within the with_nets list, short-finder data is generated. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


text_net() 3-729
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

By default, the IC Validator tool does not create data for short finder. To create
short-finder nets for all nets, specify
create_short_finder_nets = {{nets={"*"}, with_nets={"*"}}}

❍ nets. Specifies the nets to check for shorts against the nets listed in the with_nets
option.
❍ with_nets. Specifies the nets to check for shorts. Power and ground names are
often specified here. This example only extracts short-finder data for nets that short
to VCC or VSS:
create_short_finder_nets = {{{"*"}, {"VCC","VSS"}}}

text_priority_list
Optional. Lists the strings that prioritize the selection of the net name when the shorts
argument is KEEP_ONE. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information.
This list prioritizes shorted texts only from the same text categories. The categories are:
❍ Reassign text. This is the highest priority. The text is defined by the reassign_text
argument of the text_options() function.
❍ Promote text. The text is defined by the promote_text argument of the
text_options() function.

❍ Layout power and ground text. The text is defined by the layout_power and
layout_ground arguments of the text_options() function.

❍ Regular text.
❍ Exploded text. This is the lowest priority text.
Here is an example of the prioritization:
1. If “AA” is listed in the promote_text argument and “BB” is regular text, “AA” is kept
without looking at the text_priority_list argument.
2. If “AA” and “BB” belong to the same category, such as both being listed in the
promote_text argument, then the text_priority_list argument is used to decide
which one should be kept.
3. If both “AA” and “BB” belong to the same category and are not listed in the
text_priority_list argument, then alphabetical order is used for the text.

shorts
Optional. Specifies the action taken when a single net has multiple different texts
assigned. The default is KEEP_ONE.

Chapter 3: Runset Functions: J - Z


text_net() 3-730
IC Validator Reference Manual Version N-2017.12-SP2

❍ KEEP_ONE. Chooses only one text as the net name. Removes all other text involved
in the short.
❍ DISCARD. Removes all text from the net.

opens
Optional. Specifies processing of text opens. Opens can be ignored or resolved. To be
resolved, opens can be renamed or merged with a virtual connection. The default is
MERGE_CONNECTED_AND_TOP. See the Examples section for more information.
The instance open nets that are connected up to the parent net are reported in the
text_open_merge_inst category of the LAYOUT_ERRORS file. Opens that are not
connected up to parent net are reported in the text_open_merge category.
❍ IGNORE. Ignores text opens. That is, text opens are not renamed nor merged.
Note:
When opens = IGNORE, duplicate pins might be generated. This is prohibited in
the LVS flow.
❍ RENAME. Renames text opens using the rename_prefix argument.

❍ MERGE_CONNECTED.

■ Merges text opens that are connected in all instances.


■ Renames all other opens using the rename_prefix argument.
❍ MERGE_CONNECTED_AND_TOP.

■ Merges text opens that are connected in all instances.


■ Merges text opens in the top cell.
■ Renames all other opens using the rename_prefix argument.
❍ MERGE_ALL. Merges all opens.

❍ MERGE_TOP_THEN_CONNECTED. This option is similar to MERGE_CONNECTED_AND_TOP


except it merges the top opens first.
■ Merges top-level nets that have the same text, and then reports text opens on the
lower-level nets as if the top-level nets were physically connected. The top-level
opens are reported.
For example, as shown in Figure 3-189, if there are two VDD nets on the top cell
and a VDDC net in each child cell, these nets are not physically connected in the
cell.

Chapter 3: Runset Functions: J - Z


text_net() 3-731
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-189 Nets Are Not Physically Connected


VDD VDD top cell

VDDC VDDC child cell

When the opens argument is MERGE_CONNECTED_AND_TOP, both VDDC child cells


are renamed because they are not physically connected.
When the opens argument is MERGE_TOP_THEN_CONNECTED, the VDDC child cells
are merged because they are virtually connected to the same top VDD net. This
top VDD net was itself merged. In the LAYOUT_ERRORS file, the
text_open_rename_inst section reports instance-specific text opens.
■ Renames text opens in a cell if they are not physically or virtually connected for
any instance of the cell.
❍ MERGE_TOP_PORTS_THEN_CONNECTED. This option is similar to
MERGE_TOP_THEN_CONNECTED with the additional restriction that the top-level text
opens are merged only if their nets are ports. The top-level text opens are renamed if
their nets are not ports. Note that the only way for top-level nets to be ports is if they
were created with the create_ports() function. Also, if there are top-level text
opens that are merged, the rename_open_nets argument setting of KEEP_ONE has no
effect.

rename_prefix
Optional. Specifies the prefix for renamed nets. Open nets are renamed with this prefix
plus a unique number to differentiate them. The default is "icv_".
For example, by default, two vdd nets would be named “icv_1_vdd” and “icv_2_vdd”.

report_errors
Optional. Specifies the error types reported to the LAYOUT_ERRORS file. The default is
{UNUSED, SHORTED, MERGED, RENAMED, REASSIGN_SHORTED}.

❍ UNUSED. Reports text that is not contained in the specified layers.

❍ SHORTED. Reports shorted text.

❍ MERGED. Reports text opens that were merged. Opens that were already connected in
all instances are not reported.
❍ RENAMED. Reports open nets that were renamed.

❍ REASSIGN_SHORTED. Reports shorted nets that were caused by reassigned text. See
the pin_text argument of the milkyway_options() function and the
reassign_text argument of the text_options() function for more information.

Chapter 3: Runset Functions: J - Z


text_net() 3-732
IC Validator Reference Manual Version N-2017.12-SP2

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
Note:
This argument does not apply to the text_string_items argument.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the current cell; placements
are considered. When unused text interacts with a polygon in a lower-level cell that
has a port to the cell containing the text, the text is applied to the associated net.

shorted_violation_comment
Optional. Specifies the violation comment for text short errors. The default is the current
runset violation comment.

unused_violation_comment
Optional. Specifies the violation comment for unused text errors. The default is the
current runset violation comment.

merged_violation_comment
Optional. Specifies the violation comment for merged text open errors. The default is the
current runset violation comment.

renamed_violation_comment
Optional. Specifies the violation comment for renamed text open errors. The default is
the current runset violation comment.

reassign_shorted_violation_comment
Optional. Specifies the violation comment for reassigned nets that are shorted. The
default is the current runset violation comment. See the pin_text argument of the
milkyway_options() function and the reassign_text argument of the
text_options() function for more information.

merge_open_net_names
Optional. Specifies the list of nets that are processed for opens. By default, the
IC Validator tool processes all open nets.
If the opens argument is RENAME, MERGE_CONNECTED, MERGE_CONNECTED_AND_TOP,
MERGE_ALL, or MERGE_TOP_THEN_CONNECTED, the merge_open_net_names argument
determines which of the nets are processed for opens.
❍ For MERGE_CONNECTED_AND_TOP or MERGE_TOP_THEN_CONNECTED, the IC Validator
tool merges in the top cell the nets listed in the merge_open_net_names argument.

Chapter 3: Runset Functions: J - Z


text_net() 3-733
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The IC Validator tool processes the open nets in lower cells without considering
merge_open_net_names. That is,

■ When the opens argument is MERGE_CONNECTED_AND_TOP, the IC Validator tool


only merges the physically connected nets for lower-level cells.
■ When the opens argument is MERGE_TOP_THEN_CONNECTED, the IC Validator tool
merges the physically connected nets and nets virtually connected at the top.
❍ For MERGE_ALL, or, for example, if merge_open_net_names = {“VDD”}, the
IC Validator tool merges VDD open nets for all cells and renames the rest of the open
nets. If merge_open_net_names = {"*"}, then all nets are merged.
❍ For RENAME and MERGE_CONNECTED, the merge_open_net_names have no effect and
a warning message is given unless merge_open_net_names = {"*"} by default.
In the following example, only VSS nets are merged with a virtual connection. All opens
that are not listed in the merge_open_net_names argument are not renamed.
text_net(
...
opens = MERGE_ALL
merge_open_net_names = { "VSS" }
);

rename_open_nets
Optional. Specifies which nets are renamed. The default is ALL.
❍ ALL. Renames all open nets. All open nets are reported in the LAYOUT_ERRORS
file.
❍ KEEP_ONE. Retains the text on the first open net found, and renames the other open
nets. The renamed nets are reported in the LAYOUT_ERRORS file.

error_classifications
Optional. Lists the structures that specify the error classification for the various errors
reported by the text_net() function.
Note:
The order of the list is crucial to the error classification. See the following
error_classifications examples for more information.
The classification is a cell-level feature. The default is an empty list, which means no
errors are classified.
❍ errors. Required. Lists the error types that are reclassified. The error types are:
UNUSED, SHORTED, MERGED, RENAMED, and REASSIGN_SHORTED.

Chapter 3: Runset Functions: J - Z


text_net() 3-734
IC Validator Reference Manual Version N-2017.12-SP2

❍ text. Required. Lists strings that specify which text strings are included in the
classification. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information.
❍ cells. Required. Lists strings that specify which cells are included in the
classification. String matching using metacharacters is allowed. See “String
Matching” on page A-11 for more information.
Note:
The tool makes no effort to preserve the cells in this list. See the
no_explode_with_text argument of the hierarchy_auto_options() function
for more information about exploding cells.
❍ classification. Required. Specifies the new classification. The possible
classification are:
Error. This value is the default; it is not the same as not classified.
Ignore
Waive
Watch
Fixed
Note:
These classifications are the same as those listed in the Error Classifications table
in the Running IC Validator Within VUE chapter of the IC Validator VUE User
Guide, except that Unmatched is not valid.
❍ cpydb. Required. Specifies how to handle classifications from the error classification
database, cPYDB, that match the errors being reclassified by this instance of the
text_net() function.

■ USE. Uses the classifications from the cPYDB, if any. Any comments in the cPYDB
are used.
■ DISCARD. Discards any classifications from the cPYDB.

❍ comment. Required. Specifies the classification comment that is attached to the errors
in the error database, PYDB.
For example, the following code classifies all RENAMED text errors in cells that start with
INV or RAM to Ignore.
c1 = text_net(c1, {{...}},
error_classifications = {
{errors = {RENAMED},
text = {"*"},
cells = {"INV*", "RAM*"},
classification = "Ignore",
cpydb = USE,
comment = "ignore this one"}}
);

Chapter 3: Runset Functions: J - Z


text_net() 3-735
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The order of the error classification list is crucial to the results. The list is processed
sequentially. Reclassifications of a given error type can either refine or destroy previous
classifications, depending on whether the reclassified error type is a subset or superset
of the specified texts and cells.
In the following example, the second list item is a refinement of the first list item:
c1 = text_net(c1, {{...}},
error_classifications = {
{errors = {RENAMED},
text = {"*"},
cells = {"*"},
classification = "Ignore",
cpydb = USE,
comment = "ignore this one"},
{errors = {RENAMED},
text = {"*"},
cells = {"INV*", "RAM*"},
classification = "Watch",
cpydb = USE,
comment = "watch this one"}}
);

In the following example, the second list item makes the first item useless.
c1 = text_net(c1, {{...}},
error_classifications = {
{errors = {RENAMED},
text = {"VDD"},
cells = {"*"},
classification = "Ignore",
cpydb = USE,
comment = "ignore this one"},
{errors = {RENAMED},
text = {"*"},
cells = {"*"},
classification = "Watch",
cpydb = USE,
comment = "watch this one"}}
);

short_debugging
Optional. Specifies the way to debug shorts, using either VUE Short Finder or static
output from VUE Short Finder, or both. Short debugging takes as input the result from the
create_short_finder_nets argument or the -vueshort command-line option. The
default is using VUE Short Finder; that is, the vue_short_finder option is true and the
static_output option is false.
Note:
If the create_short_finder_nets argument or the -vueshort command-line
option is not used, then the short_debugging argument has no effect.

Chapter 3: Runset Functions: J - Z


text_net() 3-736
IC Validator Reference Manual Version N-2017.12-SP2

❍ vue_short_finder. Optional. Specifies debugging shorts using VUE Short Finder.


The default is true.
■ true. Saves data for debugging in VUE Short Finder. The output is saved in the
run_details/short_out_db directory.
■ false. Does not save data for debugging in VUE Short Finder.

❍ static_output. Optional. Saves the path, which is a list of polygons starting from
one text to another, found in each text short violation in the specified format. The
output files are saved in the run_details/short_path directory. The default is that static
output is not generated.
■ graphics. Optional. Specifies the format of the static output file: NONE, OASIS,
GDSII. The default is NONE.

■ ascii. Optional. Specifies if a description of the static output is saved in ASCII


format. The default is false.
- true. Saves static output in ASCII format.

- false. Does not save static output in ASCII format.

■ error. Optional. Specifies if error output is saved. The default is false.

- true. Adds short paths to the error output (PYDB). Each short path is reported
as one violation. In VUE, the complete path is highlighted as one error and the
text locations for the short path are marked.
- false. Does not add the short paths to the error output.

❍ output_limit. Optional. Specifies the maximum number of text shorts extracted and
reported. The default is 200.

report_errors_from
Optional. Specifies the text errors that are reported. The default is ALL_CELLS.
❍ ALL_CELLS. Reports all text errors.

❍ TOP_CELL. Reports only the errors in the top cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


text_net() 3-737
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
Here is a simple example of the text_net() function.
cdb1 = text_net(
connect_sequence = cdb1,
text_layer_items = {
{ M1, M1_text },
{ M2, M2_text }
}
);

// Example of capturing both connect database and error output of


// text_net(). Note: for tdb1 to be used outside violation block,
// it must have been declared outside that scope.
tdb1 : connect_database;
v1 @= {
@ "Rule V1: No text errors";
tdb1 = text_net(
connect_sequence = cdb1,
text_layer_items = {
{M1, M1_text},
{M2, M2_text}
},
shorted_violation_comment = "Rule V1.S: No text shorts",
unused_violation_comment = "Rule V1.U: No unused text"
);
};

v1_shorts = get_text_shorted(v1);
v1_merged = get_text_merged(v1);
v1_renamed = get_text_renamed(v1);
v1_unused = get_text_unused(v1);

g = gds_library("out.gds");
write_gds(
output_library = g,
errors = {
// All errors from text_net()
{v1, { 1 }},
// Only text shorts from text_net()
{v1_shorts, { 2 }},
// Only text opens from text_net()
{v1_merged, { 3 }},
{v1_renamed, { 3 }},
// Only unused text errors from text_net()
{v1_unused, { 4 }}
}
);

Chapter 3: Runset Functions: J - Z


text_net() 3-738
IC Validator Reference Manual Version N-2017.12-SP2

The following examples show how the opens argument of the text_net() function
regulates handling nets that cause a text open. Figure 3-190 shows the device structure.
Figure 3-190 Device Structure for text_net(opens) Examples

T1 T1

T1 T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

N1 N1

N1 N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

T1 T1

Top cell L0

In this example,
• Cell L1_A has two ports, each named T1.
• Cell L1_B has two ports, each named N1.
• Top Cell L0 has two nets, each named T1.
Inside the top cell,
• One instance of cell L1_A has the two T1 pins connected together, while another does
not.
• Each instance of cell L1_B has the two N1 pins connected together.
opens = IGNORE
When the opens argument is IGNORE, the resulting layout netlist reflects separate identically
named nodes for nets having a text open. Figure 3-191 shows the resulting circuit, in which
all open nets retain their original names. Text opens are not reported in the
LAYOUT_ERRORS file.

Chapter 3: Runset Functions: J - Z


text_net() 3-739
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-191 text_net(opens = IGNORE) Example

T1 T1

T1 T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

N1 N1

N1 N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

T1 T1

Top cell L0

opens = RENAME
When the opens argument is RENAME, the competing texts are all renamed by the
rename_prefix argument, plus a unique number to differentiate them.

Figure 3-192 shows the resulting circuit, in which:


• The two original T1 ports of cell L1_A are renamed as icv_0_T1 and icv_1_T1.
• The two original N1 ports of cell L1_B are renamed as icv_2_N1 and icv_3_N1.
• The two top cell nets T1 are renamed as icv_0_T1 and icv_1_T1.

Chapter 3: Runset Functions: J - Z


text_net() 3-740
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-192 text_net(opens = RENAME) Example

icv_0_T1 icv_0_T1

icv_1_T1 icv_1_T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

icv_2_N1 icv_2_N1

icv_3_N1 icv_3_N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

icv_0_T1 icv_1_T1

Top cell L0

An entry is written to the cell.LAYOUT_ERRORS file for each renamed text.


runset.rs:40:text_net:text_open_rename
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Text layerNo dtype (position x, y) NetID NewText TextOn TextFrom
layerNo dtype (position x, y) NetID NewText TextOn TextFrom
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L0 T1 1 1 (103.0530, -102.0090) 7 icv_0_T1 m1 LAYER
1 1 (102.4440, -66.0520) 5 icv_1_T1 m1 LAYER
L1_A T1 1 1 (103.0350, 34.7830) 4 icv_1_T1 m1 LAYER
1 1 (101.9160, 70.0280) 2 icv_0_T1 m1 LAYER
L1_B N1 1 1 (101.9160, 70.0280) 2 icv_2_N1 m1 LAYER
1 1 (103.0350, 34.7830) 4 icv_3_N1 m1 LAYER

opens = MERGE_CONNECTED
When the opens argument is MERGE_CONNECTED,
• For cells placed below the top cell, the open is merged into a single net only if the nets
forming the open are connected together in the parent hierarchy for all instances of the
cell.
• Otherwise, nets are renamed using the rename_prefix argument.

Chapter 3: Runset Functions: J - Z


text_net() 3-741
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-193 shows the resulting circuit, in which:


• The two original T1 ports of cell L1_A are renamed as icv_0_T1 and icv_1_T1. This
renaming happens because one instance of cell L1_A inside the parent hierarchy does
not connect the two T1 pins together.
• The two original N1 ports of cell L1_B are merged into a single port N1. This merging
happens because all instances of cell L1_B inside the parent hierarchy connect the two
N1 pins together.
• The two top cell nets T1 are renamed as icv_0_T1 and icv_1_T1.
Figure 3-193 text_net(opens = MERGE_CONNECTED) Example

icv_0_T1 icv_0_T1

icv_1_T1 icv_1_T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

N1 N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

icv_0_T1 icv_1_T1

Top cell L0

An entry is written to the cell.LAYOUT_ERRORS file for each renamed text. An entry is not
written to the cell.LAYOUT_ERRORS file if a cell-level text open is resolved by connections
in the parent.
runset.rs:40:text_net:text_open_rename
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Text layerNo dtype (position x, y) NetID NewText TextOn TextFrom
layerNo dtype (position x, y) NetID NewText TextOn TextFrom
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L0 T1 1 1 (102.4440, -66.0520) 5 icv_2_T1 m1 LAYER
1 1 (103.0530, -102.0090) 7 icv_3_T1 m1 LAYER
L1_A T1 1 1 (101.9160, 70.0280) 2 icv_1_T1 m1 LAYER
1 1 (103.0350, 34.7830) 4 icv_0_T1 m1 LAYER

Chapter 3: Runset Functions: J - Z


text_net() 3-742
IC Validator Reference Manual Version N-2017.12-SP2

opens = MERGE_CONNECTED_AND_TOP
When the opens argument is MERGE_CONNECTED_AND_TOP,
• For cells placed below the top cell, the open is merged into a single net only if the nets
forming the open are connected together in the parent hierarchy for all instances of the
cell.
• In the top cell, the open is merged into a single net.
• Otherwise, nets are renamed using the rename_prefix argument.
Figure 3-194 shows the resulting circuit, in which:
• The two original T1 ports of cell L1_A are renamed as icv_0_T1 and icv_1_T1. This
renaming happens because one instance of cell L1_A inside the parent hierarchy does
not connect the two T1 pins together.
• The two original N1 ports of cell L1_B are merged into a single port N1. This merging
happens because all instances of cell L1_B inside the parent hierarchy connect the two
N1 pins together.
• The two top cell nets T1 are merged into a single net T1.
Figure 3-194 text_net(opens = MERGE_CONNECTED_AND_TOP) Example

icv_0_T1 icv_0_T1

icv_1_T1 icv_1_T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

N1 N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

T1

Top cell L0

Chapter 3: Runset Functions: J - Z


text_net() 3-743
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

An entry is written to the cell.LAYOUT_ERRORS file for each


• Renamed text.
• Merged top cell net.

An entry is not written to the cell.LAYOUT_ERRORS file if a cell-level text open is resolved
by connections in the parent.
runset.rs:40:text_net:text_open_merge
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure BaseText layerNo dtype (ParentText x, y) BaseNetID TextOn TextFrom Info
layerNo dtype (ParentText x, y) TextOn TextFrom Info
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L0 T1 1 1 (103.0530, -102.0090) 5 m1 LAYER Signal
1 1 (102.4440, -66.0520) m1 LAYER Signal

runset.rs:40:text_net:text_open_rename
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Text layerNo dtype (position x, y) NetID NewText TextOn TextFrom
layerNo dtype (position x, y) NetID NewText TextOn TextFrom
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L1_A T1 1 1 (101.9160, 70.0280) 2 icv_1_T1 m1 LAYER
1 1 (103.0350, 34.7830) 4 icv_0_T1 m1 LAYER

opens = MERGE_ALL
When the opens argument is MERGE_ALL, at all levels of hierarchy the open is merged into a
single net. The two competing texts essentially are joined together. Figure 3-195 shows the
resulting circuit, in which:
• The two original T1 ports of cell L1_A are merged into a single port T1.
• The two original N1 ports of cell L1_B are merged into a single port N1.
• The two top cell nets T1 are merged into a single net T1.

Chapter 3: Runset Functions: J - Z


text_net() 3-744
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-195 text_net(opens = MERGE_ALL) Example

T1 T1

Cell L1_A, Inst 1 Cell L1_A, Inst 2

N1 N1

Cell L1_B, Inst 3 Cell L1_B, Inst 4

T1

Top cell L0

An entry is written to LAYOUT_ERRORS for each


• Merged top cell net.
• Merged child cell net.

An entry is not written to the cell.LAYOUT_ERRORS file if a cell-level text open is resolved
by connections in the parent.
runset.rs:40:text_net:text_open_merge
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure BaseText layerNo dtype (ParentText x, y) BaseNetID TextOn TextFrom Info
layerNo dtype (ParentText x, y) TextOn TextFrom Info
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L0 T1 1 1 (103.0530, -102.0090) 5 m1 LAYER Signal
1 1 (102.4440, -66.0520) m1 LAYER Signal

runset.rs:40:text_net:text_open_merge_inst
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure BaseText layerNo dtype (ParentText x, y) ... TextOn TextFrom Path
layerNo dtype (ParentText x, y) ... TextOn TextFrom Path
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
L0 T1 1 1 (175.8600, 84.0000) ... m1 LAYER L0/L1_A/T1
1 1 (176.9790, 48.7550) ... m1 LAYER L0/L1_A/T1

See Also
assign_text()
connect()

Chapter 3: Runset Functions: J - Z


text_net() 3-745
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

create_ports()
edtext_file()
get_text_merged()
get_text_renamed()
get_text_shorted()
get_text_unused()
incremental_connect()
replace_text()
stamp()
text_options()

Chapter 3: Runset Functions: J - Z


text_net() 3-746
IC Validator Reference Manual Version N-2017.12-SP2

text_options()
The text_options() function specifies how layout text objects are processed as they are
read in as a text layer. Later during a verification run, layout text gives names to nets of
polygon connectivity. The function also specifies text options that apply to the entire runset.
This function must be called before assign functions.
The arguments of the text_options() function are executed in the following order:
1. delete_text
2. edtext
3. use_exploded_text
4. reassign_text
5. replace_text
6. replace_text_characters
7. replace_text_characters_regex

Syntax
text_options(
delete_text = {{cells = {"string", ...},
text = {"string", ...}}, ...}, //optional
replace_text = {{search_strings = {"string", ...},
replace_string = "string",
cells = {"string", ...}},
...}, //optional
replace_text_characters = {{search_string = "string",
replace_string = "string"}, ...},
//optional
replace_text_characters_regex = {{{{search_string = "string",
replace_string = "string",
ignore_case = true | false,
instance = integer}, ...},
...}}, //optional
use_exploded_text = {{cells = {"string", ...},
text = {"string", ...}}, ...}, //optional
edtext = {{cell = "string",
text = "string",
layer_number = integer,
data_type = integer,
x = double, y = double}, ...}, //optional
colon_text = TRUNCATE | EQUATE_NETS | REGULAR_TEXT,
//optional
semicolon_text = TRUNCATE | EQUATE_NETS | REGULAR_TEXT,
//optional
net_prefix = "string", //optional

Chapter 3: Runset Functions: J - Z


text_options() 3-747
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

promote_text = {"string", ...}, //optional


layout_power = {"string", ...}, //optional
layout_ground = {"string", ...}, //optional
reassign_text = {{cell = "string",
nets = {"string", ...},
assign_net = "string"}, ...}, //optional
allow_all_numeric = true | false, //optional
exploded_text_options = {prepend_hierarchy_path = true | false,
hierarchical_delimiter = "string"},
report_text = {cells = TOP | ALL | NONE,
functions = {"string", ...},
used_text_limit_per_check = integer,
unused_text_limit_per_check = integer}
//optional
);

Returns
void

Arguments
delete_text
Optional. Lists the text that is deleted from specified cells. The list is additive; one list
element does not negate another list element. The default is that text is not deleted.
❍ cells. Optional. Deletes text from the specified cells. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
The default is delete text from all cells.
❍ text. Optional. Deletes the specified text strings. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
The default is delete all text strings.
Note:
This delete_text argument does not delete text that is specified in the edtext
argument of this function.

replace_text
Optional. Lists the complete text strings (the search_strings lists) that are replaced
with the replace_string text string. The replacements are processed in order so that
the first matching criteria has precedence. By default, the IC Validator tool does not
replace text.
Note:
Placing text incorrectly or using the replace_text argument incorrectly can cause
the reporting of text shorts and opens that do not physically exist, or hide physical
shorts and opens that do exist. If net labels are incorrect, the reports that rely on
those labels have incorrect information.

Chapter 3: Runset Functions: J - Z


text_options() 3-748
IC Validator Reference Manual Version N-2017.12-SP2

❍ search_strings. Required. Specifies the patterns searched for within each text
string. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information.
❍ replace_string. Required. Specifies a text string that replaces strings matching the
search criteria. An empty string ("") results in the removal of the specified search
string.
❍ cells. Optional. Specifies the cells from which text is replaced. This allows you to
rename text on a cell-by-cell basis. The default is all cells.
In the following example, vdd1a becomes vdd, and vss45aa becomes vss:
replace_text = {{{"vdd*"}, "vdd"}, {{"vss*aa"}, "vss"}},

replace_text_characters
Optional. Lists the partial text strings, the search_string, that are replaced with the
replace_string text strings. If the search string is found within a text string then the
matching portion of the text string is replaced by the replace string.
❍ search_string. Required. Specifies the pattern searched for within each text string.
String matching using metacharacters is allowed, except for the exclamation point (!).
See “String Matching” on page A-11 for more information.
❍ replace_string. Required. Specifies a replacement string. An empty string ("")
results in the removal of the specified search string. String matching using is not
allowed.
In the following example, abc[1] becomes abc1z:
replace_text_characters = {{"[", ""}, {"]", "z"}},

replace_text_characters_regex
Optional. Lists the structures, which are called statements. Each statement specifies a
list of search and replace directives. If a search_string pattern is found within a text
string, the matching portion of the text string is replaced by the replace_string pattern.
If a text string is changed by a directive in a list, the resulting text string can be changed
by the remaining directives within the same list. However, if a text string is changed by
one statement then it is not allowed to be changed by any of the following statements.
Note:
This argument uses GNU extended regular expressions.
❍ search_string. Required. Specifies the pattern searched for within each text string.
The search string can use any of the special characters shown in Table 3-36. You can
escape a special character if you want the literal character.

Chapter 3: Runset Functions: J - Z


text_options() 3-749
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-36 GNU Extended Regular Expression Special Characters

Special Description
character

^ Start of pattern.

$ End of pattern.

* Zero or more occurrences of the previous character.

. Matches any character.

? Matches zero or one occurrence of the previous character.

+ Matches one or more occurrences of the previous character.

(expr) Grouping of expressions. Allows you to tag an expression. Grouped


expressions support back references: \1, \2, …, \9

{…} Count specification. For example,


• {n,m} matches at least n and at most m of the previous character or group.
• {n,\} matches n or more occurrences of the preceding character or group.

| Alternation (match one of a collection). For example,


“abc|xyz” matches “abc” or “xyz”

[…] Bracket expression. For example,


• [abc] matches one of “a”, “b” or “c”
• [a-f] matches one of “a”, …, “f”
• [^abc] matches any character other than “a”, “b” or “c”

\ Changes the meaning of the character after it from special to literal. Using a
backslash on a non-special character causes an error.
For example, you can match the literal string low[5] with the search string
argument “low\\[[0-9]\\]”.
To match a single backslash in search string, you need four backslashes. For
example, you can match the literal string power\9 with the search string
argument “power\\\\9”.

\n Shorthand notation for the nth grouped expression. The value of n is from 1 to 9.

❍ replace_string. Required. Specifies a replacement string. An empty string ("")


results in the removal of the specified search string. String matching is not allowed.

Chapter 3: Runset Functions: J - Z


text_options() 3-750
IC Validator Reference Manual Version N-2017.12-SP2

Table 3-37 lists the special characters that are supported in the replacement string.
Table 3-37 Replace String Special Characters

Special Description
character

& Replaced by the part of the text string that matches the search string.

\n Replaced by the part of the text string that matches the nth grouped expression
in the search string.

\ Used to escape & and \ when the literal character is needed.

❍ ignore_case. Optional. Specifies if the character case is ignored during


replacement. The default is false.
■ true. Ignores character case.

■ false. Does not ignore character case.

❍ instance. Optional. Specifies which sub string is replaced when the search string
matches multiple sub strings within a text string. The default is all instances of the
search pattern are replaced.
Example 3-5 shows using the replace_text_characters_regex argument.
Example 3-5 Example of replace_text_characters_regex Argument
text_options(replace_text_characters_regex =
{
{{{"^abc", "def"}, {"ghi$", "jkl"}}}, //1st statement
{{{"mno", "pqr", ignore_case = true}, //start of 2nd statement
{"st", "uv", instance = 1},
{"(fill)(.*)", "\\1_layer_\\2"}}} //end of 2nd statement
}
);

Table 3-38 shows results of using the replace_text_characters_regex argument in


Example 3-5.
Table 3-38 Result of Using the replace_text_characters_regex Argument

Original Statement or Resultant Comments


text string directive used text string

abc123mno {“^abc”, “def”} def123mno The “mno” pattern is not replaced because
the first statement changes the text.
Therefore, the second statement does not
operate on the text.

Chapter 3: Runset Functions: J - Z


text_options() 3-751
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 3-38 Result of Using the replace_text_characters_regex Argument (Continued)

Original Statement or Resultant Comments


text string directive used text string

abc123ghi {“^abc”, “def”}, def123jkl The replacements are processed in the order
{“ghi$”, “jkl”} listed in the first statement. The first directive
replaces “abc” with “def”. The second
directive replaces “ghi” by “jkl”.

mNo123 {“mno”, “pqr”, pqr123 When the ignore_case argument is true,


ignore_case = “mNo” is equivalent to “mno”.
true}

st123st {“st”, “uv”, uv123st When the instance argument is 1, only the
instance = 1} first instance of “st” within the string is
replaced.

fillm1 {“(fill)(.*)”, fill_layer_m1 The expression “(fill)” matches “fill”. The


“\\1_layer_\\2”} expression “(.*)” matches the rest of the
string after the fill. The back reference
expression “\\1” equals the part of the text
string that matches the first tagged pattern,
“fill”. The back reference expression “\\2”
equals the part of the text string that matches
the second tagged pattern. (The second
tagged pattern is everything after the first
match.) Using the values of these back
reference variables, the result is the
concatenation of these strings: “fill”,
“_layer_”, and “m1”.

use_exploded_text
Optional. Lists the cells where text strings for the specified layer and datatype are
retained if the cells are exploded. The list is additive; one list element does not negate
another list element. By default, exploded cells do not retain their text.
Note:
The use_exploded_text arguments in the assign_text(),
assign_openaccess_text(), and text_options() functions are additive.
Use the exploded_text_options argument to control the prepending of the hierarchical
path to text when the cell it is in is exploded.
❍ cells. Optional. Specifies the cells from which text is used if these cells are
exploded. String matching using metacharacters is allowed. See “String Matching” on

Chapter 3: Runset Functions: J - Z


text_options() 3-752
IC Validator Reference Manual Version N-2017.12-SP2

page A-11 for more information. By default, the IC Validator tool uses text from all
exploded cells.
❍ text. Optional. Specifies the text strings that are used if a cell containing the text is
exploded. String matching using metacharacters is allowed. See “String Matching” on
page A-11 for more information. By default, the IC Validator tool uses all text strings.

edtext
Optional. Lists the text objects that are added to the specified cell on the specified layer
number and datatype. If text already exists on the layer number and datatype at the
xy location, it is replaced with this new text.
All text object properties must be specified.
❍ cell. Specifies the cell name of the new text object.

❍ text. Specifies the text of the new text object. See “Text Strings” on page A-10 for the
rules apply to text strings.
❍ layer_number. Specifies the layer number of the new text object. See “Layout Layer
and Datatype Ranges” on page A-6 for information about the limits of the values.
❍ data_type. Specifies the datatype of the new text object. See “Layout Layer and
Datatype Ranges” on page A-6 for information about the limits of the values.
❍ x. Specifies the x-coordinate of the new text object. This coordinate is scaled by the
magnification_factor argument of the library() function.

❍ y. Specifies the y-coordinate of the new text object. This coordinate is scaled by the
magnification_factor argument of the library() function.
Note:
If you want to include an external Edtext file, use a #include statement.
Preprocessor directives, such as #include, must be first on a line. For example,
text_options(
edtext = {
#include "edtext.rs"
}
);

colon_text
Optional. Specifies how the colon ( : ) is processed. The default is TRUNCATE.
❍ TRUNCATE. Truncates a text string upon reading in a colon. For example, in the text
string “abc:”, the colon is removed and the text string becomes “abc”.
❍ EQUATE_NETS. Retains the colon that is used to equate nets. That is, nets with the
same colon-texted name are connected virtually and any opens warnings or errors
are suppressed.

Chapter 3: Runset Functions: J - Z


text_options() 3-753
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ REGULAR_TEXT. Retains the colon and does not give the colon special processing.
Note:
When text = EQUATE_NETS, the behavior of text_net(opens) is impacted, as
follows:
■ colon_text = TRUNCATE. All text characters after ( : ) (include ( : )) are removed.
For example, VSS:3 becomes VSS.
■ colon_text = EQUATE_NETS. Colon text remains, but the engine treats it
differently.
■ colon_text = REGULAR_TEXT. Colon text remains without any change, but the
engine treats it as normal text.
When colon text = EQUATE_NETS, the virtual connect behavior depends on the
opens argument, as follows:

■ opens = MERGE_CONNECTD. Only the same colon texts (including the suffix) are
virtually connected in the top cell. There is no virtual connect in the lower cells.
■ opens = MERGE_CONNECTED_AND_TOP. All of the same colon texts (without
considering ( : ) and the suffix) are virtually connected in the top cell. There is no
virtual connect in the lower cells.
■ opens = MERGE_ALL. All of the same colon texts (without consider ( : ) and the
suffix) are virtually connected in all cells.
■ opens = RENAMED. There is no virtual connect at all.

■ opens = IGNORE. Text opens are not processed. All texts remain without any
changes.

semicolon_text
Optional. Specifies how the semicolon ( ; ) is processed. The default is TRUNCATE.
❍ TRUNCATE. Truncates a text string upon reading in a semicolon. For example, in the
text string “abc;1”, the characters “;1” are removed and the text string becomes “abc”.
❍ EQUATE_NETS. Retains the semicolon that is used to equate nets in black-box cells.
That is, all semicolon text is applied with respect to black-box cells, and any open
warnings or errors messages are suppressed.
❍ REGULAR_TEXT. Retains the semicolon and does not give the semicolon any special
processing.

net_prefix
Optional. Specifies the prefix for untexted nets. This text string is added to the beginning
of net numbers assigned during netlist extraction (see the netlist() function for more

Chapter 3: Runset Functions: J - Z


text_options() 3-754
IC Validator Reference Manual Version N-2017.12-SP2

information.). Nets created in the layout that are not named by text are given unique
numeric names. All such net numbers have the specified text string added as a prefix. If
no net_prefix is specified, the numeric net names are not modified.
❍ If net_prefix is unspecified and text with only numeric characters is found in the
layout, the text is discarded to avoid shorts between the text and a net number.
❍ If net_prefix is specified and text is found that begins with the net_prefix and
contains only numeric characters after the prefix, the text is discarded to avoid shorts
between the text and a net number.

promote_text
Optional. Specifies the text strings that are promoted up the hierarchy, replacing all
names on the net in parent cells. Ports are not created; promotion occurs through
existing ports. String matching using metacharacters is allowed. See “String Matching”
on page A-11 for more information.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "
Note:
See the text_priority_list argument of the text_net() function for more
information about prioritization.

layout_power
Optional. Specifies the text strings that determine the power nets in the layout. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for more
information.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "

layout_ground
Optional. Specifies the text strings that determine the ground nets in the layout. String
matching using metacharacters is allowed. See “String Matching” on page A-11 for more
information.
The following characters are not allowed in net names: space, tab, and the reserved
characters
= { } , "

Chapter 3: Runset Functions: J - Z


text_options() 3-755
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reassign_text
Optional. Lists the complete text strings (the nets argument lists) that are replaced with
the assign_net text string for the specified cell on all text layers. Use this list when you
have expected shorts. If you are using a Milkyway library, see the REASSIGN option in the
pin_text argument of the milkyway_options() function for more information.

❍ cell. Required. Specifies the cell from which text is replaced. Metacharacters are not
allowed.
❍ nets. Required. Specifies the text strings that are replaced. Metacharacters are not
allowed.
❍ assign_net. Required. Specifies the text string that replaces strings matching the
nets text strings.
For example, in the Verilog netlist there is this assignment:
assign IN1 = IN2;

Then, in the IC Validator runset, use the text_options() function to reassign text:
text_options(
reassign_text = {{cell = "mblock2",
nets = {"IN1"},
assign_net = "IN2"}}

When the runset executes, any text short within the “mblock2” cell has already been
taken care of by the text replacement.

allow_all_numeric
Optional. Specifies if all numeric text is supported. The default is false.
❍ true. Allows all numeric text in a text layer.

❍ false. Does not allow all numeric text in a text layer.


Note:
Along with the allow_all_numeric argument, use the net_prefix argument if
numeric text is desired. If you do not use the net_prefix argument, all numeric text
will be ignored by the text_net() function to prevent collisions between
user-defined text and auto-generated net numbers.
Note:
See “Text Strings” in Appendix A for the rules apply to text strings.

exploded_text_options
Optional. Controls prepending a hierarchical path to text when the cell it is in is exploded.
Exploded text must be enabled for the cell with the use_exploded_text argument.

Chapter 3: Runset Functions: J - Z


text_options() 3-756
IC Validator Reference Manual Version N-2017.12-SP2

❍ prepend_hierarchy_path. Optional. Specifies if hierarchical path is prepended to


text. The default is false.
■ true. Prepends hierarchical path to text. The text in exploded cells is prepended
with the instance names of the parent cells up to the final explode location. For
example, text string "xyz" is located in cell D at location TOP/A/B/C/D:
- Cell D is exploded up to A.
- D has instance name "D_5"; C has no instance name; and B has instance
name "B_2".
- The instance name for C is represented by a unique integer number as a
placeholder.
- All reporting that would have used text string "xyz” instead use the string "B_2/
unique_integer_number/D_5/xyz".
■ false. Does not prepends hierarchical path to text.

❍ hierarchical_delimiter. Optional. Specifies the delimiter for the exploded text.


The default is "/".
Do not use these characters as the delimiter:
= { } , * "

report_text
Optional. Activates the generation of the block.text_report file in the run_details directory
to report used and unused texts and edtexts processed by specified functions. The
default is NONE.
❍ cells. Specifies the cells that are reported. The default is NONE.

■ TOP. Reports only top-level text.

■ ALL. Reports text at all levels of the hierarchy.

■ NONE. Does not report text or generate the block.text_report file.

❍ functions. Specifies the functions to report and supports metacharacters for


function names. Specified functions are either supported or unsupported by the tool
and text reporting is reported in this report. For example
■ “text_*” for all function names with a text_ prefix
■ “*” for all functions in the runset. Not recommended usage.
■ “assign” for the assign() function, which is not supported for text reporting.
❍ used_text_limit_per_check. Specifies a limit on the number of used texts to
report. The default 1000000.

Chapter 3: Runset Functions: J - Z


text_options() 3-757
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ unused_text_limit_per_check. Specifies a limit on the number of unused texts to


report. The default 1000000.

Function Group
OPTIONS. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
text_options (
layout_power = {"VDD"},
layout_ground = {"GND"},
edtext = {{"add4", "AA", 25, 0, -492, 19.9},{"add4", "BB", 32, \
0, -495.5, 81},{"cs_add", "BB", 25, 0, -49.7, 47.6}},
report_text = {
cells = ALL,
functions = { "assign", "**", "text_net",
"net_texted_with", "net_not_texted_with", "replace_text",
"text_origin", "texted_with", "not_texted_with" },
used_text_limit_per_check = 100,
unused_text_limit_per_check = 100}
);

Example of report_text output


not_texted_with() at rules_16.06.rs:153
not_texted_with(M1, M1_TEXT, { "VDD", "vss" })
Comment: "not texted with VDD and vss"
Function: not_texted_with
Inputs: temp.polygonlayer.0002, temp.polygonlayer.0002
WARNING - 60 violations found.
Check Time=0:00:00 User=0.00 Sys=0.00 Mem=17.762
1 UNUSED and 6 USED TEXTS.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Status - Text Structure Layer Dtype Coordinate (x,y) Type
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UNUSED - vss
USED - VDD, add4, 28, 0, -516.0000, 47.0000, LAYER
USED - VDD, nor2b, 28, 0, 8.0000, 48.5000, LAYER
USED - VDD, nand3b, 28, 0, 12.5000, 49.0000, LAYER
USED - VDD, nor3b, 28, 0, 12.5000, 49.0000, LAYER
USED - VDD, invb, 28, 0, 8.0000, 48.5000, LAYER
USED - VDD, nand2b, 28, 0, 8.0000, 48.5000, LAYER

See Also
assign_text()
net_options()

Chapter 3: Runset Functions: J - Z


text_options() 3-758
IC Validator Reference Manual Version N-2017.12-SP2

text_net()
net_texted_with() and net_not_texted_with()
replace_text()
text_net()
text_origin()
texted_with() and not_texted_with()

Chapter 3: Runset Functions: J - Z


text_options() 3-759
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

text_origin()
The text_origin() function creates squares at the origin of the specified text in the
specified cells.
Important:
See restriction 1 (Preserving Cells) in “Disclaimers” on page 1-4 for more information.

Syntax
text_origin(
layer1 = text_layer,
shape_size = double, //optional
text = {"string", ...}, //optional
cells = {"string", ...}, //optional
name = "layer_label", //optional
keep_cells = true | false //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the text layer.

shape_size
Optional. Specifies the dimension of the extents of the output shape. The value must be
positive. It is rounded to the nearest even multiple of the internal resolution, with a
minimum of twice the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.

text
Optional. Specifies the text strings. String matching using metacharacters is allowed.
See “String Matching” on page A-11 for more information.

cells
Optional. Specifies the cells that are checked for text. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.
Important:
Specified cell names are added to the no explode list defined in the no_explode
argument of the hierarchy_options() function. An exception to this behavior is that
the "*" metacharacter does not add to the no explode list.

Chapter 3: Runset Functions: J - Z


text_origin() 3-760
IC Validator Reference Manual Version N-2017.12-SP2

Note: Disabling or limiting hierarchy optimizations can have a significant negative


impact on performance.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

keep_cells
Optional. Specifies the exploding of cells in the select_cells list. The default is true.
❍ true. Does not explode cells during hierarchy optimization.

❍ false. The selected cells are allowed to explode during hierarchy optimization. If a
selected cell does get exploded, the selected data (the cell’s extents in this case) are
placed in the parent cell.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = text_origin(met1_text, 0.01);

See Also
assign_text()
create_ports()
net_texted_with() and net_not_texted_with()
replace_text()
texted_with() and not_texted_with()

Chapter 3: Runset Functions: J - Z


text_origin() 3-761
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

text_to_double_property()
The text_to_double_property() function turns text into a polygon property. It creates a
square marker at the location of each text, with the double value of the text attached to the
polygon. Text that cannot be represented by a double value causes an error and is dropped.
Note:
Properties on a polygon layer are only recognized by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.

Syntax
text_to_double_property(
layer1 = text_layer,
property = "string",
merge_operator = MIN | MAX | SUM,
box_size = double, //optional
report_errors = {NOT_A_DOUBLE}, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the text layer containing text that is changed to properties.

property
Required. Specifies the property name.

merge_operator
Required. Specifies how to handle text markers that collide.
❍ MIN. Sets the property to the minimum value of all properties of the colliding markers.
Note:
Hierarchically interacting markers output by the text_to_double_property()
function are leveled and merged.
❍ MAX. Sets the property to the maximum value of all properties of the colliding markers.

❍ SUM. Sets the property to the sum of all values of all properties of the colliding
markers.

Chapter 3: Runset Functions: J - Z


text_to_double_property() 3-762
IC Validator Reference Manual Version N-2017.12-SP2

box_size
Optional. Specifies the size of the square markers. The default is 0.002.

report_errors
Optional. Reports ignored text to the LAYOUT_ERRORS file. The default is
NOT_A_DOUBLE.

❍ NOT_A_DOUBLE. Reports text that is not all numeric.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
mvh1 = text_to_double_property(metal1_max_text, "high", MAX);

See Also
assign_text()
net_polygon_by_property()
text_options()

Chapter 3: Runset Functions: J - Z


text_to_double_property() 3-763
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

text_to_string_property()
The text_to_string_property() creates a square marker at the location of each text with
the string value of the text attached to the polygon.
Note:
If there are multiple texts in the same output merged polygon, they are concatenated as
a list of unique strings.
Properties on a polygon layer are only recognized by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.

Syntax
text_to_string_property(
layer1 = text_layer,
property = "string",
box_size = double, //optional
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
layer1
Required. Specifies the text layer containing text that is changed to properties.

property
Required. Specifies the property name.

box_size
Optional. Specifies the size of the square markers. The default is 0.002.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


text_to_string_property() 3-764
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
mvh1 = text_to_string_property(metal1_max_text, "high");

See Also
assign_text()
net_polygon_by_property()
text_options()
text_to_double_property()

Chapter 3: Runset Functions: J - Z


text_to_string_property() 3-765
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

texted_with() and not_texted_with()


The texted_with() function selects polygons from the layer1 layer that are attached with
the specified text in the layer2 layer. This function is a cell-level operation; that is, all
processing is within the context of a given cell and placements are ignored. The complement
of this function is the not_texted_with() function.
Note:
By default, text is discarded for a cell that is exploded during preprocessing, while the
texted_with() and not_texted_with() functions still use discarded text to select
polygons when use_text = ALL. If any unused text or text shorts exist after the
discarded text, the IC Validator tool does not report the error.

Syntax
texted_with(
layer1 = polygon_layer,
layer2 = text_layer,
text = {"string", ...},
use_text = ALL | TOP,
colon_text = EQUATE_NETS | REGULAR_TEXT, //optional
shorts = KEEP_ONE | DISCARD, //optional
report_errors = {SHORTED, UNUSED}, //optional
shorted_violation_comment = "string", //optional
unused_violation_comment = "string", //optional
name = "layer_label" //optional
);

not_texted_with(
layer1 = polygon_layer,
layer2 = text_layer,
text = {"string", ...},
use_text = ALL | TOP,
colon_text = EQUATE_NETS | REGULAR_TEXT, //optional
shorts = KEEP_ONE | DISCARD, //optional
report_errors = {SHORTED, UNUSED}, //optional
shorted_violation_comment = "string", //optional
unused_violation_comment = "string", //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

Chapter 3: Runset Functions: J - Z


texted_with() and not_texted_with() 3-766
IC Validator Reference Manual Version N-2017.12-SP2

layer2
Required. Specifies the text layer.

text
Required. Specifies the text strings used for selection. String matching using
metacharacters is allowed. See “String Matching” on page A-11 for more information.

use_text
Optional. Specifies the cells in the specified text layer whose text is used. The default is
ALL.

❍ ALL. Uses text from all cells.

❍ TOP. Uses only text from the top cell. That is, only polygons from the top cell are
selected.
Note:
With this setting, the not_texted_with() function is not the complement of the
texted_with() function. When the use_text argument is TOP, both functions
select polygons only from the top cell.

colon_text
Optional. Specifies how the colon ( : ) is processed. The default is REGULAR_TEXT.
❍ EQUATE_NETS. For layer2 text strings, ignores the colon and characters following it.
For example, “a:”, “a:a”, and “a:xyz” all match the text “a”. This setting applies only
when the colon_text argument is EQUATE_NETS in the text_options() function.
❍ REGULAR_TEXT. Retains the colon and does not give the colon special processing.

shorts
Optional. Specifies the action to take when a single polygon contains multiple different
texts. The default is KEEP_ONE.
❍ KEEP_ONE. Generally, uses the text closest to the origin. All other text involved in the
short is ignored.
❍ DISCARD. Discards all shorted text.

report_errors
Optional. Specifies the error types reported to the LAYOUT_ERRORS file. The default is
{SHORTED, UNUSED}.
Note:
If the output for the texted_with() function is to a polygon layer or an error report,
the errors are reported to the LAYOUT_ERRORS file. If the output for the

Chapter 3: Runset Functions: J - Z


texted_with() and not_texted_with() 3-767
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

texted_with() function is to an error report, the output polygons (texted polygons)


are only reported to the LAYOUT_ERRORS file.
❍ SHORTED. Reports shorted text.

❍ UNUSED. Reports unused text, which is text that is not contained in the layer2 layer.

shorted_violation_comment
Optional. Specifies the violation comment for text short errors. The default is the current
runset violation comment.

unused_violation_comment
Optional. Specifies the violation comment for unused text errors. The default is the
current runset violation comment.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
x = texted_with(layer1 = y, layer2 = y_txt, text = {"VDD*"});

See Also
net_select()
net_texted_with() and net_not_texted_with()
text_origin()

Chapter 3: Runset Functions: J - Z


texted_with() and not_texted_with() 3-768
IC Validator Reference Manual Version N-2017.12-SP2

three_color()
The three_color() function is used in triple-patterning flows to decompose the input layer
into three colors. Optional precoloring assignments are used during graph coloring.

Syntax
Note: The definitions for the arguments are after the Returns section.
three_color(
nodes =
polygon_layer,
links =
geometry_layer,
pre_color1 =
polygon_layer, //optional
pre_color2 =
polygon_layer, //optional
pre_color3 =
polygon_layer, //optional
stitch_nodes =
polygon_layer, //optional
optional_links =
{geometry_layer, ...}, //optional
effort_level =
integer, //optional
shift_min_length =
double, //optional
shift_ratio =
double, //optional
shift_mode =
{SHORTEST, CENTER, CENTER_ALL_ANGLE,
OPPOSITE, ERROR_CENTER, ...}, //optional
color_preference = NONE | BALANCED, //optional
same_color_links = geometry_layer, //optional
additional_reduction = {DIAMOND_REDUCTION,...} //optional
);

Returns
The output is a structure of polygons:
three_color_result_s : newtype struct of {
color1 : polygon_layer;
color2 : polygon_layer;
color3 : polygon_layer;
color_conflicts : polygon_layer;
intersecting_links : polygon_layer;
pre_color_errors : polygon_layer;
color_conflict_extended_fix_guidance : polygon_layer;
color_conflict_fix_guidance : polygon_layer;
};

color1
Input polygons colored with color 1.

color2
Input polygons colored with color 2.

Chapter 3: Runset Functions: J - Z


three_color() 3-769
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

color3
Input polygons colored with color 3.

color_conflicts
Conflict links, where a conflict link has the same color assigned to the polygons
connected by this link. This layer is empty if the input layer is successfully decomposed.

intersecting_links
Merged or intersecting links.

pre_color_errors
Input polygons with precolor conflicts. There are three types of precolor conflicts: nodes
that are precolored with more than one color, required different-color links that are
connected to two nodes with the same precolors, and same-color links that are
connected to two nodes with different precolors.

color_conflict_extended_fix_guidance
Part of the error visualization outputs, this contains nodes and links interacting with
color_conflict_fix_guidance output to provide more context for the areas of the
layout that contain errors. When additional_reduction is DIAMOND_REDUCTION, the
output is empty.

color_conflict_fix_guidance
One of the error visualization outputs that is used if the input is not 3-colorable. It
contains the alternative minimum conflict link configurations and nodes interacting with
them. That is, the color_conflicts output contains one set of minimum conflict links,
whereas color_conflict_fix_guidance output contains a superset of those and
nodes interacting with them to give you more choices to make the layout 3-colorable.
When additional_reduction is DIAMOND_REDUCTION, the output is empty.

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

links
Required. Specifies the input geometry layer that contains polygons that connect nodes
polygons to complete the graph description. Each polygon in the links geometry layer
must interact, either by edge touch or polygon overlap, with at most three nodes
polygons to achieve correct coloring. If a links polygon is connected to three nodes
polygons, all three connected nodes polygons must be assigned to different colors.

Chapter 3: Runset Functions: J - Z


three_color() 3-770
IC Validator Reference Manual Version N-2017.12-SP2

The links geometry layer is commonly generated using dimensional commands on the
nodes polygon layer. For example, it is generated using an external spacing check on the
nodes polygon layer that captures triple-patterning critical spacing relationships.

pre_color1
Optional. Specifies the marker layers representing color 1 precoloring of the polygons.
All the polygons must be included in the nodes layer. The precolors are markers on the
nodes. If a precolor marker does not intersect with any node, the marker is ignored.

pre_color2
Optional. Specifies the marker layers representing color 2 precoloring of the polygons.
See pre_color1 for more information.

pre_color3
Optional. Specifies the marker layers representing color 3 precoloring of the polygons.
See pre_color1 for more information.

stitch_nodes
Optional. Specifies a marker layer representing stitches.

optional_links
Optional. Specifies a list of geometry layers. Each layer is a link layer and has an implied
weight associated with it. The first layer has weight 1 and has the highest priority after
the required link layer. The second layer has weight 2 and has the next highest priority,
and so on. The tool uses these weights in optimization, for example, density balancing.
You can specify up to seven layers. The default is empty.
Note:
All the link layers, including the required link layer and layers defined in the
optional_links argument, must be the same type, that is, they all must be either
polygon layers, edge layers, or error layers.
Color conflicts that involve only optional links are not output.

effort_level
Optional. Specifies the coloring effort level. The minimum value is 1, and the maximum
value is 6. Using a higher effort level in more complicated designs can increase accuracy
(fewer color conflicts) but might increase the runtime. The default is 4.

shift_min_length
Optional. Specifies the link shifting threshold. A link is shifted only when its length is
equal to or greater than this value. The default is 0 (zero).

Chapter 3: Runset Functions: J - Z


three_color() 3-771
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

shift_ratio
Optional. Defines the ratio of the shift segment to the overlap segment. For example, if
the overlap segment for an error pair is 100 microns and this value is set to 0.1, the shift
segment is 10 microns. The shifted link is within this segment. The default is 1.

shift_mode
Optional. Specifies the mode used to generate the link, which can be a subset of all of
the modes. The default is SHORTEST.
❍ SHORTEST. Uses the shortest distance between error pairs to generate a link.

❍ CENTER. Uses center points of the error pair to generate a link. This mode is
applicable only when the run length is less than or equal to 0 (zero) and the link
derived by the default shift mode is orthogonal.
❍ CENTER_ALL_ANGLE. Uses center points of the error pair to generate a link. This mode
is applicable only when the error pair run length is less than or equal to 0 (zero).
❍ OPPOSITE. Shifts two endpoints of the generated link in opposite directions with
respect to the shift ratio. This mode is applicable only when the shift range is positive,
which means the run length is greater than 0 (zero), the link length is greater than or
equal to the shift threshold, and the shift ratio is greater than 0 (zero).
❍ ERROR_CENTER. Uses center points of the error pair to generate a link.
Note:
When you select the ERROR_CENTER option to generate a link, all of the other
modes are disabled.

color_preference
Optional. Specifies if the IC Validator tool balances the coloration on low-degree nodes.
Balancing is based on the area of the nodes. The default is NONE.
❍ NONE. Does not balance coloration. Color selection on low-degree nodes is random.

❍ BALANCED. Balances coloration. When multiple color choices are available, color
selection on low-degree nodes is based on the minimal node area.

same_color_links
Optional. Specifies a geometry layer that contains links that connect same-color nodes.
Same-color links have a higher priority than different-color links because two nodes
connected by a same-color link are treated as one node during the coloring process.
Additional color conflicts can be introduced on a required different-color link, even when
the links have no shared nodes, as shown in Figure 3-196.

Chapter 3: Runset Functions: J - Z


three_color() 3-772
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-196 Extra Color Conflict From Same-Color Link


Same-color link

Required
different-color link

Color conflict introduced


by same-color link

When two nodes are connected with both a same-color link and a different-color link at
the same time, the following priorities apply:
❍ If two nodes are connected by a same-color link and a required different-color link,
the required link has priority and the same-color link is ignored.
❍ If two nodes are connected by a same-color link and an optional different-color link,
the optional link is ignored and the two polygons are assigned the same color.
❍ If two nodes connected by a same-color link are precolored with different colors, the
same-color link is ignored.

additional_reduction
Optional. Specifies the method for doing additional graph reduction before coloring. The
default is empty.
❍ DIAMOND_REDUCTION. Reduces a diamond graph to a triangle graph.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

See Also
two_color()
four_color()

Chapter 3: Runset Functions: J - Z


three_color() 3-773
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

touching() and not_touching()


The touching() function selects layer1 polygons that have any inside or outside edge
coincidence with the layer2 edges. There is no restriction on what other types of interaction
can occur between the touching polygon and any layer2 edges. The complement of this
function is the not_touching() function.

Syntax
touching(
layer1 = polygon_layer,
layer2 = edge_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_touching(
layer1 = polygon_layer,
layer2 = edge_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer from which polygons are selected.

layer2
Required. Specifies the edge layer against which the layer1 layer is checked.

count
Optional. Specifies the number of edges that must be touched. See “Constraints” on
page A-4 for more information. The default is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 3: Runset Functions: J - Z


touching() and not_touching() 3-774
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For the following examples, consider these layers:

Input

gate wide_gate_edge

Example 1
x = gate touching wide_gate_edge;

Chapter 3: Runset Functions: J - Z


touching() and not_touching() 3-775
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Output gate

Example 2

y = gate touching [count>2] wide_gate_edge;

Output
gate

See Also
inside_touching_edge() and not_inside_touching_edge()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
touching_edge() and not_touching_edge()

Chapter 3: Runset Functions: J - Z


touching() and not_touching() 3-776
IC Validator Reference Manual Version N-2017.12-SP2

touching_edge() and not_touching_edge()


The touching_edge() function selects entire layer1 edges that have the specified
coincidence with layer2 edges. It includes inside and outside coincident. The complement
of this function is the not_touching_edge() function.

Syntax
touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

not_touching_edge(
layer1 = data_layer,
layer2 = data_layer,
count = integerconstraint, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
coincidence = EDGE | ENDPOINT | ALL //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

layer2
Required. Specifies the edge or polygon layer.

count
Optional: Specifies the number of touches that must occur for an edge to be selected. If
layer2 is a polygon layer, polygons are counted. If layer2 is an edge layer, individual
edges are counted. See “Constraints” on page A-4 for more information. The default
is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.

Chapter 3: Runset Functions: J - Z


touching_edge() and not_touching_edge() 3-777
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

coincidence
Optional. Specifies the types of coincidence that cause a selection. The default is EDGE.
❍ EDGE. Only edge coincidence causes an edge to be selected.

❍ ENDPOINT. Only those edges that have no edge coincidence, but have collinear,
endpoint, coincidence are selected.
❍ ALL. All types of coincidence cause an edge to be selected.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
This example shows both layers as polygon layers: magenta is layer1; red is layer2. The
results are the same if either layer is an edge layer.
green = touching_edge(layer1 = magenta, layer2 = red);

Chapter 3: Runset Functions: J - Z


touching_edge() and not_touching_edge() 3-778
IC Validator Reference Manual Version N-2017.12-SP2

Input Output

See Also
inside_touching_edge() and not_inside_touching_edge()
interacting_edge() and not_interacting_edge()
outside_touching() and not_outside_touching()
outside_touching_edge() and not_outside_touching_edge()
touching() and not_touching()

Chapter 3: Runset Functions: J - Z


touching_edge() and not_touching_edge() 3-779
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

two_color()
The two_color() function is used in double-patterning flows to decompose the input layer
into two colors. Optional precoloring assignments are used during graph coloring.

Syntax
two_color(
nodes =
polygon_layer,
links =
geometry_layer,
out_color1 =
out_polygon_layer,
out_color2 =
out_polygon_layer,
even_loops =
out_polygon_layer,
pre_color_errors =
out_polygon_layer,
pre_color1 =
polygon_layer, //optional
pre_color2 =
polygon_layer, //optional
output_even_loops =
true | false, //optional
output_type =
ODD_LOOP_ONE_LINK | ODD_LOOP_ALL_LINKS |
ODD_LOOP_ALL_NODES | ODD_LOOP_ALL_LOOP |
ODD_LOOP_INSIDE_RING, //optional
pre_color_error_mode = PRE_COLOR_ALL_NODES |
PRE_COLOR_ENVELOPE_PATH, //optional
color_preference = NONE | BALANCED, //optional
window_balance = {
window_layer = polygon_layer,
layer_hash = {"string" => polygon_layer, ...},
window_function = function,
delta_window = {width = double, height = double},
delta_x = double,
delta_y = double,
boundary = CLIP | ALIGN | IGNORE |
REPLICATE_WINDOW, //optional
rebalance_mode = GLOBAL | LOCAL, //optional
}, //optional
shift_min_length = double, //optional
shift_ratio = double, //optional
shift_mode = {SHORTEST, CENTER, CENTER_ALL_ANGLE,
OPPOSITE, ERROR_CENTER, ...}, //optional
optional_links = {geometry_layer, ...} //optional
out_color_type = ALL | CONFLICTS | NONE, //optional
out_color_pull_down = true | false, //optional
pre_color_reduce = true | false, //optional
generate_fix_guidance = true | false, //optional
fix_guidance_parameters = {
odd_loop_limit = integer, //optional
color_spacing_rules = (
(rule_type = SIDE_TO_SIDE | LINE_END_TO_SIDE |
LINE_END_TO_LINE_END | CORNER_TO_CORNER |
NOTCH | CENTER_TO_CENTER | USER_DEFINED,
distance = doubleconstraint,
extension_distance = double, //optional
projection_length = doubleconstraint, //optional

Chapter 3: Runset Functions: J - Z


two_color() 3-780
IC Validator Reference Manual Version N-2017.12-SP2

extension = EDGE | NONE | RADIAL |


RECTANGLE | SQUARE, //optional
look_thru = NONE | NOT_ADJACENT | ALL, //optional
look_thru_count = integerconstraint), //optional
...), //optional
error_color_spacing_rules = (
(error_link = error_layer,
distance = double,
sized_by = double, //optional
measure_to = ORIGINAL_SHAPE | SIZED_SHAPE, //optional
...),
user_defined_links = polygon_layer, //optional
line_end_length = double, //optional
adjacent_length = double, //optional
line_end_expand = double, //optional
side_expand = double, //optional
direction = {HORIZONTAL | VERTICAL}, //optional
pitch = double, //optional
min_width = double, //optional
track_layer = edge_layer //optional
}
);

Returns
polygon layer
The return value of the function is a conflict marker layer that indicates where legal
two-coloring is not possible. For example, in the case where two nodes polygons on either
side of a links polygon have the same output color, the resulting conflict marker layer is the
connector polygon between the two polygons associated with the default output_type
argument for the ODD_LOOP_ONE_LINK option. Other output arguments enable additional
information in the return layer to capture the nodes that are involved in the coloring conflict.

Arguments
nodes
Required. Specifies the polygon layer that contains the polygons targeted for coloring.

links
Required. Specifies the input geometry layer that contains polygons that connect nodes
polygons to complete the graph description of the coloring problem. Each polygon in the
links geometry layer must interact, either by edge touch or polygon overlap, with
exactly two nodes polygons to achieve correct coloring. The links geometry indicates
that the two connected nodes polygons must be assigned to different colors.
The links geometry layer is commonly generated using dimensional commands on the
nodes polygon layer. For example, it is generated using an external spacing check on the
nodes polygon layer that captures double-patterning critical spacing relationships.

Chapter 3: Runset Functions: J - Z


two_color() 3-781
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

out_color1
Required. Specifies the output polygon layer that contains the subset of nodes polygons
that are colored with color 1.

out_color2
Required. Specifies the output polygon layer that contains the subset of nodes polygons
that are colored with color 2.

even_loops
Required. Specifies the output polygon layer that contains all even loops in any local
graph. That is, the layer is a connected network of nodes or links polygons that contain
a coloring conflict. This layer can be used to identify nested odd cycles.

pre_color_errors
Required. Specifies the output polygon layer that marks coloring conflicts between nodes
polygons that are marked for precoloring by the pre_color1 and pre_color2
arguments. When you specify the output_type argument without the
ODD_LOOP_ONE_LINK option, the pre_color_errors argument output contains any
color conflict path between any two precolored nodes that are part of minimal cycles, as
well as any node marked with two different precolors. For the ODD_LOOP_ONE_LINK
option, the pre_color_errors argument output contains only those precolored nodes
marked with both the pre_color1 and pre_color2 arguments.

pre_color1
Optional. Specifies the polygon layer that marks a subset of nodes polygons that must
be assigned to the out_color1 argument. The precolor marker must have polygon
interaction, that is, shape overlap, with the nodes polygon to be assigned to the
out_color1 argument. Portions of the pre_color1 argument that fall outside of the
nodes polygons are ignored.

pre_color2
Optional. Specifies the polygon layer that marks a subset of nodes polygons that must
be assigned to the out_color2 argument. The precolor marker must have polygon
interaction, that is, shape overlap, with the nodes polygon to be assigned to the
out_color2 argument. Portions of the pre_color2 argument that fall outside of nodes
polygons are ignored.

output_even_loops
Optional. Specifies if the even_loops output is generated.
❍ true. The output polygon layer contains all even loops in any local graph.

❍ false. The output polygon layer is empty.

Chapter 3: Runset Functions: J - Z


two_color() 3-782
IC Validator Reference Manual Version N-2017.12-SP2

output_type
Optional. Controls the shape returned for coloring conflicts. The default is
ODD_LOOP_ONE_LINK.

❍ ODD_LOOP_ONE_LINK. Returns the links polygon between the two nodes polygons
of the same color.
❍ ODD_LOOP_ALL_LINKS. Returns all of the links polygons in the minimum
odd-member ring formed by nodes polygons and linked by links polygons that
include two same-colored nodes polygons connected by a single links polygon.
❍ ODD_LOOP_ALL_NODES. Returns all of the nodes polygons in the minimum
odd-member ring formed by nodes polygons and linked by links polygons that
include two same-colored nodes polygons connected by a single links polygon.
❍ ODD_LOOP_ALL_LOOP. Returns all of the links polygons as well as the nodes
polygons in the minimum odd-member ring formed by nodes polygons and linked by
links polygons that include two same-colored nodes polygons connected by a
single links polygon.
❍ ODD_LOOP_INSIDE_RING. Returns a ring that is two times the input library resolution
wide inside the minimum odd-member ring formed by nodes polygons. The ring is
linked by links polygons that include two same-colored nodes polygons connected
by a single links polygon. When an odd loop is closely connected to cross links or
look-thru links, the ODD_LOOP_INSIDE_RING output for this odd loop is the same as
the ODD_LOOP_ALL_LOOP output.

pre_color_error_mode
Optional. Specifies the output information for precolor errors. The default is
PRE_COLOR_ENVELOPE_PATH.

❍ PRE_COLOR_ALL_NODES. Output contains all precolor conflict nodes. If a net has an


odd cycle in it, the output contains only the net marked by the precolor marker.
❍ PRE_COLOR_ENVELOPE_PATH. Output contains all conflict nodes and the envelop path
between conflict nodes.

color_preference
Optional. Specifies if the IC Validator tool balances the color selections. Balancing is
based on polygon area. The default is NONE.
❍ NONE. Does not balance color selections. Orphan nodes are not colored.

❍ BALANCED. Balances color selections. Orphan nodes are colored. The tool tries to
balance the two colors hierarchically at each cell.

Chapter 3: Runset Functions: J - Z


two_color() 3-783
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
Orphan nodes are those polygons that do not have same color spacing links to
their neighbors. Orphan nodes are also called dangling nodes.
The color_preference argument is set to BALANCED automatically when color
balancing is activated with the window_balance argument.

window_balance
Optional. Turns on color balance functionality. In this flow, the tool determines a coloring
result, then measures the color balance (density). If a window violates the balance
requirement, which is defined in the window_function, then the tool explodes any cell
that interacts with the violating window polygon without completely covering it.
❍ window_layer. Required. Specifies the polygon layer containing one or more
polygons that define the boundaries where layers are processed for density
calculations.
The chip_extent() and layer_extent() functions can be used to create a window
layer. Call these functions before the density() function.
■ The chip_extent() function returns a layer containing a single rectangle equal
to the extents of the chip. Use this function to create a single full-chip check
window. See the chip_extent() function for more information.
■ The layer_extent() function returns a layer containing a single rectangle equal
to the extents of the input layer. Use this function to create a single-layer check
window. See the layer_extent() function for more information.
For more information about density calculations, see the density() function.
❍ layer_hash. Optional. Specifies a hash of string to polygon layer that is processed
for density calculations. Data in the hash is accessible via the hash key within the
remote window function. When referencing data in hash from within the window
function, only the portion of the layer within the current delta_window subwindow or
the current window layer polygon is seen.
If you specify an external layer_hash, this hash definition is merged with the default
hash definition into a single hash. The default names cannot be overwritten; default
names are nodes, out_color1, out_color2, even_loops, and pre_color_errors.
Optional layers are needed in an external layer_hash only when they are required
for the color_balance() function.
❍ window_function. Optional. Specifies the remote function that calculates the
density. See the “Layout Density Utility Functions” in Chapter 4 for more information
about the utility functions you can use to define a remote function.
❍ delta_window. Optional. Specifies the subwindow stepped across each window
layer polygon. The density equations are evaluated within each subwindow. The
default is the extents of each window layer polygon.

Chapter 3: Runset Functions: J - Z


two_color() 3-784
IC Validator Reference Manual Version N-2017.12-SP2

❍ delta_x. Optional. Specifies the delta_window subwindow step distance in the


x-direction. The default is the width option of the delta_window argument.
❍ delta_y. Optional. Specifies the delta_window subwindow step distance in the
y-direction. The default is the height option of the delta_window argument.
❍ boundary. Optional. Specifies how to process a delta_window subwindow that
overlaps the boundary of the extents of a window layer polygon. The default is CLIP.
For more information about density calculations, see the density() function.
❍ rebalance_mode.
Optional. Controls how the window_balance argument solves density balance
violation areas. The default is GLOBAL.
■ GLOBAL. Performs density rebalancing globally for the entire nodes layer.

■ LOCAL. Performs density rebalancing locally for each density violation marker.

shift_min_length
Optional. Specifies the link shifting threshold. A link is shifted only when its length is
equal to or greater than this value. The default is 0 (zero).

shift_ratio
Optional. Defines the ratio of the shift segment to the overlap segment. For example, if
the overlap segment for an error pair is 100 microns and this value is set to 0.1, the shift
segment is 10 microns. The shifted link is within this segment. The default is 1.

shift_mode
Optional. Specifies the mode used to generate the link, which can be a subset of all of
the modes. The default is SHORTEST.
❍ SHORTEST. Uses the shortest distance between error pairs to generate a link.

❍ CENTER. Uses center points of the error pair to generate a link. This mode is
applicable only when the run length is less than or equal to 0 (zero) and the link
derived by the default shift mode is orthogonal.
❍ CENTER_ALL_ANGLE. Uses center points of the error pair to generate a link. This mode
is applicable only when the error pair run length is less than or equal to 0 (zero).
❍ OPPOSITE. Shifts two endpoints of the generated link in opposite directions with
respect to the shift ratio. This mode is applicable only when the shift range is positive,
which means the run length is greater than 0 (zero), the link length is greater than or
equal to the shift threshold, and the shift ratio is greater than 0 (zero).
❍ ERROR_CENTER. Uses center points of the error pair to generate a link.

Chapter 3: Runset Functions: J - Z


two_color() 3-785
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
When you select the ERROR_CENTER option to generate a link, all of the other
modes are disabled.

optional_links
Optional. Specifies a list of geometry layers. Each layer is a link layer and has an implied
weight associated with it. The first layer has weight 1 and has the highest priority after
the required link layer. The second layer has weight 2 and has the next highest priority,
and so on. The tool uses these weights in optimization, for example, density balancing.
You can specify up to seven layers. The default is empty.
Note:
All the link layers, including the required link layer and layers defined in the
optional_links argument, must be the same type, that is, they all must be either
polygon layers, edge layers, or error layers.
Color conflicts that involve only optional links are not output.

out_color_type
Optional. Controls how coloring results are generated for the output polygon layers
specified by the out_color_1 and out_color_2 arguments. The default is ALL.
❍ ALL. Generates all coloring results of out_color_1 and out_color_2.

❍ CONFLICTS. Generates the coloring results only for the conflict graphs of
out_color_1 and out_color_2.

❍ NONE. Does not generate any coloring results, which means out_color_1 and
out_color_2 are empty.

out_color_pull_down
Optional. Controls whether the IC Validator tool pulls down the coloring output specified
by the out_color_1 and out_color_2 arguments. The default is true.
❍ true. Pulls down the coloring output from out_color_1 and out_color_2.

❍ false. Does not pull down the coloring output from out_color_1 and out_color_2.
For information about how the tool pulls down data, see the pull_down() and
pull_down_to() functions.

pre_color_reduce
Optional. Controls whether the two_color() function performs precolor filtering. The
default is false. Set this option to true when you want to reduce memory usage by
filtering precolored node data that does not affect the coloring results for any uncolored
node shapes.

Chapter 3: Runset Functions: J - Z


two_color() 3-786
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Enabling the precolor data reduction can result in the following error conflict reporting
changes:
■ Odd loops interacting with pruned precolor links might be omitted.
■ Even loops interacting with pruned precolor links might be omitted.

generate_fix_guidance
Optional. Controls whether fix guidance information is returned as violations and added
to the error database (PYDB). The default is false.

fix_guidance_parameters
Optional. Specifies the parameters used to generate fix guidance information.
❍ odd_loop_limit. Optional. Sets the maximum number of errors that the tool reports
with fix guidance information when the generate_fix_guidance argument is set to
true. The default is 100, which means the two_color() function reports 100 odd
loop errors with fix guidance information. Setting this argument to 0 suppresses the
reporting of fix guidance information.
Note:
The tool selects odd loops based on their areas. Short-range odd loops are
reported first.
To report fix guidance information, you must set the output_type argument to
ODD_LOOP_INSIDE_RING. If you set the output_type argument to any other
value, the function reports only double-patterning errors.
To report fix guidance information for all of the violations, set the odd_loop_limit
argument to ERROR_LIMIT_UNLIMITED.
❍ color_spacing_rules. Optional. Defines the rule type and spacing values for the fix
guidance information output when the input layer specified by the links argument is
not an error layer. For more information, see the color_spacing_rules argument of
the coloring_links() function.
Note:
If the links input layer is an error layer, this argument is ignored and the
color_error_spacing_rules argument defines the rule type and spacing
values.
■ rule_type. Required. Specifies how the distance is measured.

- SIDE_TO_SIDE.

- LINE_END_TO_SIDE.

- LINE_END_TO_LINE_END.

Chapter 3: Runset Functions: J - Z


two_color() 3-787
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- CORNER_TO_CORNER. (The extension option must be RADIAL.)

- NOTCH.

- CENTER_TO_CENTER.

- USER_DEFINED.

■ distance. Required. Specifies the check distance. For more information, see
“Constraints” on page A-4.
■ extension_distance. Optional. Specifies the check region extension distance
when the extension option is RECTANGLE. The value must be nonnegative. The
default is 0.0.
■ projection_length. Optional. Specifies the projection length. For more
information, see “Constraints” on page A-4. The default is >0.0.
■ extension. Optional. Specifies the extension of the check region beyond the
endpoints of the edge being checked. The default is NONE.
- EDGE. Forms the check region by extending the edges, using the
extension_distance argument value, and by creating right-angle boundaries
at the extended endpoints based on the distance constraint. The right-angle
boundaries of the check region are exclusive. The far boundary of the check
region is inclusive or exclusive depending on the constraint of the distance
value.
Note:
This setting is useful only where the minimum of the distance constraint is
nonzero and the extension_distance is nonzero.
- NONE. Does not extend the check region. It is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check
region are exclusive. The far boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
- RADIAL. Extends the check region past the endpoints of the edges using the
distance value with a radial curve. The boundary of the check region is
inclusive or exclusive depending on the constraint of the distance value.
- RECTANGLE. Extends the check region past the endpoints of the edges using
the extension_distance value with a rectangle. The boundary of the check
region is inclusive or exclusive depending on the constraint of the distance
value.
- SQUARE. Extends the check region past the endpoints of the edges using the
distance value with a square. The boundary of the check region is inclusive
or exclusive depending on the constraint of the distance value.

Chapter 3: Runset Functions: J - Z


two_color() 3-788
IC Validator Reference Manual Version N-2017.12-SP2

■ look_thru. Optional. Specifies the edges that the spacing check looks through
when measuring. The default is NONE.
- NONE. Does not look through any edges, including edge endpoints.

- NOT_ADJACENT. Looks through all edges, except for this special case: when
measuring the extension region from endpoint X of edge A, the check does not
look through any edges that share endpoint X with edge A. This setting avoids
false violations that might be reported when the look_thru argument is ALL.
- ALL. Looks through all edges.

■ look_thru_count. Optional. Specifies the number of edges that must be looked


through for a measurement to occur. Edges coincident to the edge being
measured are not included in the count. The value must be nonnegative. For more
information, see “Constraints” on page A-4. The default is >=0, which means the
count is ignored.
Note:
Use this argument only when the extension argument is NONE and the
look_thru argument is ALL.

❍ error_color_spacing_rules. Optional. Defines the rule type and spacing values


for the fix guidance information output when the input layer specified by the links
argument is an error layer.
Note:
If the links input layer is not an error layer, this argument is ignored and the
color_spacing_rules argument defines the rule type and spacing values.

■ error_link. Required. Specifies the error edge pairs.

■ distance. Required. Specifies the check distance for same mask violations in
double patterning.
■ sized_by. Optional. Specifies the oversized value. The default is 0.0.

■ measure_to. Optional. The default is ORIGINAL_SHAPE when the distance


argument is defined against original metal. Set to SIZED_SHAPE if the distance
argument is defined against oversized metal.
❍ user_defined_links. Optional. Specifies the link layer that is generated by the
user-defined rules. Use the user_defined_links argument only when the
rule_type argument of the color_spacing_rules argument is USER_DEFINED.

❍ line_end_length. Optional. Specifies the length for an edge to be selected. The


default is 0.0.
❍ adjacent_length. Optional. Specifies the length that must be satisfied by the edges
adjacent to a 90-degree angle. The default is 0.001.

Chapter 3: Runset Functions: J - Z


two_color() 3-789
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ line_end_expand. Optional. Specifies the expansion of the line-end edges. The


line-end edges are expanded before the side edges. The default is 0.0.
❍ side_expand. Optional. Specifies the expansion of the side edges. The side edges
are expanded after the line-end edges. The default is 0.0.
❍ direction. Optional. Specifies the preferred direction of the selected metal layer.
The default is HORIZONTAL.
❍ pitch. Required. Specifies the distance in preferred direction from the centerline of
one metal layer to the centerline of the adjacent metal layer.
❍ min_width. Optional. Specifies the minimum width of the selected metal layer.

❍ track_layer. Optional. Specifies the track layer of the metal layer. By default, the
tool attempts to guess the track layer.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Examples

Example 1
Figure 3-197 shows an example of the two_color() function when the output_type
argument is not specified; the ODD_LOOP_ONE_LINK option is used by default. The conflict
marker layer shows where two nodes polygons on either side of a links polygon received
the same color.
conflict = two_color(gray, red, OutColor1, OutColor2);

Chapter 3: Runset Functions: J - Z


two_color() 3-790
IC Validator Reference Manual Version N-2017.12-SP2

Figure 3-197 Results of Coloring With Conflict Layer

conflict OutColor1 OutColor2

nodes links Result

Example 2
Figure 3-198 shows input layers before coloring.
• Green indicates the nodes polygons to be colored.
• Orange indicates the links polygons.
Figure 3-198 Input Layers Before Coloring

Figure 3-199 shows the result of the coloring.


• Blue indicates the nodes polygons that are color 1.
• Green indicates the nodes polygons that are color 2.

Chapter 3: Runset Functions: J - Z


two_color() 3-791
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Purple shows the returned conflict layer markers.

The function calls used to generate these results are:


conflict1 = two_color(lime, orange, blue, green, even_loop,
precolor_conflict,output_type = ODD_LOOP_ONE_LINK);
conflict2 = two_color(lime, orange, blue, green, even_loop,
precolor_conflict,output_type = ODD_LOOP_ALL_LINKS);
conflict3 = two_color(lime, orange, blue, green, even_loop,
precolor_conflict,output_type = ODD_LOOP_ALL_NODES);
conflict4 = two_color(lime, orange, blue, green, even_loop,
precolor_conflict,output_type = ODD_LOOP_ALL_LOOP);
conflict5 = two_color(lime, orange, blue, green, even_loop,
precolor_conflict,output_type = ODD_LOOP_INSIDE_RING);

Figure 3-199 Results of Coloring With Different Output Layer Settings


conflict1 conflict2 conflict3 conflict4 conflict5

ODD_LOOP_ONE_LINK ODD_LOOP_ALL_NODES ODD_LOOP_INSIDE_RING


ODD_LOOP_ALL_LINKS ODD_LOOP_ALL_LOOP

See Also
three_color()
four_color()

Chapter 3: Runset Functions: J - Z


two_color() 3-792
IC Validator Reference Manual Version N-2017.12-SP2

unified_fill()
The unified_fill() function can automatically generate a wide range of fill pattern types
while satisfying stringent spacing rules and target densities. Table 3-39 lists the fill pattern
types that the function can generate
Table 3-39 Fill Pattern Types

Fill pattern type Used for

Polygon fill Simple rectangles, rectilinear fill, multilayer fill

Adjustable fill Rectangular fill with automatic size adjustments along


fill area boundary

Stack fill Multilayer fill, with definition from automatic


permutation of the original pattern

Cell fill Multilayer fill, with definition read from a database

Expandable polygon fill Fill cells that get expanded along the boundaries of a
fill target area

Stripe fill Stripe-shape fill across target areas

Expandable cell fill Fill cells, with base cell component definitions
provided in GDS files, that get expanded along the
boundaries of a fill target area

See the Unified Fill chapter of the IC Validator User Guide for detailed information about the
application of these fill pattern types, as well as discussions on defining spacing constraints.

Syntax
unified_fill(
fill_patterns = {
{type = UF_POLYGON | UF_ADJUSTABLE | UF_STACK
UF_CELL | UF_EXPANDABLE | UF_STRIPE | UF_EXPANDABLE_CELL,
polygon_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-793
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

corner_check = POSITIVE_SPACE | ALL},


other_pattern_spacing = {integer => doubleconstraint}},
layers = {
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
color_aware_to_fill = ALL | ONLY_COLOR_1 |
ONLY_COLOR_2 | ONLY_COLOR_3},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...}},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...}},
...},
spacing_context = UF_PATTERN | UF_LAYER,
fill_context = REGION_CONTEXT | CHIP_CONTEXT|
PARTITION_CONTEXT | SIGNAL_CONTEXT |
LINEAR_CONTEXT,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |

Chapter 3: Runset Functions: J - Z


unified_fill() 3-794
IC Validator Reference Manual Version N-2017.12-SP2

RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
rotation = ROTATE_0 | ROTATE_90 | ROTATE_180 | ROTATE_270,
reflection = true | false,
signal = {layer = polygon_layer, ring_count = integer},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,
context_layer = polygon_layer},
color = true | false,
color_space = double,
hierarchical_fill = true | false,
cell_prefix = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}}, ...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
color_aware_to_fill = ALL | ONLY_COLOR_1 |
ONLY_COLOR_2 | ONLY_COLOR_3},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
signal_linear = {
layers = {polygon_layer, ...},
ring_count = integer,
direction = HORIZONTAL | VERTICAL | AUTO,
space_to_signal_side = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-795
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

space_to_signal_line_end = double,
space_to_signal_corner = double,
space_to_signal_extension = SQUARE | RECTANGLE | RADIAL,
dpt_space = double,
long_fill_max_num = integer,
long_fill_ring_begin = integer},
use_fill_to_signal_spacing = true | false,
adjustable_width_bound = double,
output = SIGNAL_SIDE | ALL,
signal_min_length = double,
colored_layers = {
{layer = polygon_layer},
color = NO_COLOR | COLOR_1 | COLOR_2,
...},
color_scheme = UF_LINE_END | UF_LINE_SIDE | UF_CHECKERED |
UF_DPT_SPACING,
dpt_spacing = {dpt_space_x = double, dpt_space_y = double,
dpt_space_corner = double,
dpt_space_extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION},
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
num_colors = integer,
},
adjustable_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION,
corner_check = POSITIVE_SPACE | ALL},
other_pattern_spacing = {integer => doubleconstraint}},
layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-796
IC Validator Reference Manual Version N-2017.12-SP2

min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
color_aware_to_fill = ALL | ONLY_COLOR_1 |
ONLY_COLOR_2 | ONLY_COLOR_3},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...}},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
width = double,
height = double,
width_bound = double,
height_bound = double,
width_delta = double,
height_delta = double,
fill_context = REGION_CONTEXT | CHIP_CONTEXT|
PARTITION_CONTEXT,
rotation = ROTATE_0 | ROTATE_90 | ROTATE_180 | ROTATE_270,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-797
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

context_layer = polygon_layer},
hierarchical_fill = true | false,
cell_prefix = "string",
fill_to_fill_spacing_direction = END_DIRECTION | ALL,
color = true | false,
color_space = double,
color_scheme = UF_LINE_END | UF_LINE_SIDE | UF_CHECKERED |
UF_DPT_SPACING,
dpt_spacing = {dpt_space_x = double, dpt_space_y = double,
dpt_space_corner = double,
dpt_space_extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION},
density_optimization = NONE | TOUCH_BOUNDARY,
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
num_colors = integer,
},
stack_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION,
corner_check = POSITIVE_SPACE | ALL},
other_pattern_spacing = {integer => doubleconstraint}},
layers = {
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {

Chapter 3: Runset Functions: J - Z


unified_fill() 3-798
IC Validator Reference Manual Version N-2017.12-SP2

{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...},
required_layer_keys = {"string", ...},
grouping = NONE | ALL,
require_adjacent_layer_keys = true | false},
min_polygon_count = integer,
...},
min_stack = integer,
max_stack = integer,
spacing_context = UF_PATTERN | UF_LAYER,
separate_patterns = true | false,
rotation = ROTATE_0 | ROTATE_90 | ROTATE_180 | ROTATE_270,
reflection = true | false,
fill_context = REGION_CONTEXT | CHIP_CONTEXT |
PARTITION_CONTEXT,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,
context_layer = polygon_layer},
hierarchical_fill = true | false,
cell_prefix = "string",

Chapter 3: Runset Functions: J - Z


unified_fill() 3-799
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}}, ...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
}
cell_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION,
corner_check = POSITIVE_SPACE | ALL},
other_pattern_spacing = {integer => doubleconstraint}},
cell = cell_handle,
layers = {
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-800
IC Validator Reference Manual Version N-2017.12-SP2

allowed_spacing = {doubleconstraint, ...}},


...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
ldt_list = {{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
required_layer_keys = {"string", ...},
grouping = NONE | ALL,
require_adjacent_layer_keys = true | false},
min_polygon_count = integer,
...},
min_stack = integer,
max_stack = integer,
spacing_context = UF_PATTERN | UF_LAYER,
separate_patterns = true | false,
rotation = ROTATE_0 | ROTATE_90 | ROTATE_180 | ROTATE_270,
reflection = true | false,
fill_context = REGION_CONTEXT | CHIP_CONTEXT |
PARTITION_CONTEXT,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {

Chapter 3: Runset Functions: J - Z


unified_fill() 3-801
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,
context_layer = polygon_layer},
hierarchical_fill = true | false,
cell_prefix = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}}, ...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
...}},
expandable_polygon_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-802
IC Validator Reference Manual Version N-2017.12-SP2

extension = ELLIPTICAL | RADIAL |


INTERSECTION | RADIAL_INTERSECTION,
corner_check = POSITIVE_SPACE | ALL},
other_pattern_spacing = {integer => doubleconstraint}},
length_limit_x = double,
length_limit_y = double,
cut_off_min_space_x = double,
cut_off_min_space_y = double},
base_cell = {
{layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...}, ...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_top = {

Chapter 3: Runset Functions: J - Z


unified_fill() 3-803
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

{layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...}},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...}, ...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_bottom = {
{layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-804
IC Validator Reference Manual Version N-2017.12-SP2

context = EXTERIOR | INTERIOR |


EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...}, ...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_direction = HORIZONTAL | VERTICAL,
fill_context = REGION_CONTEXT | CHIP_CONTEXT |
PARTITION_CONTEXT,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},

Chapter 3: Runset Functions: J - Z


unified_fill() 3-805
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pitch = {x = double, y = double,


context_layer = polygon_layer},
hierarchical_fill = true | false,
cell_prefix = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
expansion_mode = BOUNDARY_EXPANSION | MAX_EXPANSION,
fill_to_fill_spacing_direction = END_DIRECTION | ALL,
base_cell_overlap = {
left_to_center = double,
bottom_to_center = double,
center_to_right = double,
center_to_top = double,
center_to_center_x = double,
center_to_center_y = double},
merging_cell = {
{layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-806
IC Validator Reference Manual Version N-2017.12-SP2

min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
polygons = {{x = double, y = double}, ...}, ...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
merging_direction = VERTICAL | HORIZONTAL,
merging_length_limit = double,
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
...}}
stripe_fill =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-807
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
direction = HORIZONTAL | VERTICAL,
width = double,
spacing = double,
symmetry = true | false,
fill_context = REGION_CONTEXT | CHIP_CONTEXT |
PARTITION_CONTEXT,
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,
context_layer = polygon_layer},
other_pattern_spacing = {integer => doubleconstraint}}},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
...},
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP,
min_height = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-808
IC Validator Reference Manual Version N-2017.12-SP2

min_count = integer,
same_size_count = integer,
...},
expandable_cell_fill = {
pattern_spec = {
space_x = double, space_y = double,
stagger_x = double, stagger_y = double,
pattern_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION | RADIAL_INTERSECTION,
corner_check = POSITIVE_SPACE | ALL},
other_pattern_spacing = {integer => doubleconstraint}},
length_limit_x = double,
length_limit_y = double,
cut_off_min_space_x = double,
cut_off_min_space_y = double},
base_cell = {
{cell = cell_handle,
layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},

Chapter 3: Runset Functions: J - Z


unified_fill() 3-809
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

allowed_spacing_y = {doubleconstraint, ...},


min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
unbounded_ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_top = {
{cell = cell_handle,
layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-810
IC Validator Reference Manual Version N-2017.12-SP2

extension = ELLIPTICAL | RADIAL |


INTERSECTION |
RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
unbounded_ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_bottom = {
{cell = cell_handle,
layers =
{layer_spec = {
output_layer_key = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
fill_to_fill_spacing = {
allowed_spacing_x = {doubleconstraint, ...},
allowed_spacing_y = {doubleconstraint, ...},
min_space_corner = double,
extension = ELLIPTICAL | RADIAL |
INTERSECTION |

Chapter 3: Runset Functions: J - Z


unified_fill() 3-811
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

RADIAL_INTERSECTION}},
corner_check = POSITIVE_SPACE | ALL},
ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
unbounded_ldt_list = {
{layer_num_range = integerconstraint,
data_type_range = integerconstraint}, ...},
...},
repeatable = true | false,
maximum = integer,
maximum_y = integer},
...},
base_cell_direction = HORIZONTAL | VERTICAL,
fill_context = REGION_CONTEXT | CHIP_CONTEXT |
PARTITION_CONTEXT,
insertion = {iterations = integer,
shift_factor = integer,
symmetry = true | false,
auto_rotate = NONE | PRIMARY_AXIS |
FAILED_INSERTION | MAX_INSERTION,
starting_point = LEFT_BOTTOM | LEFT_TOP | CENTER |
RIGHT_BOTTOM | RIGHT_TOP},
prune_jog = {
{horizontal_length = doubleconstraint,
vertical_length = doubleconstraint,
prune_order = HORIZONTAL | VERTICAL,
iterate = true | false},
...},
partition = {min_space = double, //optional
min_space_x = double, //optional
min_space_y = double //optional
},
pitch = {x = double, y = double,
context_layer = polygon_layer},
hierarchical_fill = true | false,
cell_prefix = "string",
fill_to_signal_spacing = {
{signal_layer = polygon_layer,
width_based_spacing = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
min_space = double,
context = EXTERIOR | INTERIOR |
EXTERIOR_INTERIOR | BOUNDARY,
min_space_x = double,
min_space_y = double,
width_based_spacing_x = {
{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...},
width_based_spacing_y = {

Chapter 3: Runset Functions: J - Z


unified_fill() 3-812
IC Validator Reference Manual Version N-2017.12-SP2

{width = doubleconstraint,
allowed_spacing = {doubleconstraint, ...}},
...}},
min_space_inside = double,
min_space_inside_x = double,
min_space_inside_y = double,
space_extension = double,
space_extension_x = double,
space_extension_y = double,
debug_layer_name = "string",
...},
expansion_mode = BOUNDARY_EXPANSION | MAX_EXPANSION,
fill_to_fill_spacing_direction = END_DIRECTION | ALL,
base_cell_overlap = {
left_to_center = double,
bottom_to_center = double,
center_to_right = double,
center_to_top = double,
center_to_center_x = double,
center_to_center_y = double},
reference_layer = {
reference_context = REGION_EXTENT | LAYER_EXTENT |
POLYGON_EXTENT | INITIAL_POINT,
initial_coord = {x = double, y = double},
shift_value = {x = double, y = double},
layer = polygon_layer},
...},
pattern_extent_for_spacing = BOUNDARY_EXTENT | ALL_EXTENT,
},
criteria = {{target = {range = doubleconstraint, target = double},
gradient = {range = doubleconstraint,
comparison = ABSOLUTE | RELATIVE,
check_corner = true | false},
fill_layer_keys = {"string", ...},
design_layers = {polygon_layer, ...},
design_layers_hash = {"string" => polygon_layer, ...},
window_function = function},
...}, //optional
delta_window = {width = double, height = double}, //optional
delta_x = double, //optional
delta_y = double, //optional
gradient_delta_window = {width = double, height = double}, //optional
gradient_delta_x = double, //optional
gradient_delta_y = double, //optional
fill_boundary = {type = CHIP | LAYER | WINDOW,
layer = polygon_layer,
window = {left = double, bottom = double,
right = double, top = double}}, //optional
window_layer = polygon_layer, //optional
grid = double, //optional
boundary = CLIP | ALIGN | IGNORE | REPLICATE_WINDOW, //optional
extents_output = {{output_layer_key = "string",
border = double,

Chapter 3: Runset Functions: J - Z


unified_fill() 3-813
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fill_layer_keys = {"string", ...}},


...}, //optional
debug_oasis_filename = "string" //optional
);

Returns
layer_groups_h
The output of the unified_fill() function is a hash of string to list of polygon layer. The
strings are user-defined. The list is used for coloring.

Arguments
fill_patterns
Required. Lists structures that define the fill patterns. The order of the fill patterns is
crucial to the insertion operation. The fill region for a given pattern must consider fill
placed by preceding patterns. Successive patterns are expected to keep out of
preceding patterns as though they are part of the design.
❍ type. Required. Specifies the fill type.

■ UF_POLYGON. Selects a coordinate based definition of a fill pattern. Use the


polygon_fill option.

■ UF_ADJUSTABLE. Selects a single-layer rectangle pattern definition. Use the


adjustable_fill option.

■ UF_STACK. Selects a more automated fill procedure that is similar to the


UF_POLYGON type. Use the stack_fill option.

■ UF_CELL. Imports patterns from an external database instead of manually defining


them in the runset. Use the cell_fill option.
■ UF_EXPANDABLE. Selects expandable fill cells to be used for fill pattern generation.
Use the expandable_polygon_fill option.
■ UF_STRIPE. Selects striped fill to be used for fill pattern generation. Use the
stripe_fill option.

■ UF_EXPANDABLE_CELL. Selects expandable fill cells to be used for fill pattern


generation. Use the expandable_cell_fill option.
❍ polygon_fill. Optional. Defines spacing for a coordinate based definition of a fill
pattern. To use this type of fill, set the type option to UF_POLYGON.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.

- space_x. Required. Specifies the space in the x-direction between data


extents. The value can be negative.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-814
IC Validator Reference Manual Version N-2017.12-SP2

- space_y. Required. Specifies the space in the y-direction between data


extents. The value can be negative.
- stagger_x. Optional. Defines the stagger distance between data extents in
the x-direction The value can be negative. The default is 0.
- stagger_y. Optional. Defines the stagger distance between data extents in
the y-direction The value can be negative. The default is 0.
- pattern_spacing. Optional. Specifies the fill-to-fill spacing for the fill pattern

¤ allowed_spacing_x. Lists the allowable x-spacing values for this layer in


this pattern.
¤ allowed_spacing_y. Lists the allowable y-spacing values for this layer in
this pattern.
¤ min_space_corner. Specifies the minimum acceptable corner spacing for
this layer in this pattern for when the extension option is RADIAL or
RADIAL_INTERSECTION. The default is the maximum value of the space_x
and space_y options. A value of 0 disables this feature.
¤ extension. Optional. Specifies the treatment of corners for fill to fill
spacing, as shown in Figure 3-200. The default is ELLIPTICAL.
 ELLIPTICAL.
 RADIAL.
 INTERSECTION.
 RADIAL_INTERSECTION.
Figure 3-200 Treatment of Corners for Spacing

ELLIPTICAL RADIAL INTERSECTION RADIAL-INTERSECTION

¤ corner_check. Optional. Specifies the treatment of corner checking when


extension is either RADIAL or RADIAL_INTERSECTION and either space_x
or space_y is not a positive value. The default is POSITIVE_SPACE.
 POSITIVE_SPACE. Disables corner checking when these conditions are
met.
 ALL. Enables corner checking when these conditions are met.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-815
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- other_pattern_spacing. Optional. Defines a hash of integer to constraint of


double that specifies the acceptable spacing distance to other patterns defined
in the unified_fill() function.
The hash key is the index of the fill_patterns list. The integer 0 represents
the first pattern. For example, to set the spacing of the third pattern to be 0.5
or greater:
other_pattern_spacing = {3 => >= 0.5}
The other_pattern_spacing hash is applied to the extents of the fill pattern,
and the extension option is forced to NONE.
Notes:
¤ Within a pattern definition, you cannot specify a hash value that refers to
itself.
¤ If conflicting spacing definitions exist between the same pair of patterns,
IC Validator uses the largest value.
For example, if the other_pattern_spacing value in the first pattern 0 is
other_pattern_spacing = { 1 => > 0.2 } (which means the spacing
between pattern 0 and pattern 1 is greater than or equal to 0.2) and pattern
1 has other_pattern_spacing = { 0 => > 0.3 }, then IC Validator uses
0.3 as the spacing between pattern 0 and pattern 1.
■ layers. Required. Lists structures that define shapes per layer.

- layer_spec. Required. Defines a structure that contains specifics for a given


layer in a given pattern.
¤ output_layer_key. Required. Identifies the output layer in the output
hash.
¤ fill_to_signal_spacing. Optional. Defines spacing rules for the fill
shapes with respect to different signal layers, thereby defining areas where
fill is not allowed. IC Validator converts these rules internally into blockages
to prevent fill from going where it is not allowed.
 signal_layer. Specifies the layer that is to be avoided.
 width_based_spacing. Specifies where fill can go, and not go, based
on the width, when the context is EXTERIOR. The
width_based_spacing value overrides the min_space value if both are
specified.
> width. Specifies the width range.
> allowed_spacing. Lists the allowed spacing ranges for a given
width.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-816
IC Validator Reference Manual Version N-2017.12-SP2

 min_space. Specifies the minimum acceptable value for fill-to-signal


spacing, when the context is EXTERIOR, INTERIOR, or BOUNDARY.
When the min_space_inside option is also used, the min_space
option sets the minimum value for spacing outside the layer.
 context. Optional. Specifies where fill can be inserted in relation to the
design layer. The default is EXTERIOR.
> EXTERIOR. Specifies that fill can go outside the layer. This option
uses the width-based spacing values.
> INTERIOR. Specifies that fill can go inside the layer. This option uses
the minimum spacing values, if you specify them. Otherwise, it uses
the min_space values.
> EXTERIOR_INTERIOR. Specifies that fill can go outside and inside the
layer. This option uses the minimum spacing values.
> BOUNDARY. Specifies that fill goes on the boundary of the polygons,
within the minimum spacing distance in both directions.
Note: You can declare more than one fill_to_signal_spacing rule
for a given signal in a fill pattern by using different context settings.
IC Validator combines all the blockages internally.
 min_space_x. Specifies the minimum acceptable value for fill-to-signal
spacing in the x-direction, when the context is INTERIOR or BOUNDARY.
When the min_space_inside_x option is also used, the min_space_x
option sets the minimum value for spacing in the x-direction outside the
layer.
 min_space_y. Specifies the minimum acceptable value for fill-to-signal
spacing in the y-direction, when the context is INTERIOR or BOUNDARY.
When the min_space_inside_y option is also used, the min_space_y
option sets the minimum value for spacing in the y-direction outside the
layer.
 width_based_spacing_x. Specifies where fill can go, and not go, in the
x-direction based on the width of the design layer, when the context is
EXTERIOR. The width_based_spacing_x value overrides the
min_space_x value if both are specified.

> width. Specifies the width range in the x-direction.


> allowed_spacing. Lists the allowed spacing ranges for a given
x-direction width.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-817
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

 width_based_spacing_y. Specifies where fill can go, and not go, in the
y-direction based on the width of the design layer, when the context is
EXTERIOR. The width_based_spacing_y value overrides the
min_space_y value if both are specified.

> width. Specifies the width range in the y-direction.


> allowed_spacing. Lists the allowed spacing ranges for a given
y-direction width.
 color_aware_to_fill. Specifies color-specific fill. The default is ALL.
> ALL. Specifies that fill is not color specific.
> ONLY_COLOR_1. Selects color 1 for signal spacing requirements. The
color option must be true.

> ONLY_COLOR_1. Selects color 2 for signal spacing requirements. The


color option must be true.

> ONLY_COLOR_3. Selects color 3 for signal spacing requirements. The


color option must be true.
Note: The color_aware_to_fill option is used only for polygon fills
and adjustable fills.
 min_space_inside. Specifies the minimum acceptable value for
fill-to-signal spacing inside the layer when the context is
EXTERIOR_INTERIOR or BOUNDARY. The min_space_inside option
cannot be used when the min_space_inside_x and
min_space_inside_y options are used.

 min_space_inside_x. Specifies the minimum acceptable value for


fill-to-signal spacing in the x-direction inside the layer when the context
is INTERIOR_EXTERIOR or BOUNDARY. The min_space_inside_x and
min_space_inside_y options cannot be used when the
min_space_inside option is used.

 min_space_inside_y. Specifies the minimum acceptable value for


fill-to-signal spacing in the y-direction inside the layer when the context
is INTERIOR_EXTERIOR or BOUNDARY. The min_space_inside_x and
min_space_inside_y options cannot be used when the
min_space_inside option is used.

 space_extension. Specifies the minimum acceptable value for


extended fill-to-signal spacing when the min_space option is specified,
when the min_space_x option is specified and the space_extension_y
option is not specified, or when the min_space_y option is specified and
the space_extension_x option is not specified. The

Chapter 3: Runset Functions: J - Z


unified_fill() 3-818
IC Validator Reference Manual Version N-2017.12-SP2

space_extension option is available only when the context is


EXTERIOR.

 space_extension_x. Specifies the minimum acceptable value for


extended fill-to-signal spacing in the x-direction when the min_space_y
option is specified or when the min_space option is specified and the
space_extension option is not specified in the same
fill_to_signal_spacing definition. The space_extension_x option
is available only when the context is EXTERIOR.
 space_extension_y. Specifies the minimum acceptable value for
extended fill-to-signal spacing in the y-direction when the min_space_x
option is specified or when the min_space option is specified and the
space_extension option is not specified in the same
fill_to_signal_spacing definition. The space_extension_y option
is available only when the context is EXTERIOR.
The following figure shows how the space_extension_y option is used
with the min_space_x option.

 debug_layer_name. Specifies the name of the debug layer associated


with fill_to_signal_spacing. Typically, the unified_fill()
function automatically names the debugging layer name based on the
pattern type and signal layer name. However, with the
debug_layer_name option, you specify the debugging layer name. This
option works only if debug_oasis_filename is defined. The default is
an empty string ("").
¤ fill_to_fill_spacing. Optional. Defines areas for fill based on fill-to-fill
spacing for this particular layer.
 allowed_spacing_x. Optional. Specifies the allowable x-spacing value
for this layer in this pattern. The only constraint operators allowed are >
and >=.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-819
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

 allowed_spacing_y. Optional. Specifies the allowable y-spacing value


for this layer in this pattern. The only constraint operators allowed are >
and >=.
 min_space_corner. Optional. Specifies the minimum acceptable
corner spacing for this layer in this pattern for when the extension
option is RADIAL or RADIAL_INTERSECTION. The default is the
maximum value of the space_x and space_y options. A value of 0
disables this feature.
 extension. Optional. Specifies the treatment of corners for fill to fill
spacing, as shown in Figure 3-200. The default is ELLIPTICAL.
> ELLIPTICAL.
> RADIAL.
> INTERSECTION.
> RADIAL_INTERSECTION.
 corner_check. Optional. Specifies the treatment of corner checking
when extension is either RADIAL or RADIAL_INTERSECTION and either
space_x or space_y is not a positive value. The default is
POSITIVE_SPACE.

> POSITIVE_SPACE. Disables corner checking when these conditions


are met.
> ALL. Enables corner checking when these conditions are met.
- polygons. Required. List of xy coordinates that represent the fill shapes.

■ spacing_context. Optional. Specifies the context of the


fill_to_signal_spacing specifications for multilayer fill patterns. The default is
UF_PATTERN.

- UF_PATTERN. Applies fill_to_signal_spacing spacing to the extents of the


fill pattern.
- UF_LAYER. Applies fill_to_signal_spacing spacing to the extents of the
given layer. This setting is meaningful only when the size of layers is greater
than 1.
■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
- REGION_CONTEXT. Sets the starting point of fill insertion at the lower-left corner
of the current fill region. Fill regions are formed firstly based on keepout

Chapter 3: Runset Functions: J - Z


unified_fill() 3-820
IC Validator Reference Manual Version N-2017.12-SP2

specifications defined in the layer_spec option then the starting point of a


given pattern the lower left of the given fill region.
- CHIP_CONTEXT. Sets the starting point of fill insertion at the lower-left corner of
the extents of the design. Instances of shapes or cells that violate keepout
specifications defined in the layer_spec option are not placed
- PARTITION_CONTEXT. Turns on partitioning based on the specifications
defined in the insertion and partition options.
- SIGNAL_CONTEXT. Turns on signal-oriented fill based on the signal option
specifications.
- LINEAR_CONTEXT. Turns on signal-oriented fill based on the signal_linear
option specifications.
■ insertion. Optional. Specifies insertion specifics for a given pattern.

- iterations. Optional. Specifies how many times a given pattern is inserted in


a given fill region. This feature is useful only for nonrectangular fill regions. Use
this when the fill_context option is REGION, but if the region for subsequent
iterations does not have a new lower-left, then this option does not affect the
fill process. The maximum value is 10. Higher values slow the fill process. The
default is 1.
- shift_factor. Optional. Specifies how many times the tool tries a new
starting point to maximize fill. This feature is useful only for nonrectangular fill
regions. The maximum value is 10. Higher values slow the fill process. The
default is 0, which means that no effort is made to shift the starting point.
- symmetry. Optional. Specifies if this fill pattern is centered in a given fill region.
The default is false.
¤ true. Partitions the region and the fill is placed starting at the lower left of
the partition, and then the entire pattern is moved such that the top and
bottom edges of the fill shapes are equidistant to the top and bottom edges
of the partition, and that the left and right edges of the fill are equidistant to
the left and right edges of the partition.
¤ false. Does not center the fill pattern.
- auto_rotate. Optional. Specifies how the fill can be rotated or aligned.
whenever fill shapes are rotated, the space_x and space_y values are
transposed accordingly. The default is NONE.
¤ NONE. Does not change the orientation of the fill shapes.
¤ PRIMARY_AXIS. Orients fill shapes along the major axis of the fill region. For
nonrectangular fill or multilayer fill, the extents of the pattern are used. For

Chapter 3: Runset Functions: J - Z


unified_fill() 3-821
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

nonrectangular fill area, the extents of the fill area are used to determine
the major axis.
¤ FAILED_INSERTION. Rotates fill 90 degrees if the original orientation
provided zero insertion for a given fill region.
¤ MAX_INSERTION. Rotates fill either 0 or 90 degrees, whichever provides
maximum insertion.
- starting_point. Optional. Specifies the location in fillable regions from which
the fills are generated. The default is LEFT_BOTTOM.
¤ LEFT_BOTTOM. Generates fill from the bottom-left corner of the fillable
region.
¤ LEFT_TOP. Generates fill from the top-left corner of the fillable region.
¤ RIGHT_BOTTOM. Generates fill from the bottom-right corner of the fillable
region.
¤ RIGHT_TOP. Generates fill from the top-right corner of the fillable region.
¤ CENTER. Generates fill from the center point of the fillable region.
This value is not supported when the fill_context option is set to
SIGNAL_CONTEXT or LINEAR_CONTEXT.
Note that when using fill_context = PARTITION_CONTEXT, the center point
is based on the polygons that have been partitioned. When using
fill_context = CHIP_CONTEXT, the starting point starts from the center point
of the output layer from the chip_extent() function.
As shown in the following figure, the fill is located at the starting point of the
fillable region. When starting_point = RIGHT_TOP, the fill whose (right, top)
is in the fillable region's (right, top) is represented.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-822
IC Validator Reference Manual Version N-2017.12-SP2

- prune_jogs. Optional. Defines a list of jogs for pruning based on their


horizontal and vertical lengths.
Jogs are formed by orthogonal edges. A jog is defined by the meeting of its
x-direction edge with the horizontal_length constraint and its y-direction
edge with the vertical_length constraint. You should set both constraints. If
both constraints are set to their default values, no pruning is performed.
¤ horizontal_length. Required. Sets the length criteria for the horizontal
edges of jogs. The valid constraints are <, <=, and ==. The default is == 0
(zero).
¤ vertical_length. Required. Sets the length criteria for the vertical edges
of jogs. The valid constraints are <, <=, and ==. The default is == 0 (zero).
¤ prune_order. Optional. Defines the order of pruning. When the IC
Validator tool removes jogs, the pruning order affects the final result. The
default is HORIZONTAL.
 HORIZONTAL. Optional. Prunes horizontal U-shaped jogs first, followed
by vertical U-shaped jogs, and then by L-shaped jogs.
 VERTICAL. Prunes vertical U-shaped jogs first, followed by horizontal
U-shaped jogs, and then by L-shaped jogs.
¤ iterate. Controls whether the tool performs multiple iterations to remove
jogs. The default is false.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-823
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation.
The default is ROTATE_0; that is, no rotation.
- ROTATE_0.

- ROTATE_90.

- ROTATE_180.

- ROTATE_270.

■ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for
an example of reflection and rotation.
Note:
Reflection is performed before rotation.
The default is false.
- true. Reflects the pattern.

- false. Does not reflect the pattern.

■ signal. Optional. Specifies specifics for alignment to signal layers. This option is
ignored if the fill_context option is not SIGNAL_CONTEXT. This feature ignores
the insertion option and the partition option. Any patterns aligned with the
signal option must appear before any non-aligned patterns in the pattern_spec
list. A given signal layer can only have one alignment specification.
- layer. Optional. Specifies the signal layer that are used for alignment.

- ring_count. Optional. Specifies the number of protection rings. The default


is 0.
This feature uses the spacing defined in the pattern_spec option as defined for
the alignment layer.
- space_x. Space in the signal direction.

- space_y. Space against the signal direction.

- stagger_x. Stagger in the signal direction.

- stagger_y. Ignored.
In the context of nonrectangular fill, the major axis of the pattern is defined as the
longest extent of the pattern.
■ partition. Optional. Provides specifics for partitioning fill regions to produce
rectangular partitions. This option is used only if the fill_context option is

Chapter 3: Runset Functions: J - Z


unified_fill() 3-824
IC Validator Reference Manual Version N-2017.12-SP2

PARTITION_CONTEXT. The shift_factor and iterations options are not used


because they are only useful for nonrectangular target polygons.
- min_space. Optional. Specifies the minimum spacing between partitions. The
default is greater of the space_x or space_y values.
- min_space_x. Optional. Specifies the minimum spacing between partitions in
the x-direction.
- min_space_y. Optional. Specifies the minimum spacing between partitions in
the y-direction.
Note:
The min_space_x and min_space_y options cannot be used at the same time
as the min_space option.
■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value.
- x. Optional. Specifies the x-pitch.

- y. Optional. Specifies the y-pitch.

- context_layer. Optional. Refines the placement of fill for this pattern:

¤ The context of the grid is changed from the origin of chip to the lower left of
the extents of the context_layer polygon.
¤ The fillable regions are the result of the derived target layer ANDed with the
context_layer polygon.

¤ The initial starting point for fill insertion is forced to the lower left of the
extents of the polygon defined in the preceding bullet.
The fill_context option is ignored if it is REGION_CONTEXT or
CHIP_CONTEXT.

■ color. Optional. Turns on coloring for this layer. This option is only supported for
the polygon_fill structure when only one layer is defined. The default is false.
- true. Assigns alternating colors to fill shapes.

- false. Does not assign coloring.

■ color_space. Optional. Specifies the minimum space allowed between fills for
two regions. This is the interregion coloring constraint. The default is 0.0; that is,
there is no interregion coloring constraint.
■ hierarchical_fill. Optional. Specifies array reference (AREF) output. The
default is false.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-825
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- true. Recognizes patterns of fill polygons on a single layer and converts them
to AREFs.
- false. Does not look for AREF patterns.

■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_signal_spacing. Optional. Defines areas for fill that apply to all layers
in the pattern. If there are also fill_to_signal_spacing specifications for
specific layers, the most conservative values apply. See the
fill_to_signal_spacing option in the layer_spec option of the layer option
of the polygon_fill option for definitions of
- signal_layer

- width_based_spacing

- min_space

- context

- min_space_x

- min_space_y

- width_based_spacing_x

- width_based_spacing_y

- color_aware_to_fill

- min_space_inside

- min_space_inside_x

- min_space_inside_y

- space_extension

- space_extension_x

- space_extension_y

- debug_layer_name

■ signal_linear. Optional. Specifies extended signal-oriented fills with color


aware insertion.
Note:
A forbidden area is formed by three segments: side, tip, and corner.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-826
IC Validator Reference Manual Version N-2017.12-SP2

- layers. Optional. Specifies the signal layers that are used for alignment.

- ring_count. Optional. Specifies the number of protection rings. The default


is 0.
- direction. Specifies the direction of the spacing. The default is AUTO.

¤ HORIZONTAL. Specifies that the direction of the spacing is horizontal.


¤ VERTICAL. Specifies that the direction of the spacing is vertical.
¤ AUTO. Specifies that the tool automatically decides the direction of the
spacing.
The tool decides the direction by comparing the signal width versus height.
if the signal width is shorter than the height, then the signal is in the
y-direction. if the signal width is longer than the height, the signal direction
is in the x-direction. If the input layer contains multiple signal directions, the
tool chooses the most prevalent direction.
- space_to_signal_side. Defines the side segment of the forbidden area. The
default is 0.0.
- space_to_signal_line_end. Defines the tip segment of the forbidden area.
The default is 0.0.
- space_to_signal_corner. Defines the corner segment of the forbidden area
along with the space_to_signal_extension option. The default is 0.0.
- space_to_signal_extension. The default is SQUARE.

¤ SQUARE.
¤ RECTANGLE.
This option uses the space_to_signal_line_end and
space_to_signal_corner options; the space_to_signal_corner option
is not used.
¤ RADIAL.
- dpt_space. Specifies the minimum spacing between two fills of the same
color. See also the color_space option, which is used for color balance. The
default is 0.0.
Note: To specify different spacing values for different directions in signal linear
fill, set dpt_space to 0 and use the more detailed dpt_spacing options to set
the x-direction, y-direction, or corner-to-corner spacing values.
- long_fill_max_num. Specifies the maximum number of fills that can be
combined into one long fill. The default is 0.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-827
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- long_fill_ring_begin. Specifies the ring count that starts this fill. For
example, if long_fill_ring_begin = 3, fills are combined into long fills from
the 3rd ring. If long_fill_ring_begin = 0, fills are not combined into long
fills. The default is 0x.
- use_fill_to_signal_spacing. Controls how the forbidden area of a signal
is generated. The default is false.
¤ true. The forbidden area is the same as the area specified by the
fill_to_signal_spacing option.

¤ false. The forbidden area is the same as the original signal linear fill.
- adjustable_width_bound. Controls how the fill boundary is adjusted. The
default is 0.0, which means the fill boundary is not adjusted. If the fill width is
less than the adjustable_width_bound value, the fill area is increased to
cover the fillable region. If the fill width is greater than the
adjustable_width_bound value, the fill width is decreased to keep the fill
within the fillable region.
Note that the adjustable_width_bound option and the long_fill_* options
are mutually exclusive.
- output. Controls if the fill is generated just on the side of the signal or on the
entire signal. The default is ALL.
¤ SIGNAL_SIDE
¤ ALL
- signal_min_length. Sets the minimum size of signals for which signal fills
are generated. The default is 0.0, which generates signal fills for all signals.
- colored_layers. Assigns alternating colors to fill shapes in a regular fill
pattern. There is a choice of two colors: COLOR_1 and COLOR_2. The default
is NO_COLOR.
■ color_scheme. Optional. Specifies how the tool makes color changes. The
default is UF_CHECKERED.
- UF_LINE_END. Switches color in short edges of the fill rectangles. If the fill is
square, the color switches in the x-direction.
- UF_LINE_SIDE. Switches color in long edges of the fill rectangles. If the fill is
square, the color switches in the y-direction.
- UF_CHECKERED. Switches color in both the short and long edges of the fill
rectangles.
- UF_DPT_SPACING. Switches color based on values specified in the
dpt_spacing option. (DPT is double patterning technology.)

Chapter 3: Runset Functions: J - Z


unified_fill() 3-828
IC Validator Reference Manual Version N-2017.12-SP2

■ dpt_spacing. Optional. Specifies the minimum distance between two fill


rectangles of the same color. These distances determine how to change the color
of fill rectangles when the color_scheme option is UF_DPT_SPACING.
- dpt_space_x. Specifies the space in the x-direction. The default is 0.0.

- dpt_space_y. Specifies the space in the y-direction. The default is 0.0.

- dpt_space_corner. Specifies the space between corners. The default is 0.0.

- dpt_space_extension. Specifies how the tool checks the corners of the fill
rectangles. The default is INTERSECTION.
¤ ELLIPTICAL.
¤ RADIAL.
¤ INTERSECTION.
¤ RADIAL_INTERSECTION.
■ reference_layer. Optional. Defines the reference point for a fill pattern.

- reference_context. Specifies the reference point method. The default


method is REGION_EXTENT.
¤ REGION_EXTENT. Defines the reference point as the lower-left corner of the
extent of each fillable region.
¤ LAYER_EXTENT. Defines the reference point as the lower-left corner of the
extent of the reference_layer, as shown in the following figure:

Chapter 3: Runset Functions: J - Z


unified_fill() 3-829
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

¤ POLYGON_EXTENT. Defines the reference point as the lower-left corner of


each shape in the reference_layer as shown in the following figure:

¤ INITIAL_POINT. Sets the reference point to the coordinates specified by


the initial_coord option.
- initial_coord. Defines the reference point coordinates from the top view. To
use initial_coord, set reference_context = INITIAL_POINT. Otherwise,
the initial_coord coordinates are ignored.
- shift_value. Specifies the reference point shift values in the x-direction and
the y-direction. These shift values are applied after the reference point is
determined, no matter what kind of fill context you use.
- layer. Specifies an additional reference layer used to define the reference
point when reference_context is set to LAYER_EXTENT or POLYGON_EXTENT.
■ num_colors. Optional. Specifies how many coloring fills must be used.

❍ adjustable_fill. Optional. Defines spacing for an adjustable fill pattern, which is a


rectangle that can shrink or grow in the x- and y-directions. To use this type of fill, set
the type option to UF_ADJUSTABLE. Only the first and last rectangles in a given row
or column are adjusted. Symmetry occurs first, then adjusted rectangles are inserted
symmetrically.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.
See the pattern_spec option of the polygon_fill option for definitions of
- space_x, except that the value must be greater than zero (>0).

- space_y, except that the value must be greater than zero (>0).

- stagger_x

- stagger_y

Chapter 3: Runset Functions: J - Z


unified_fill() 3-830
IC Validator Reference Manual Version N-2017.12-SP2

- pattern_spacing

- other_pattern_spacing

■ layer_spec. Required. Defines a structure that contains specifics for a given


layer in a given pattern. See the layer_spec option of the polygon_fill option
for definitions of
- output_layer_key

- fill_to_signal_spacing

- fill_to_fill_spacing

■ width. Specifies the width of the fill rectangle.

■ height. Specifies the height of the fill rectangle.

■ width_bound. Specifies the minimum or maximum width that the fill rectangle can
shrink or grow. The value must be nonnegative.
■ height_bound. Specifies the minimum or maximum height that the fill rectangle
can shrink or grow. The value must be nonnegative.
■ width_delta. Specifies the allowable decrement/increment of the adjustability in
width. The value must be nonnegative.
■ height_delta. Specifies the allowable decrement/increment of the adjustability
in height. The value must be nonnegative.
■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

■ rotation. Optional. Specifies the rotation of the pattern. The default is ROTATE_0;
that is, no rotation.
- ROTATE_0.

- ROTATE_90.

- ROTATE_180.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-831
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- ROTATE_270.
Note:
Because the fill patterns are rectangles,
¤ ROTATE_0 and ROTATE_180 are equivalent.
¤ ROTATE_90 and ROTATE_270 are equivalent.
¤ The reflection option is not useful.
■ insertion. Optional. Specifies insertion specifics for a given pattern. See the
insertion option of the polygon_fill option for definitions of

- iterations

- shift_factor

- symmetry

- auto_rotate

- starting_point

- prune_jogs

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used
because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

■ hierarchical_fill. Optional. Specifies AREF output. The default is false. See


the hierarchical_fill option of the polygon_fill option for more information.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-832
IC Validator Reference Manual Version N-2017.12-SP2

■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_fill_spacing_direction. Optional. Controls how the adjustable fill
process checks the fill-to-fill spacing with adjacent fill regions. The default is ALL.
- END_DIRECTION. Checks the spacing with fill regions in the adjustment
direction only.
- ALL. Checks the spacing with all adjacent fill regions.

■ color. Optional. Turns on coloring for this layer. This option is only supported for
the polygon_fill structure when only one layer is defined. The default is false.
- true. Assigns alternating colors to fill shapes.

- false. Does not assign coloring.

■ color_space. Optional. Specifies the minimum space allowed between fills for
two regions. This is the interregion coloring constraint. The default is 0.0; that is,
there is no interregion coloring constraint.
■ color_scheme. Optional. Specifies how the tool makes color changes. The
default is UF_CHECKERED. See the color_scheme option of the polygon_fill
option for definitions of.
- UF_LINE_END

- UF_LINE_SIDE

- UF_CHECKERED

- UF_DPT_SPACING

■ dpt_spacing. Optional. Specifies the minimum distance between two fill


rectangles of the same color. These distances determine how to change the color
of fill rectangles when the color_scheme option is UF_DPT_SPACING. See the
dpt_spacing option of the polygon_fill option for definitions of.

- dpt_space_x

- dpt_space_y

- dpt_space_corner

- dpt_space_extension

■ density_optimization. Optional. Specifies whether to optimize the fill density.


The default is NONE.
- NONE. No density optimizations are performed.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-833
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- TOUCH_BOUNDARY. Use for cases where the fill shrinks when it is adjusted and
shifted, so that the end touches the boundary and the fill produces the
maximum density possible. In some cases, a polygon might be split into two
polygons, as shown in Figure 3-201.
Figure 3-201 Splitting Polygons to Touch the Boundary

❍ stack_fill. Optional. Defines a stack fill pattern. To use this type of fill, set the type
option to UF_STACK. This fill pattern is a multilayer cell and the extents of the largest
stack permutation are used for insertion. The permutations are defined with minimum
and maximum stack values. The required_layer_keys option indicates
interdependence of layers.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.
See the pattern_spec option of the polygon_fill option for definitions of
- space_x, except that the value must be greater than zero (>0) if the
separate_pattern option is true or if the spacing_context option is
UF_PATTERN; also, the value cannot be negative if the grouping option of the
pattern’s layers option is ALL.
- space_y, except that the value must be greater than zero (>0) if the
separate_pattern option is true or if the spacing_context option is
UF_PATTERN; also, the value cannot be negative if the grouping option of the
pattern’s layers option is ALL.
- stagger_x

- stagger_y

- pattern_spacing

- other_pattern_spacing

■ layers. Required. Lists structures that define shapes per layer. The order is
crucial to the stack. For a given pattern, in the context of REGION_CONTEX and

Chapter 3: Runset Functions: J - Z


unified_fill() 3-834
IC Validator Reference Manual Version N-2017.12-SP2

with the separate_patterns option set to false, the fill region is defined as the
Boolean NOT of the intersection of all the fill_to_layer specifications.
- layer_spec. Required. Defines a structure that contains specifics for a given
layer in a given pattern. See the layer_spec option of the polygon_fill
option for definitions of
¤ output_layer_key
¤ fill_to_signal_spacing (Note: The color_aware_to_fill option is
used only for polygon fills and adjustable fills.)
¤ fill_to_fill_spacing
- polygons. Required. List of xy coordinates that represent the fill shapes.

- required_layer_keys. Optional. Specifies other fill keys that this particular


layer is dependent on when building permutations. See the
require_adjacent_layer_keys option for automatically specifying adjacent
layers as the required layer keys.
Note:
¤ Tied layers are layers that are mutually associated to each other by the
required_layer_keys option and are listed sequentially in the list of
layers. A typical usage of tied layers is to associate different colors of a
metal layer; for example, DUMMY1A AND DUMMY1B for Metal 1. In the
following example, DUMMY1B and DUMMY1A are tied to each other:
SHAPE_DUMMY1A : stack_layer_s = {
polygons = DATA_DUMMY1A,
layer_spec = { output_layer_key = "DUMMY1A" },
required_layer_keys = { "DUMMY1B" }
};
SHAPE_DUMMY1B : stack_layer_s = {
polygons = DATA_DUMMY1B,
layer_spec = { output_layer_key = "DUMMY1B" },
required_layer_keys = { "DUMMY1A" }
};

¤ Adjacent layers, for any given layer, are those layers that are immediately
before or after it in the stack.
Important: When traversing the list of layers to identify adjacent layers, tied
layers are treated as one layer.
- grouping. Optional. Specifies if the data of this layer, in this pattern, is
processed as a group when dealing with allowable regions or target
adjustments. See Figure 3-202 for an example. The default is NONE.
¤ NONE. Does not group the data. Polygons are processed individually.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-835
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

¤ ALL. Groups the polygons and processes the group as one.


Figure 3-202 grouping Option

ALL
purple
block

NONE

- require_adjacent_layer_keys. Optional. Specifies if adjacent layers are


used as required layer keys. See the required_layer_keys option for more
information. The default is false.
¤ true. Automatically specifies adjacent layers as required layer keys. That
is, the required layer keys are automatically updated with the upper and
lower metal fill keys.
Note: If there are two or more consecutive layers in the list of layers that
have the require_adjacent_layer_keys option set to true, all those
layer must be tied to each other by required layer keys. See the information
about tied and adjacent layers in the description of the
required_layer_keys option.

¤ false. Does not use adjacent layers as required layer keys.


- min_polygon_count. Specifies the minimum number of DRC-clean polygons
in a pattern layer that are required to keep this layer in the pattern placement.
If the number of DRC-clean polygons is smaller than the minimum polygon
count, all polygons of that layer are removed from the pattern placement.
■ min_stack. Required. Specifies the smallest number of layers in a stack.

■ max_stack. Required. Specifies the largest number of layers in a stack.

■ spacing_context. Optional. Specifies the context of the


fill_to_signal_spacing spacing specifications for multilayer fill patterns. The
default is UF_PATTERN. See the spacing_context option of the polygon_fill
option for definitions of
- UF_PATTERN

- UF_LAYER

Chapter 3: Runset Functions: J - Z


unified_fill() 3-836
IC Validator Reference Manual Version N-2017.12-SP2

■ separate_patterns. Optional. Specifies how the different permutations of the


stack are processed. The default is false.
- true. Processes the different permutations of the stack as individual patterns
with their own extents and target polygon.
- false. Does not processes the different permutations of the stack as
individual patterns with their own extents and target polygon.
■ rotation. Optional. Specifies the rotation of the pattern.
Note:
Reflection is performed before rotation.
The default is ROTATE_0; that is, no rotation.
- ROTATE_0.

- ROTATE_90.

- ROTATE_180.

- ROTATE_270.

■ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for
an example of reflection and rotation.
Note:
Reflection is performed before rotation.
The default is false.
- true. Reflects the pattern.

- false. Does not reflect the pattern.

■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

■ insertion. Optional. Specifies insertion specifics for a given pattern. See the
insertion option of the polygon_fill option for definitions of

- iterations

Chapter 3: Runset Functions: J - Z


unified_fill() 3-837
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- shift_factor

- symmetry

- auto_rotate

- starting_point

- prune_jogs

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used
because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

■ hierarchical_fill. Optional. Specifies AREF output. The default is false. See


the hierarchical_fill option of the polygon_fill option for more information.
■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_signal_spacing. Optional. Defines areas for fill that apply to all layers
in the pattern. If there are also fill_to_signal_spacing specifications for
specific layers, the most conservative values apply. See the
fill_to_signal_spacing option the layer_spec option of the layer option of
the polygon_fill option for definitions of
- signal_layer

- width_based_spacing

- min_space

Chapter 3: Runset Functions: J - Z


unified_fill() 3-838
IC Validator Reference Manual Version N-2017.12-SP2

- context

- min_space_x

- min_space_y

- width_based_spacing_x

- width_based_spacing_y

- color_aware_to_fill

- min_space_inside

- min_space_inside_x

- min_space_inside_y

- space_extension

- space_extension_x

- space_extension_y

- debug_layer_name
Note: The color_aware_to_fill option is used only for polygon fills and
adjustable fills.
❍ cell_fill. Optional. Defines a layout cell to be used for fill pattern generation. To
use this type of fill, set the type option to UF_CELL. This fill option supports
permutations the same as the stack_fill option.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.
See the pattern_spec option of the polygon_fill option for definitions of
- space_x, except that the value must be greater than zero (>0) if the
separate_pattern option is true or if the spacing_context option is
UF_PATTERN; also, the value cannot be negative if the grouping option of the
pattern’s layers option is ALL.
- space_y, except that the value must be greater than zero (>0) if the
separate_pattern option is true or if the spacing_context option is
UF_PATTERN; also, the value cannot be negative if the grouping option of the
pattern’s layers option is ALL.
- stagger_x

- stagger_y

- pattern_spacing

- other_pattern_spacing

Chapter 3: Runset Functions: J - Z


unified_fill() 3-839
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ cell. Specifies the cell from the cell handle that is returned by the
import_gds_cell() and import_oasis_cell() functions.

■ layers. Required. Lists structures that define shapes per layer. The order is
crucial to the stack. For a given pattern, in the context of REGION_CONTEXT and
with the separate_patterns option set to false, the fill region is defined as the
Boolean NOT of the intersection of all the fill_to_layer specifications.
- layer_spec. Required. Defines a structure that contains specifics for a given
layer in a given pattern. See the layer_spec option of the polygon_fill
option for definitions of
¤ output_layer_key
¤ fill_to_signal_spacing (Note: The color_aware_to_fill option is
used only for polygon fills and adjustable fills.)
¤ fill_to_fill_spacing
- ldt_list. Lists the layer range and datatype range pairs. The
data_type_range value for each pair is optional, with a default of all
datatypes. See “Layout Layer and Datatype Ranges” on page A-6 for
information about the limits of the values.
- required_layer_keys. Optional. Specifies other fill keys that this particular
layer is dependent on when building permutations. See the
require_adjacent_layer_keys option for specifying adjacent layers as the
required layer keys. See the required_layer_keys option for stack fills for
information about adjacent and tied layers.
- grouping. Optional. Specifies if data of this layer, in this pattern, is processed
as a group when dealing with allowable regions or target adjustments. See
Figure 3-202 for an example. The default is NONE.
¤ NONE. Does not group data. Polygons are processed individually.
¤ ALL. Groups the polygons and processes the group as one.
- require_adjacent_layer_keys. Optional. Specifies if adjacent layers are
used as required layer keys. See the required_layer_keys and
require_adjacent_layer_keys options for stack fills for more information.
The default is false.
¤ true. Automatically specifies adjacent layers as required layer keys.
¤ false. Does not use adjacent layers as required layer keys.
- min_polygon_count. Specifies the minimum number of DRC-clean polygons
in a pattern layer that are required to keep this layer in the pattern placement.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-840
IC Validator Reference Manual Version N-2017.12-SP2

If the number of DRC-clean polygons is smaller than the minimum polygon


count, all polygons of that layer are removed from the pattern placement.
■ min_stack. Required. Specifies the smallest number of layers in a stack.

■ max_stack. Required. Specifies the largest number of layers in a stack.

■ spacing_context. Optional. Specifies the context of the


fill_to_signal_spacing spacing specifications for multilayer fill patterns. The
default is UF_PATTERN. See the spacing_context option of the polygon_fill
option for definitions of
- UF_PATTERN

- UF_LAYER

■ separate_patterns. Optional. Specifies how the different permutations of the


stack are processed. The default is false.
- true. Processes the different permutations of the stack as individual patterns
with their own extents and target polygon.
- false. Does not processes the different permutations of the stack as
individual patterns with their own extents and target polygon.
■ rotation. Optional. Specifies the rotation of the pattern.
Note:
Reflection is performed before rotation.
The default is ROTATE_0; that is, no rotation.
- ROTATE_0.

- ROTATE_90.

- ROTATE_180.

- ROTATE_270.

■ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for
an example of reflection and rotation.
Note:
Reflection is performed before rotation.
The default is false.
- true. Reflects the pattern.

- false. Does not reflect the pattern.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-841
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

■ insertion. Optional. Specifies insertion specifics for a given pattern. See the
insertion option of the polygon_fill option for definitions of

- iterations

- shift_factor

- symmetry

- auto_rotate

- starting_point

- prune_jogs

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used
because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

Chapter 3: Runset Functions: J - Z


unified_fill() 3-842
IC Validator Reference Manual Version N-2017.12-SP2

■ hierarchical_fill. Optional. Specifies AREF output. The default is false. See


the hierarchical_fill option of the polygon_fill option for more information.
■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_signal_spacing. Optional. Defines areas for fill that apply to all layers
in the pattern. If there are also fill_to_signal_spacing specifications for
specific layers, the most conservative values apply. See the
fill_to_signal_spacing option the layer_spec option of the layer option of
the polygon_fill option for definitions of
- signal_layer

- width_based_spacing

- min_space

- context

- min_space_x

- min_space_y

- width_based_spacing_x

- width_based_spacing_y

- color_aware_to_fill

- min_space_inside

- min_space_inside_x

- min_space_inside_y

- space_extension

- space_extension_x

- space_extension_y

- debug_layer_name
Note: The color_aware_to_fill option is used only for polygon fills and
adjustable fills.
❍ expandable_polygon_fill. Optional. Defines an expandable fill-cells pattern that
lets you insert fill cells that get expanded along the boundaries of a fill target area. To
use this type of fill pattern, you must first define a base fill cell with incremental unit

Chapter 3: Runset Functions: J - Z


unified_fill() 3-843
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cells. See the Expandable Fill Cell Patterns section in the “Unified Fill” chapter of the
IC Validator User Guide for an example of expansion of a fill cell.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.
See the pattern_spec option of the polygon_fill option for definitions of
- space_x, except that the value must be greater than zero (>0) if the
hierarchical_fill option is false.

- space_y, except that the value must be greater than zero (>0) if the
hierarchical_fill option is false.

- stagger_x

- stagger_y

- pattern_spacing

- other_pattern_spacing
The pattern_spec option of the expandable_polygon_fill option also
provides the following options:
- length_limit_x. Optional. Limits the length of the fill array in the x-direction.
This option is valid only when the cut_off_min_space_x option is also
included.
- length_limit_y. Optional. Limits the length of the fill array in the y-direction.
This option is valid only when the cut_off_min_space_y option is also
included.
- cut_off_min_space_x. Optional. Defines the space between two fill arrays in
the x-direction.
- cut_off_min_space_y. Optional. Defines the space between two fill arrays in
the y-direction.
■ base_cell. Defines a base fill cell with incremental unit cells.
If this option is specified and the base_cell_top and base_cell_bottom options
are not specified, then a one-dimensional fill cell is defined. If the base_cell_top
and base_cell_bottom options are specified, then a two-dimensional base fill is
defined. This cell must contain exactly three cells: left, repeatable, and right for
horizontal expansion or bottom, repeatable, and top for vertical expansion.
The base_cell_direction option controls the direction of the expansion for
one-dimensional fill cells. To control the expansion size, use the maximum option
for a horizontal fill cell or the maximum_y option for a vertical fill cell.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-844
IC Validator Reference Manual Version N-2017.12-SP2

Note:
When you define a two-dimensional fill cell, the base_cell_direction option
is ignored.
- layers. Required. Lists structures that define shapes per layer.

¤ layer_spec. Required. Defines a structure that contains specifics for a


given layer in a given pattern. See the layer_spec option of the
polygon_fill option for definitions of

 output_layer_key
 fill_to_signal_spacing
(Note: The color_aware_to_fill option is used only for polygon fills
and adjustable fills.)
 fill_to_fill_spacing (Note: In the expandable_polygon_fill
option, the allowed_spacing_x option can have only one value in the
list.)
¤ polygons. Required. List of xy coordinates that represent the fill shapes.
- repeatable. Required. Specifies if the cell can be repeated.

¤ true. Specifies that the cell is repeatable.


¤ false. Specifies that the cell is not repeatable.
- maximum. Defines the number of repetitions of a repeatable cell in the
x-direction. This value is used when the repeatable option is true. The
default is the maximal number of repetitions limited only by the filling area. The
specified value must be  0 (zero).
- maximum_y. Defines the number of repetitions of a repeatable cell in the
y-direction. This value is used when the repeatable option is true. The
specified value must be  0 (zero). The default is the maximal number of
repetitions limited only by the filling area.
■ base_cell_top. Defines a top base fill cell with incremental unit cells. Use this
option for two-dimensional fills. See the base_cell option for definitions of
- layers

- repeatable

- maximum

- maximum_y

■ base_cell_bottom. Defines a bottom base fill cell with incremental unit cells. Use
this option for two-dimensional fills. See the base_cell option for definitions of

Chapter 3: Runset Functions: J - Z


unified_fill() 3-845
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- layers

- repeatable

- maximum

- maximum_y

■ base_cell_direction. Optional. Controls the expansion direction for


one-dimensional fills. This option is ignored for two-dimensional fills (when the
base_cell_top and base_cell_bottom options are specified). The default is
HORIZONTAL.

- HORIZONTAL. Base cells contain three cells: left, repeatable, and right. The
horizontal expansion size is controlled by the maximum option of the
base_cell option.

- VERTICAL. Base cells contain three cells: bottom, repeatable, and top. The
vertical expansion size is controlled by the maximum_y option of the base_cell
option.
■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

■ insertion. Optional. Specifies insertion specifics for a given pattern. See the
insertion option of the polygon_fill option for definitions of

- iterations

- shift_factor

- symmetry

- auto_rotate

- starting_point

- prune_jogs

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used

Chapter 3: Runset Functions: J - Z


unified_fill() 3-846
IC Validator Reference Manual Version N-2017.12-SP2

because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

■ hierarchical_fill. Optional. Specifies AREF output. The default is false. See


the hierarchical_fill option of the polygon_fill option for more information.
■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_signal_spacing. Optional. Defines areas for fill that apply to all layers
in the pattern. If there are also fill_to_signal_spacing specifications for
specific layers, the most conservative values apply. See the
fill_to_signal_spacing option the layer_spec option of the layer option of
the polygon_fill option for definitions of
- signal_layer

- width_based_spacing

- min_space

- context

- min_space_x

- min_space_y

- width_based_spacing_x

- width_based_spacing_y

- color_aware_to_fill

- min_space_inside

Chapter 3: Runset Functions: J - Z


unified_fill() 3-847
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- min_space_inside_x

- min_space_inside_y

- space_extension

- space_extension_x

- space_extension_y

- debug_layer_name
Note: The color_aware_to_fill option is used only for polygon fills and
adjustable fills.
■ expansion_mode. Optional. Controls the size of the generated fill array by
specifying the method used for fill expansion. The default is
BOUNDARY_EXPANSION.

- BOUNDARY_EXPANSION. Applies fill expansion only to the fill cells located next
to the boundary of the fillable region.
- MAX_EXPANSION. Applies fill expansion to all of the fill cells within fillable
region.
Note:
When MAX_EXPANSION is used, negative space_x and space_y values are not
allowed and the stagger_x and stagger_y options are not applicable.
The values of the repeatable options must be properly defined for each
component cell within the base cell, depending on whether the expandable cell is
one-dimensional or two-dimensional. If the values are not defined, the input
validation reports an error in the runset.
■ fill_to_fill_spacing_direction. Optional. Controls how the expandable fill
process checks the fill-to-fill spacing with adjacent fill regions. The default is ALL.
- END_DIRECTION. Checks the spacing with fill regions in the expansion
direction only.
- ALL. Checks the spacing with all adjacent fill regions.

■ base_cell_overlap. Optional. Defines the overlaps between component cells in


each direction and the overlaps between repeated instances of center cells during
expansion. All specified overlap options must have positive values. For a pair of
overlapping cells, the overlap value cannot be greater than or equal to the
minimum of the sizes of these cells in the direction of the overlap.
The following options are available:
- left_to_center

Chapter 3: Runset Functions: J - Z


unified_fill() 3-848
IC Validator Reference Manual Version N-2017.12-SP2

- bottom_to_center

- center_to_right

- center_to_top

- center_to_center_x

- center_to_center_y
The overlap defines the distance between the left or bottom edge of bounding box
of the right or top component cell and the right or top edge of the bounding box of
the left or bottom component cell.
For one-dimensional expandable fill patterns, only the left_to_center,
center_to_right, and center_to_center_x options are considered during the
fill; that is, if the bottom_to_enter, center_to_top, or center_to_center_y
options are specified, they are ignored during the fill.
For two-dimensional expandable fill patterns, all of the overlap options are
considered. The same left_to_center value is applied to appropriate pairs of
components of the base cell:
- Left and center repeatable
- Bottom left and bottom center
- Top left and top center
Similarly, this value is applied to the center_to_right, center_to_center_x,
bottom_to_enter, center_to_top, and center_to_center_y options.

■ merging_cell. Defines a replacement cell with incremental unit cells. Use this
option for merging a one-dimensional replacement cell in two-dimensional fills.
The distance between cells must be equal to the pattern spacing requirement
defined in the pattern_spec option: space_y for vertical merging or space_x for
horizontal merging.
See the base_cell option for definitions of
- layers

- repeatable

- maximum

- maximum_y
Note: When you use the merging_cell option, the IC Validator tool ignores the
fill_to_fill_spacing and fill_to_signal_spacing values if they are
defined.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-849
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ merging_direction. Specifies the direction of the merge. The default is


VERTICAL.

- VERTICAL. Merges the cell vertically from bottom to top.

- HORIZONTAL. Merges the cell horizontally from left to right.

■ merging_length_limit. Specifies the maximum length (height or width) for


merged cells. This option is available only when the expansion_mode option is set
to BOUNDARY_EXPANSION. By default, the merged cell length is not limited.
The merging_length_limit value defines the height of the merged cell group if
merging_direction is set to VERTICAL or the width of the merged cell group If
merging_direction is set to HORIZONTAL.
The merging_length_limit option is not supported with the expansion length
limit options (length_limit_x, length_limit_y, cut_off_min_space_x, and
cut_off_min_space_y).

❍ stripe_fill. Optional. Defines striped fill to be used for fill pattern generation. To
use this type of fill, set the type option to UF_STRIPE.
■ layer_spec. Required. Defines a structure that contains specifics for a given
layer in a given pattern. See the layer_spec option of the polygon_fill option
for definitions of
- output_layer_key

- fill_to_signal_spacing (Note: The color_aware_to_fill option is used


only for polygon fills and adjustable fills.)
- fill_to_fill_spacing

■ direction. Specifies the direction of the stripes. The default is HORIZONTAL.

- HORIZONTAL.

- VERTICAL.

■ width. Specifies the width of the stripe.

■ spacing. Specifies the required spacing between stripes. The default is the value
of the width option.
■ symmetry. Optional. Specifies if this fill pattern is centered in a given fill region.
The default is false.
- true. Centers the fill pattern. The tool places the first stripe with its centerline
on the center of the bounding box, then place subsequent stripes at equal
distances from the center stripe. Only full width stripes are placed.
- false. Does not center the fill pattern.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-850
IC Validator Reference Manual Version N-2017.12-SP2

■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used
because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

■ other_pattern_spacing. Defines a hash of integer to constraint of double that


specifies the acceptable spacing distance to other patterns defined in the
unified_fill() function. See the other_pattern_spacing option of the
polygon_fill option for more information.

■ prune_jogs. Optional. Defines a list of jogs for pruning based on their horizontal
and vertical lengths. See the insertion option of the polygon_fill option for
more information.
■ reference_layer. Optional. Defines the reference point for a fill pattern. See the
insertion option of the polygon_fill option for more information.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-851
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ starting_point. Optional. Specifies the location in fillable regions from which


the fills are generated. See the insertion option of the polygon_fill option for
more information.
■ min_height. Specifies the minimum height of a stripe-shape fill.
In Figure 3-203, the yellow stripe shapes are maintained, as they satisfy the
minimum height requirement. The red rectangles identify the stripe shapes that
were removed because they were too small.
Figure 3-203 min_height Requirements

■ min_count. Specifies the minimum number of consecutive stripe-shape fills.


Counting is explained in the following steps. In Figure 3-204, the minimum count
is 6 and the stripe fill is vertical.
- First, a line is drawn perpendicular to the fill direction in each rectangular area
that makes up a fill region, as shown in Figure 3-204.
Figure 3-204 min_count Fill Region

- Next, the number of consecutive fill shapes that interact with the lines drawn in
Figure 3-204 are counted. To be considered consecutive fill shapes, the

Chapter 3: Runset Functions: J - Z


unified_fill() 3-852
IC Validator Reference Manual Version N-2017.12-SP2

distance between each stripe must be equal to the spacing option specified in
the stripe_fill option. In Figure 3-205, the number of consecutive fills in
line A is 3, line B is 7, line C is 3, line D is 4, and line E is 7.
Figure 3-205 min_count Consecutive Fills

- Finally, the stripe fills are adjusted so that the minimum count for each line is
met. The final result is shown in Figure 3-206.
Figure 3-206 min_count Adjustments

■ same_size_count. Specifies the number of consecutive fill shapes that must be


the same size. Figure 3-207 shows a stripe fill example without the
same_size_count option specified.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-853
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 3-207 same_size_count Stripe Fill Example

Set the same_size_count to 3, and the unified_fill() function adjusts the


condition, as shown in Figure 3-208:
Figure 3-208 same_size_count Adjustments

The fills are generated in a group of three stripe fills, all having the same size.
❍ expandable_cell_fill. Optional. Defines an expandable fill-cells pattern, in a GDS
file, that lets you insert fill cells that get expanded along the boundaries of a fill target
area. To use this type of fill pattern, you must first define a base fill cell with

Chapter 3: Runset Functions: J - Z


unified_fill() 3-854
IC Validator Reference Manual Version N-2017.12-SP2

incremental unit cells. See the Expandable Fill Cell Patterns section in the “Unified
Fill” chapter of the IC Validator User Guide for an example of expansion of a fill cell.
The expandable cell fill pattern type options are similar to the options of the same
name under the expandable_polygon_fill pattern; however, the layers suboption
has a different structure. The expandable cell fill pattern structure provides
expandable cells with file input definitions.
The cell member of the expandable_cell_component_s (base_cell* options)
structure must be obtained as an output of the import_gds_cell() or
import_oasis_cell() functions.
All fill requirements for fill patterns defined as expandable_cell_fill are the same
as for fill patterns defined as expandable_polygon_fill.
■ pattern_spec. Defines the spacing and stagger of the pattern being inserted.
See the pattern_spec option of the polygon_fill option for definitions of
- space_x, except that the value must be greater than zero (>0) if the
hierarchical_fill option is false.

- space_y, except that the value must be greater than zero (>0) if the
hierarchical_fill option is false.

- stagger_x

- stagger_y

- pattern_spacing

- other_pattern_spacing
The pattern_spec option of the expandable_cell_fill option also provides
the following options:
- length_limit_x. Optional. Limits the length of the fill array in the x-direction.
This option is valid only when the cut_off_min_space_x option is also
included.
- length_limit_y. Optional. Limits the length of the fill array in the y-direction.
This option is valid only when the cut_off_min_space_y option is also
included.
- cut_off_min_space_x. Optional. Defines the space between two fill arrays in
the x-direction.
- cut_off_min_space_y. Optional. Defines the space between two fill arrays in
the y-direction.
■ base_cell. Defines a base fill cell with incremental unit cells.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-855
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

If this option is specified and the base_cell_top and base_cell_bottom options


are not specified, then a one-dimensional fill cell is defined. If the base_cell_top
and base_cell_bottom options are specified, then a two-dimensional base fill is
defined. This cell must contain exactly three cells: left, repeatable, and right for
horizontal expansion or bottom, repeatable, and top for vertical expansion.
The base_cell_direction option controls the direction of the expansion for
one-dimensional fill cells. To control the expansion size, use the maximum option
for a horizontal fill cell or the maximum_y option for a vertical fill cell.
Note:
When you define a 2-dimensional fill cell, the base_cell_direction option is
ignored.
- cell. Specifies the cell from the cell handle that is returned by the
import_gds_cell() and import_oasis_cell() functions.

- layers. Required. Lists structures that define shapes per layer.

¤ layer_spec. Required. Defines a structure that contains specifics for a


given layer in a given pattern. See the layer_spec option of the
polygon_fill option for definitions of

 output_layer_key
 fill_to_signal_spacing (Note: The color_aware_to_fill option
is used only for polygon fills and adjustable fills.)
 fill_to_fill_spacing (Note: In the expandable_polygon_fill
option, the allowed_spacing_x option can have only one value in the
list.)
¤ ldt_list. Required. Lists the layer range and datatype range pairs. The
data_type_range value for each pair is optional, with a default of all
datatypes. See Layout Layer and Datatype Ranges for information about
the limits of the values.
¤ unbounded_ldt_list. Optional. Lists the layer range and datatype range
pairs of unbounded polygons. The data_type_range value for each pair is
optional, with a default of all datatypes. See Layout Layer and Datatype
Ranges for information about the limits of the values.
- repeatable. Required. Specifies if the cell can be repeated.

¤ true. Specifies that the cell is repeatable.


¤ false. Specifies that the cell is not repeatable.
- maximum. Defines the number of repetitions of a repeatable cell in the
x-direction. This value is used when the repeatable option is true. The

Chapter 3: Runset Functions: J - Z


unified_fill() 3-856
IC Validator Reference Manual Version N-2017.12-SP2

default is the maximal number of repetitions limited only by the filling area. The
specified value must be  0 (zero).
- maximum_y. Defines the number of repetitions of a repeatable cell in the
y-direction. This value is used when the repeatable option is true. The
specified value must be  0 (zero). The default is the maximal number of
repetitions limited only by the filling area.
■ base_cell_top. Defines a top base fill cell with incremental unit cells. Use this
option for two-dimensional fills. See the base_cell option for definitions of
- cell

- layers

- repeatable

- maximum

- maximum_y

■ base_cell_bottom. Defines a bottom base fill cell with incremental unit cells. Use
this option for two-dimensional fills. See the base_cell option for definitions of
- cell

- layers

- repeatable

- maximum

- maximum_y

■ base_cell_direction. Optional. Controls the expansion direction for


one-dimensional fills. The default is HORIZONTAL. See the base_cell_direction
option of the expandable_polygon_fill option for more information.
■ fill_context. Optional. Specifies the context of the insertion for the fill pattern.
The default is REGION_CONTEXT.
Note:
The SIGNAL_CONTEXT and LINEAR_CONTEXT options are not supported.
See the fill_context option of the polygon_fill option for definitions of
- REGION_CONTEXT

- CHIP_CONTEXT

- PARTITION_CONTEXT

Chapter 3: Runset Functions: J - Z


unified_fill() 3-857
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ insertion. Optional. Specifies insertion specifics for a given pattern. See the
insertion option of the polygon_fill option for definitions of

- iterations

- shift_factor

- symmetry

- auto_rotate

- starting_point

- prune_jogs

■ partition. Optional. Provides specifics for partitioning fill regions to produce


rectangular partitions. This option is used only if the fill_context option is
PARTITION_CONTEXT. The shift_factor and iterations options are not used
because they are only useful for nonrectangular target polygons. See the
partition option of the polygon_fill option for definitions of

- min_space

- min_space_x

- min_space_y

■ pitch. Optional. Refines the user-defined grid for this pattern, specifically for the
lower left of the extents of the fill shape. All other pattern features remain on the
global grid value. The default is the global grid value. See the pitch option of the
polygon_fill option for more information and for definitions of

- x

- y

- context_layer

■ hierarchical_fill. Optional. Specifies AREF output. The default is false. See


the hierarchical_fill option of the polygon_fill option for more information.
■ cell_prefix. Optional. Specifies the prefix for the created cell names that are
created from the hierarchical_fill option and from multilayer fill. The default
is "_FA".
■ fill_to_signal_spacing. Optional. Defines areas for fill that apply to all layers
in the pattern. If there are also fill_to_signal_spacing specifications for
specific layers, the most conservative values apply. See the
fill_to_signal_spacing option the layer_spec option of the layer option of
the polygon_fill option for definitions of
- signal_layer

Chapter 3: Runset Functions: J - Z


unified_fill() 3-858
IC Validator Reference Manual Version N-2017.12-SP2

- width_based_spacing

- min_space

- context

- min_space_x

- min_space_y

- width_based_spacing_x

- width_based_spacing_y

- color_aware_to_fill

- min_space_inside

- min_space_inside_x

- min_space_inside_y

- space_extension

- space_extension_x

- space_extension_y

- debug_layer_name
Note: The color_aware_to_fill option is used only for polygon fills and
adjustable fills.
■ expansion_mode. Optional. Controls the size of the generated fill array by
specifying the method used for fill expansion. The default is
BOUNDARY_EXPANSION.

- BOUNDARY_EXPANSION. Applies fill expansion only to the fill cells located next
to the boundary of the fillable region.
- MAX_EXPANSION. Applies fill expansion to all of the fill cells within fillable
region.
Note:
When MAX_EXPANSION is used, negative space_x and space_y values are not
allowed and the stagger_x and stagger_y options are not applicable.
The values of the repeatable options must be properly defined for each
component cell within the base cell, depending on whether the expandable cell is
one-dimensional or two-dimensional. If the values are not defined, the input
validation reports an error in the runset.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-859
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ fill_to_fill_spacing_direction. Optional. Controls how the expandable fill


process checks the fill-to-fill spacing with adjacent fill regions. The default is ALL.
- END_DIRECTION. Checks the spacing with fill regions in the expansion
direction only.
- ALL. Checks the spacing with all adjacent fill regions.

■ base_cell_overlap. Optional. Defines the overlaps between component cells in


each direction and the overlaps between repeated instances of center cell during
expansion. All specified overlap options must have positive values. For a pair of
overlapping cells, the overlap value cannot be greater than or equal to the
minimum of the sizes of these cells in direction of the overlap.
The following options are available:
- left_to_center

- bottom_to_center

- center_to_right

- center_to_top

- center_to_center_x

- center_to_center_y
The overlap defines the distance between the left or bottom edge of the bounding
box of the right or top component cell and the right or top edge of the bounding
box of the left or bottom component cell.
For one-dimensional expandable fill patterns, only the left_to_center,
center_to_right, and center_to_center_x options are considered during the
fill; that is, if the bottom_to_center, center_to_top, or center_to_center_y
options are specified, they are ignored during the fill.
For two-dimensional expandable fill patterns, all of the overlap options are
considered. The same left_to_center value is applied to appropriate pairs of
components of the base cell:
- Left and center repeatable
- Bottom left and bottom center
- Top left and top center
Similarly, this value is applied to the center_to_right, center_to_center_x,
bottom_to_enter, center_to_top, and center_to_center_y options.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-860
IC Validator Reference Manual Version N-2017.12-SP2

■ pattern_extent_for_spacing. Optional. Controls whether unbounded


polygons are included in fill_to_fill and fill_to_signal spacing checks.
The default is BOUNDED_EXTENT.
- BOUNDED_EXTENT. Uses only bounded polygons for fill_to_fill and
fill_to_signal spacing checks.

- ALL_EXTENT. Uses all polygons (bounded and unbounded) for fill_to_fill


and fill_to_signal spacing checks.
Note:
Spacing between patterns within the same fillable region, which is controlled
by space_x and space_y options of the pattern_spec option, is always
measured relative to the boundaries of bounded polygons only.

criteria
Optional. Defines fill target criteria for any combination of layers.
Limitation:
The criteria argument, along with the related delta_window, delta_x, delta_y,
gradient_delta_window, gradient_delta_x, gradient_delta_y,
fill_boundary, and window_layer arguments, is used only by the polygon,
adjustable, stack, and cell fills. The expandable cell and stripe fills do not use these
arguments.
For each item in the criteria list, you can use the default density equation or provide your
own function. This list is ignored if the height or width value of the delta_window
option is 0 (zero).
Note:
If the valid delta window is valid, then you must provide:
■ A target range, which is used for the default equation or a user-defined function.
■ At least one output key for a fill layer, which is used for the default equation or the
user-defined function.
■ At least one design layer for the default equation, or a user-defined function and
at least one item in the design layer hash, which is used by the function.
❍ target. Defines the target used for comparing to the values from the default equation
or window function.
■ range. Specifies the range of acceptable values.

■ target. Optional. Specifies the exact value.

❍ gradient. Defines the gradient window criteria. The values for comparison are
obtained from the default equation or window function. To turn off the gradient check
feature, specify a 0 for the width or height of the gradient delta window.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-861
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ range. Specifies the range of acceptable values. The default is <=0.05

■ comparison. Checks the gradient value based on a relative or absolute


difference. The default is ABSOLUTE.
- ABSOLUTE. Specifies that tolerances are checked based on an absolute value
difference.
- RELATIVE. Specifies that tolerances are checked based on a percentage
difference.
■ check_corner. Specifies if a corner-to-corner check is required. The default is
false.

❍ fill_layer_keys. Specifies output layer keys defined in the layer_spec option that
are used by the default equation or the user-defined window function. These keys
specify the fill layers that contributed to the value being returned. If the value is too
high, as compared to the target, one or more of the layers is removed, if possible. If
the value is too low, as compared to the target, one or more of the layers is added, if
possible. When using the window_function option, specify only one
fill_layer_keys value.

❍ design_layers. Optional. Specifies polygon layers that are used by the default
criteria equation. You must specify at least one layer for the default equation. This
option is not used for a user-defined window function.
❍ design_layers_hash. Optional. Specifies the hash of string to polygon layer, which
are design layers defined in the runset. These keys are used by the window function.
❍ window_function. Optional. Specifies the remote function containing the
programmable criteria equations. All the values returned are compared to the target
and gradient criteria. If a window function is not specified, the default equation is
used.
See “Unified Fill Utility Functions” on page 4-301 for more information about the utility
functions you can use to define a function.

delta_window
Optional. Specifies the subwindow stepped across each window layer polygon. The
density equations are evaluated within each subwindow. The default is the extents of
each window layer polygon.

delta_x
Optional. Specifies the delta_window subwindow step distance in the x-direction. The
default is the width option of the delta_window argument.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-862
IC Validator Reference Manual Version N-2017.12-SP2

delta_y
Optional. Specifies the delta_window subwindow step distance in the y-direction. The
default is the width option of the delta_window argument.

gradient_delta_window
Optional. Specifies the subwindow specific to gradient calculations stepped across each
window layer polygon. The criteria equations are evaluated within each subwindow. The
default is one quarter of the delta_window values.

gradient_delta_x
Optional. Specifies the gradient_delta_window subwindow step distance in the
x-direction. This is specific to gradient calculations. The default is the width option of the
delta_window argument.

gradient_delta_y
Optional. Specifies the gradient_delta_window subwindow step distance in the
y-direction. This is specific to gradient calculations. The default is the height option of
the delta_window argument.

fill_boundary
Optional. Specifies the extents of the fill operation, and restricts where the fill is inserted.
❍ type. Specifies the type of extents being used. The default is CHIP.

■ CHIP. Specifies the entire chip for the extents.

■ LAYER. Specifies a layer for the extents. All fill fits inside the data of the specified
layer.
■ WINDOW. Specifies a fixed window for the extents.

❍ layer. Specifies the polygon layer when the type option is LAYER.

❍ window. Uses left, bottom, right, and top values, to define the extents when the
type option is WINDOW.

window_layer
Optional. Specifies an optional boundary for density calculations. The default is the chip
extents.

grid
Optional. Specifies a user-defined grid. This grid applies to spacings, such as width,
height, x-direction space, shift and stagger, and y-direction space, shift and stagger,
specified in the fp_generate_fill() utility function. The default is 0.0; that is, the
internal resolution is used.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-863
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

boundary
Optional. Specifies how to process a delta_window subwindow that overlaps the
boundary of the extents of a window layer polygon. See the examples in the
fill_pattern() function for more information. The default is CLIP.

❍ CLIP. Truncates the subwindow at the limits of the window layer.

❍ ALIGN. If a subwindow overlaps the right side or top edge of the window layer, shifts
the window left or down until it no longer overlaps the window layer. The density
calculation is performed after the window is shifted.
❍ IGNORE. If a subwindow overlaps the right or top edges of the window layer boundary,
ignores the subwindow and does not output data for that subwindow location.
❍ REPLICATE_WINDOW. To simulate density measurements on a die, replicates the input
layers to properly measure density at the boundary of the chip. if a window overlaps
the right or top edges of the window layer polygons, then the window layer extent and
its data are duplicated and added to the right or top side of the original bounding box.
The density measurement on the boundary subwindow is calculated considering the
original data and the duplicated data.

extents_output
Optional. Specifies the creation of an extents layer for the fill in the output hash. The
default is that the tool does not create an extents layer.
❍ output_layer_key. Specifies an additional key for the output hash for the extents
output. This string cannot be equal to any of the keys defined in an
output_layer_key option.

❍ border. Specifies the distance to expand the extents in all directions. The default is 0.

❍ fill_layer_keys. Specifies the keys that are included in the extents output. These
keys must have been defined in an output_layer_key option for a fill layer. If the
output_layer_key option of the extents_output option is specified and the
fill_layer_keys list is empty, all output_layer_key keys for fill layers are
included.

debug_oasis_filename
Optional. Defines the name of the output OASIS file with debugging layers generated
based on the fill_to_signal_spacing settings. To output the debugging information
of fill regions, specify a set debug_oasis_filename to a valid OASIS file name. The
default is an empty string ("").

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-864
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
See the Unified Fill chapter of the IC Validator User Guide for examples of the
unified_fill() function.

Chapter 3: Runset Functions: J - Z


unified_fill() 3-865
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

vertex()
The vertex() function creates polygons that represent the specified vertices with the
specified output format.
Note:
For edge layers, a vertex is a point where the start of exactly one edge is coincident with
the end of exactly one edge, and the edges are not collinear.

Syntax
vertex(
layer1 = data_layer,
angles = {doubleconstraint, ...},
shape = TRIANGLE | DIAMOND | SQUARE_INSIDE |
SQUARE_OUTSIDE | SQUARE_CENTERED|
EXTENTS, //optional
shape_size = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

angles
Required. Specifies the angles that determine the vertices to find. Angle measurements
are made on the interior of the polygon or edge. The angles must be greater than 0 and
less than 360. A specification of 180 is ignored. See “Constraints” on page A-4 for more
information.

shape
Optional. Specifies the shape of the polygon generated at each selected vertex. The
default is SQUARE_CENTERED.
❍ TRIANGLE. The vertex is marked with a triangle that fills the inside of convex angles
and the outside of concave angles.
❍ DIAMOND. The vertex is marked with a diamond that is centered on the vertex.

❍ SQUARE_INSIDE. The vertex is marked with a square that is placed inside the
polygon, point touching the vertex.

Chapter 3: Runset Functions: J - Z


vertex() 3-866
IC Validator Reference Manual Version N-2017.12-SP2

❍ SQUARE_OUTSIDE. The vertex is marked with a square that is placed outside the
polygon, point touching the vertex.
❍ SQUARE_CENTERED. The vertex is marked with a square that is centered on the vertex.

❍ EXTENTS. The vertex is marked with extents boxes from the TRIANGLE shapes.

shape_size
Optional. Size of the output shape. The value must be positive. When shape is
SQUARE_CENTERED or DIAMOND, the value is rounded to the nearest even multiple of the
internal resolution, with a minimum of twice the internal resolution. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. Otherwise, the value is rounded to the nearest internal resolution unit,
with a minimum of one internal resolution unit. The default is DRC_ERROR_BOX, which has
a default of 0.1.
Note:
When shape = TRIANGLE, the sides of the triangle coincident with the input edges
are not longer than the edges forming the vertex.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.

Chapter 3: Runset Functions: J - Z


vertex() 3-867
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For the following examples, consider this polygon layer:

90 135 layerA
45 45 90
225 270 270
135
90 315 90

In the first check, the vertices meeting the angle requirements are in the created layer,
Result.
Result = vertex(layer1 = layerA, angles = {45, 90, 135},
shape = TRIANGLE, shape_size = 2);

layerA Result

In this second check, different angles are specified; the vertices meeting the angle
requirements are in the created layer, Result.
Result = vertex(layer1 = layerA, angles = {225, 270, 315},
shape = TRIANGLE);

layerA Result

In the third check, a square of shape_size = 2 is placed on all convex vertices.


Result = vertex(layer1 = layerA, angles = {(0,180)},
shape = SQUARE_CENTERED, shape_size = 2);

Chapter 3: Runset Functions: J - Z


vertex() 3-868
IC Validator Reference Manual Version N-2017.12-SP2

layerA Result

In the fourth check, a square of size = 2 is placed on all concave vertices.


Result = vertex(layer1 = layerA, angles = {(180,360)}, shape_size = 2);

layerA Result

See Also
polygon_centers()
polygon_features()
vertex_edge()

Chapter 3: Runset Functions: J - Z


vertex() 3-869
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

vertex_edge()
The vertex_edge() function selects layer1 edges that form the specified vertices. The
shape_size argument specifies the maximum length of the edge portion selected.
Note:
For edge layers, a vertex is a point where the start of exactly one edge is coincident with
the end of exactly one edge, and the edges are not collinear.

Syntax
vertex_edge(
layer1 = data_layer,
angles = {doubleconstraint, ...},
shape_size = double, //optional
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge or polygon layer.

angles
Required. Specifies the angles that determine the vertices to find. Angle measurements
are made on the interior of the polygon or edge. The angles must be greater than 0 and
less than 360. A specification of 180 is ignored. See “Constraints” on page A-4 for more
information.

shape_size
Optional. Maximum length of the output edges. The value must be positive. It is rounded
to the nearest internal resolution unit, with a minimum of one internal resolution unit. The
internal_resolution argument of the resolution_options() function sets the
internal resolution. The default is DRC_ERROR_BOX, which has a default of 0.1.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 3: Runset Functions: J - Z


vertex_edge() 3-870
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
vertex()

Chapter 3: Runset Functions: J - Z


vertex_edge() 3-871
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

vertices() and not_vertices()


The vertices() function selects polygons based on their number of vertices. The
complement of this function is the not_vertices() function.
Note:
Vertices are counted visually rather than the actual number of vertices required to digitize
a polygon.

Syntax
vertices(
layer1 = polygon_layer,
count = integerconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_vertices(
layer1 = polygon_layer,
count = integerconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

count
Required. Specifies the number of vertices. The value is an integer. See “Constraints” on
page A-4 for more information. The minimum value is 3.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

Chapter 3: Runset Functions: J - Z


vertices() and not_vertices() 3-872
IC Validator Reference Manual Version N-2017.12-SP2

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
In the following example, all data from layerA that has between six and eight vertices is
selected.
Result = vertices(layerA, count = [6,8]);

Input
layerA

Result

Output

See Also
vertices_edge() and not_vertices_edge()

Chapter 3: Runset Functions: J - Z


vertices() and not_vertices() 3-873
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

vertices_edge() and not_vertices_edge()


The vertices_edge() function selects edge chains based on their number of vertices. The
complement of this function is the not_vertices_edge() function.

Syntax
vertices_edge(
layer1 = edge_layer,
count = integerconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

not_vertices_edge(
layer1 = edge_layer,
count = integerconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

count
Required. Specifies the number of vertices. The value is an integer. See “Constraints” on
page A-4 for more information. The default is >0.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


vertices_edge() and not_vertices_edge() 3-874
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
x = vertices_edge(layer1 = gate_edge, count >1);

See Also
vertices() and not_vertices()

Chapter 3: Runset Functions: J - Z


vertices_edge() and not_vertices_edge() 3-875
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

violation_empty()
The violation_empty() function, which is a runtime-conditional function, is used within
flow control constructs. The function returns a value of true if the specified violation is empty;
otherwise, the function returns a value of false. Use this function to check whether a
particular function or group of functions produced error output.
Note:
Use of runtime-conditional functions might inhibit distributed scheduling and runset
optimization.

Syntax
violation_empty(
violation1 = violation
);

Returns
Boolean

Arguments
violation1
Required. Specifies the violation that is checked. The violation is usually the left side of
an @= assignment. For more information about violations, see the Violation Block
section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
v1 @= { @ "Rule 1.1"; external1(layer1, distance < 1.00); }

if (! violation_empty(v1)) {
@ "Rule 1.1.2";
note("External violations found on layer1, perform more checks");
internal1(layer1, distance < 0.5);
}

v2 @= {cdb1=text_net(connect_sequence=cdb1,
text_layer_items={{M1,M1_TEXT}});}
v2_shorts = get_text_shorted(v2);

Chapter 3: Runset Functions: J - Z


violation_empty() 3-876
IC Validator Reference Manual Version N-2017.12-SP2

if (! violation_empty(v2_shorts)) {
note("Text shorts found!");
}

See Also
layer_empty()
violations_empty()

Chapter 3: Runset Functions: J - Z


violation_empty() 3-877
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

violations_empty()
The violations_empty() function, which is a runtime-conditional function, is used to
check multiple violations within flow control constructs. The function returns a value of true
if all of the specified violations are empty; otherwise, the function returns a value of false.
Use this function to check whether a particular function or group of functions produced error
output.
Note:
Use of runtime-conditional functions might inhibit distributed scheduling and runset
optimization.

Syntax
violations_empty(
violations = {violation, ...}
);

Returns
Boolean

Arguments
violations
Required. Specifies the violations that are checked. A violation is usually the left side of
an @= assignment. For more information about violations, see the Violation Block
section in the IC Validator User Guide.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
v1 @= { @ "Rule 1: external check"; external1(l1, <= 0.1, NONE); }
v2 @= { @ "Rule 2: internal check"; internal1(l1, < 0.1, NONE); }
if (! violations_empty({v1, v2})) {
note("The external and/or internal check failed.");
}

See Also
layer_empty()
violation_empty()

Chapter 3: Runset Functions: J - Z


violations_empty() 3-878
IC Validator Reference Manual Version N-2017.12-SP2

wide()
The wide() function creates polygons that consist of the regions of layer1 which are wider
than the specified distance. When data is non rectilinear, the wide regions are ones that
can contain a circle with a diameter of the specified distance.

Syntax
wide(
layer1 = polygon_layer,
distance = doubleconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Specifies the minimum distance. It must be a positive value. See “Constraints”
on page A-4 for more information.
Note:
The only constraint operators allowed are > and >=.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


wide() 3-879
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
For example,
Result = wide(layerA, distance >= 5)

The results are the wide portions of polygons that contain the 5 m diameter circle.
Figure 3-209 wide() Function Examples
10.0 9.0

5.0
5.0

6.12
8.23

5.0
3.0
7.5 4.0
6.0

5.0 6.0

5.0 6.0
4.0 layerA Result

5.0 11.0

Chapter 3: Runset Functions: J - Z


wide() 3-880
IC Validator Reference Manual Version N-2017.12-SP2

See Also
internal1()
wide_edge()

Chapter 3: Runset Functions: J - Z


wide() 3-881
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

wide_edge()
The wide_edge() function creates edges that consist of layer1 edges which define regions
which are wider than the specified distance. When data is non rectilinear, the wide regions
are ones that can contain a circle with a diameter of the specified distance.

Syntax
wide_edge(
layer1 = polygon_layer,
distance = doubleconstraint,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the polygon layer.

distance
Required. Specifies the minimum distance. It must be a positive value. See “Constraints”
on page A-4 for more information.
Note:
The only constraint operators allowed are > and >=.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Chapter 3: Runset Functions: J - Z


wide_edge() 3-882
IC Validator Reference Manual Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DRC.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
wide_metal_edges = wide_edge(metal, distance > .5)

See Also
internal1_edge() and not_internal1_edge()
wide()

Chapter 3: Runset Functions: J - Z


wide_edge() 3-883
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_annotation_file()
The write_annotation_file() function generates a property annotation file that contains
flattened device instances and their corresponding environment-sensitive property values.
The environment-sensitive properties are specified in the properties argument of device
functions when the write_property_to option is ANNOTATION_FILE,
NETLIST_ANNOTATION_FILE_SPICE, or NETLIST_SKIP_PCELL.

Because the extraction of environment-sensitive properties requires the flattening of layout


hierarchy before compare, the purpose of the property annotation file is to store flattened
device instances and their associated properties into a file separate from the compare
netlist. In this way, the unflattened compare hierarchy is maintained, and the flattened
property annotation file can be passed to downstream tools, such as the StarRC tool, that
process environment-sensitive properties for simulation flows. This property annotation file
is used in the dual-hierarchy extraction flow that is initiated when the
dual_hierarchy_extraction argument of the init_device_matrix() function is true.
Note:
If you enable the dual-hierarchy extraction flow, but there is no
write_annotation_file() function call in your runset, the IC Validator tool generates
a default with the name, top_block_properties.gz, that uses a precision value of 6.
The annotation file has the following format:
*Property Annotation File Version: 1.0
*Created on: date
*Design: top_layout_cell

.SUBCKT cell_name
instance_name prop_name=prop_value [prop_name=prop_value ... ]
[instance_name prop_name=prop_value [prop_name=prop_value ... ]]
...
.ENDS

[
.SUBCKT cell_name
instance_name prop_name=prop_value [prop_name=prop_value ... ]
[instance_name prop_name=prop_value [prop_name=prop_value ... ]]
...
.ENDS
]

Each .SUBCKT section represents a cell retained during the dual-hierarchy extraction phase
that generates properties for the annotation file. (This phase is the simulation pass.) Each
line within the .SUBCKT section contains the full instance name followed by a list of property
names with a value for an individual MOSFET instance. The instance names correspond to
MOSFET instances contained in the layout extracted netlist generated by the netlist()
function.

Chapter 3: Runset Functions: J - Z


write_annotation_file() 3-884
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
write_annotation_file(
device_db = device_database,
output_file = property_annotation_file_handle,
precision = integer //optional
);

Returns
void

Arguments
device_db
Required. Specifies the device database from which the output file is generated. The
extract_devices() function generates this database.

output_file
Required. Specifies the annotation file handle. The handle is defined using the
property_annotation_file() function.

precision
Optional. Specifies the maximum number of significant figures reported in the output file.
The value can be from 1 through 15. The default is 6.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator licenses:
HERCULES_DEVICE and HERCULES_NETLIST.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

See Also
extract_devices()
property_annotation_file()

Chapter 3: Runset Functions: J - Z


write_annotation_file() 3-885
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_customized_spice()
The write_customized_spice() function invokes the netlist utility, icv_netlist, to generate
a SPICE netlist. The netlist data is created using the device database output from the
extract_devices() function and the polygon layers specified in the connect() function.
Therefore, call the write_spice() function after these functions.
Note:
The icv_netlist utility is in the IC Validator installation directory.
The write_customized_spice() function constructs SPICE instance names as described
in the following Description section.

Syntax
write_customized_spice(
device_db = device_database,
output_file = spice_netlist_file_handle,
model_name_format = NONE | INSTANCE_NAME | SPICE |
COMMENT, //optional
include_empty_cells = NONE | WITH_PORTS | ALL, //optional
precision = integer, //optional
error_report = BRIEF | VERBOSE, //optional
user_functions_file = "string", //optional
include_placement_data = true | false, //optional
flatten = true | false, //optional
compress_netlist = true | false //optional
);

Returns
void

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

output_file
Required. Specifies the SPICE handle. The handle is defined using the
spice_netlist_file() function.

model_name_format
Optional. Specifies how to write the model name on the device line in a SPICE netlist.
The default is COMMENT.
❍ NONE. The model name is not written.

Chapter 3: Runset Functions: J - Z


write_customized_spice() 3-886
IC Validator Reference Manual Version N-2017.12-SP2

❍ INSTANCE_NAME. The model name is appended to the instance name of the device.

❍ SPICE. The model name is written as the fourth field on the device line, just before the
value.
❍ COMMENT. The model name is written in a comment at the end of the device line in the
format: $.model=modelName.
For example,
NONE: C1 node1 node2 value
INSTANCE_NAME: C1_modelName node1 node2 value
SPICE: C1 node1 node2 modelName value
COMMENT: C1 node1 node2 value $.model=modelName
Note:
This argument applies only to capacitor, inductor, and resistor devices.

include_empty_cells
Optional. Specifies which empty cells are written to the cell.net file. Empty cells do not
have devices or instances. A cell is always written out when it is defined as an
equivalence or black-box cell. The default is NONE.
❍ NONE. Does not write empty cells to the cell.net file.

❍ WITH_PORTS. Writes empty cells that have ports to the cell.net file.

❍ ALL. Writes all empty cells to the cell.net file.

precision
Optional. Specifies the maximum number of significant figures reported in the output
SPICE netlist (cell.sp file) for all device properties. The value can be from 1 through 15.
The default is 6. When the precision argument is <=0, the IC Validator tool treats this
value as the default precision.

error_report
Optional. Specifies the verbosity of the error report. The information is written to
output_file.err. If, however, the output_file argument is not set, the default file name
cell.sp.err is used. The default is BRIEF.
❍ BRIEF. Writes only a summary, which contains the total count of layout names that
cannot be cross-referenced.
❍ VERBOSE. Writes details of cross-referencing errors, such as specific layout names
that cannot be cross-referenced.

Chapter 3: Runset Functions: J - Z


write_customized_spice() 3-887
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

user_functions_file
Optional. Specifies the file that contains the remote functions. See “Flexible Netlisting
Utility Functions” in Chapter 4 for more information about the utility functions you can use
to define a remote function.

include_placement_data
Optional. When set to true, the generated SPICE netlist includes coordinate information
for device instances, and coordinate and rotation information for cell instances. The cell
instance information is output for both the placement origin and the lower-left bounding
box position. The default is false.
The following device instance example shows where $X and $Y are the coordinates at
the center of body polygon:
MM0 1 4 3 3 p L=2e-06 W=1.2e-05 $X=11500 $Y=26500

The following cell instance example shows the $X and $Y lower-left bounding box
coordinates and the $T origin placement data:
$T=field1 field2 field3 field4 $X= field5 $Y= field6
field1 = x-coordinate of placement origin
field2 = y-coordinate of placement origin
field3 = reflection (0, 1)
field4 = rotation (0 90 180 270)
field5 = x-coordinate of lower-left
field6 = y-coordinate of lower-left
#the bounding-box of cell INV is (top=0.150000 bottom=-0.115000
#left=-0.120000 right=0.180000)
X1 A Z VDD VSS INV $T=0.82 -0.27 1 270 $X=0.67 $Y=-0.45

Instance X1 is a placement of master cell INV with bounding box = (-0.12 -0.115, 0.18,
0.15). It is placed on (0.82, -0.27) with reflection of 1 and rotation of 270 degrees. The
lower-left coordinate of the bounding box of X1 in the parent call is (0.67, -0.45).

compress_netlist
Optional. Compresses the output netlist generated using the write_spice() function.
The output file name is not altered from the user-specified name set in the
spice_netlist_file() function. The default is false.

flatten
Optional. Specifies if the netlist is flattened. The default is false. See the following
Description section for more information.
❍ true. Writes a flattened SPICE netlist.
Note:
When flatten is true, the model_name_format and user_functions_file
arguments of the write_spice() function are ignored.

Chapter 3: Runset Functions: J - Z


write_customized_spice() 3-888
IC Validator Reference Manual Version N-2017.12-SP2

❍ false. Writes a SPICE netlist that is not flattened.

Description
The IC Validator tool adds instance name prefixes, known as SPICE cards, to cell and
device names. The form of the prefix depends on the value of the flatten argument.
• flatten = true

❍ A hierarchical path name for a device is constructed using instance names originating
in the cell.net layout netlist generated by the netlist() function. A SPICE card
prefix is added to the hierarchical path name. The SPICE card prefix to be added is
defined by the prefix on the original device instance name in the preflattened netlist.
For example, the prefix for an NMOS device is “M_”.
The slash character (/) delineates hierarchical levels inside the flattened hierarchical
instance name.
• flatten = false

❍ All device instance names identically match names originating in the cell.net layout
netlist generated by the netlist() function. No additional SPICE card is added as a
prefix to the device instance name because the netlist() function already adds a
prefix to each device instance name with the appropriate SPICE card.
❍ An “x” prefix is added to cell instance names that originate in the cell.net layout netlist
generated by the netlist() function.

For example, prefixed names for an NMOS device are shown in Table 3-41.
Table 3-40 SPICE Instance Names With Prefixes for an NMOS Device

Instance name Output from the Output when Output when


netlist() function flatten = true flatten = false

Device instance name M1 M_l1/M1 M1

Cell instance name l1 (not applicable) xl1

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 3: Runset Functions: J - Z


write_customized_spice() 3-889
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_DEVICE and HERCULES_NETLIST.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
See the Examples section of the write_xref_spice() function for more information.

See Also
netlist()
read_layout_netlist()
schematic()
spice_netlist_file()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


write_customized_spice() 3-890
IC Validator Reference Manual Version N-2017.12-SP2

write_gds()
The write_gds() function writes layers and violations to a GDSII file. There can be multiple
write_gds() functions within a runset.
Note:
The GDSII format does not support 64-bit coordinates. Therefore, do not use the -64
command-line option with the write_gds() function.
The extract_devices() function modifies the input connect database with hierarchy
preprocessing, such as leveling and merging. In the write function, you can use the same
connect database from which the layout netlist is generated. Then, the net names in the
output layout match the netlist. Use the get_netlist_connect_database() function to
access the connect database.
Note:
Errors consisting of a single point or two points have polygon data generated for output
to the GDSII file. These polygons match what you see in VUE associated with these
errors (an X for a single point or a flyline for multiple points).
See the “Limits on Number of Vertices of a Polygon” section for information about writing out
large polygons.

Syntax
write_gds(
output_library =
gds_library_handle,
resolution =
double, //optional
holding_cell =
"string", //optional
output_cell =
"string", //optional
apply_prefix =
{OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
merge_input_layout = true | false, //optional
point_limit = integer, //optional
cell_prefix = "string", //optional
error_cell_prefix = "string", //optional
virtual_cells = KEEP | EXPLODE, //optional
layers = {{layer = layername,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
aref = {{cell = "string",
width = doubleconstraint,
height = doubleconstraint,
minimum_elements = integer,
replace = {{x = double, y = double}, ...}
}, ...
},
cell_suffix = "string",
user_defined_properties =
{double_properties = {{name = "string",
number = integer}, ...},

Chapter 3: Runset Functions: J - Z


write_gds() 3-891
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

string_properties = {{name = "string",


number = integer}, ...}},
compress_fill = {mode = NONE | AUTO,
cell = "string"},
name = "string"},
...}, //optional
errors = {{error = violation,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
cell_suffix = "string",
classifications = {"string", ...}},
...}, //optional
properties = {instance_name = integer,
net_name = integer,
internal_net_name = integer,
net_type = integer,
device_name = integer,
device_instance_name = integer,
device_terminal_instance_name = integer
}, //optional
connect_sequence = connect_database, //optional
magnification_factor = double, //optional
cell_suffix = "string", //optional
error_cell_suffix = "string", //optional
apply_suffix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
device_db = device_database, //optional
place_cells = {{cell = cell_handle,
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
layer_map_file = "string",
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}},
...}, //optional
output_generated_instance_names = true | false, //optional
exclude_from_generated_cell_names = {"string", ...}, //optional
hierarchy_output = ORIGINAL | INTERNAL //optional
);

Returns
void

Arguments
output_library
Required. Specifies the GDSII file handle. The handle is defined using the
gds_library() function.

Chapter 3: Runset Functions: J - Z


write_gds() 3-892
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Multiple write_gds() functions that have the same file name cause an overwrite of
the GDSII file.

resolution
Optional. Snaps output data to this resolution before it is written to the GDSII file. The
default is the input library resolution.

holding_cell
Optional. Generated top cell that references the output hierarchy from the run. This cell
is a generated holding cell; it does not contain any polygon or text data.
The holding cell contains both the error and layer cells. By default, error data is written to
cells with the ERR_ prefix and layers are written to the layout cell names. The error data
can be placed within the layer hierarchy if you change the ERR_ prefix to an empty
string ("") using the error_cell_prefix argument.

holding cell

ERR_cell_top_name cell_top_name(layers)

You can rename cell_top_name using the output_cell argument. For example, from
the previous example, you could change it to cell_top_new_name:

holding cell

ERR_cell_top_new_name cell_top_new_name(layers)

output_cell
Optional. Specifies the new name for the top cell of the design to be used in the output
library. The name should not conflict with existing cells in the design. The default name
is the original top cell name.

apply_prefix
Optional. Specifies the cells in the output library to which the prefix is applied. By default,
the IC Validator tool applies the prefix to the output cell and lower cells.
❍ OUTPUT_CELL. Specifies the prefix that is applied to the top cell of the design.

❍ LOWER_CELLS. Specifies the prefix that is applied to cells placed underneath the top
cell.

Chapter 3: Runset Functions: J - Z


write_gds() 3-893
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ HOLDING_CELL. Specifies the prefix that is applied to the holding cell.

merge_input_layout
Optional. Specifies if the input and generated GDSII files are merged. The default is
false.

❍ true. Merges the input and generated GDSII files to make the final output GDSII file.
The output GDSII file is a copy of the input GDSII file with the output of the specified
layers placed hierarchically at (0,0) under the top of the input cell. Set the
cell_prefix argument to give the output cells a name different from the original
input cells.
❍ false. Outputs only the generated file.

point_limit
Optional. Maximum number of points that a polygon can contain. Any polygon with more
than this amount is split. The value can be 0, which indicates no limit set, or from 6 to
600. If a value from 1 to 5 is specified, the point limit is 6; if a value greater than 600 is
specified, the point limit is 600. The default is 0.

cell_prefix
Optional. Specifies the prefix for all cell names written from the layers argument list.
This value can be overridden by the cell_prefix option inside of the layers argument
list. The default is an empty string (""); that is, no added prefix.

error_cell_prefix
Optional. Specifies the prefix for all cell names written from the errors argument list.
This value can be overridden by the cell_prefix option inside of the errors list. Set
this argument to “” if you do not want a prefix. The default is "ERR_".

virtual_cells
Optional. Specifies the action to take for virtual cells. The default is KEEP.
❍ KEEP. Virtual cells are kept and written to the output library. The output hierarchy
contains references to virtual cells.
❍ EXPLODE. All data and placements from virtual cells are exploded to the first parent
design cell before writing to the output library. The output hierarchy does not contain
references to virtual cells.

layers
Optional. Lists the layers to write to the GDSII file along with mapping and prefix
information.

Chapter 3: Runset Functions: J - Z


write_gds() 3-894
IC Validator Reference Manual Version N-2017.12-SP2

❍ layer. Specifies the layer. This layer can be an edge, polygon, or text layer.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See Layout Layer and Datatype Ranges for information about the limits
of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the cell_prefix argument.
❍ aref. Optional. Lists the regular patterns of rectangles to be converted into arrayed
structures. You can specify multiple patterns per layer. This behavior is a cell-level
operation, and it is typically used to reduce the size of the output layout by converting
flat fill to arrayed structures.
The IC Validator tool determines if rectangles that meet the provided dimensions,
specified in the width and height options, are in an arrayed pattern. These
rectangles with an arrayed pattern are replaced with a new cell containing a single
rectangle of the specified width and height dimensions. The origin of the new cell is
the lower-left corner of the rectangle. Any data in the layer that is not arrayed is output
unchanged.
The replace option allows the single rectangle in the new AREF (array reference)
cell to be replaced by specified polygons.
■ cell. Required. Names the new cells created when rectangles are grouped into
arrayed structures. The IC Validator tool adds a suffix if there is any conflict with
existing cells in the hierarchy or other new cells. For example, if the cell name is
icv_aref and there is a conflict, a suffix is added and the new cell is named
icv_aref_1. If there is a conflict with this name, the new cell is named icv_aref_2,
and so on.
■ width. Required. Width of the rectangles. See “Constraints” on page A-4 for more
information.
The IC Validator tool looks for all rectangles with a width equal to the width value
and height equal to the height value, and forms arrayed structures, if possible,
with 0-degree rotation. It also looks for rectangles with a height equal to the width
value and width equal to the height value, and forms arrayed structures, if
possible, with 90-degree rotation. Both the 0-degree and 90-degree array
placements point to the same created cell.
■ height. Required. Height of the rectangles. See “Constraints” on page A-4 for
more information.
■ minimum_elements. Optional. Minimum number of rectangles for an arrayed
structure to be formed. The IC Validator tool creates an SREF (structured

Chapter 3: Runset Functions: J - Z


write_gds() 3-895
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

reference) instead of an array placement when there is an arrayed structure of


only one rectangle. The default is 16.
■ replace. Optional. Lists the polygons that replace the rectangle in the new cells.
This feature allows a rectangle marker layer to be used to create arrayed
structures of more complex shapes in the output layout.
Note:
Setting the minimum_elements option to 1 ensures that all rectangles of the
specified width and height dimensions are replaced by a placement to a cell
with the polygons provided.
The list contains xy coordinate pairs for each created polygon. The coordinates
can be either
- Two coordinates, which are interpreted as the opposing corners of a rectangle.
- Three or more coordinates, which define the outer boundary of a closed
polygon. You do not need to repeat the first coordinate at the end of the list.
The coordinates can be ordered in either direction around the polygon.
Note:
Polygons, or portions of polygons with no area, are ignored. Areas of
self-intersection are left empty.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
write_gds(cell_suffix) argument.

❍ user_defined_properties. Optional. Specifies user-defined properties that are


written to specified property numbers. By default, the IC Validator tool does not write
any properties.
■ double_properties. Specifies the double value properties that are written to the
specified property numbers.
- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.
■ string_properties. Specifies the string value properties that are written to the
specified property numbers.
- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.
See the gds argument of the assign() function for more information.

Chapter 3: Runset Functions: J - Z


write_gds() 3-896
IC Validator Reference Manual Version N-2017.12-SP2

❍ compress_fill. Optional. Specifies the compression of fill by replacing blocks of fill


with a cell placement.
Note:
Each layer to be compressed must be specified with the layers argument and the
mode of the compress_fill option set to AUTO.
■ mode. Optional. Specifies the type of compression. The default is NONE.

- NONE. Does not compress the fill.

- AUTO. Compresses the fill. During the fill compression process, new cells are
created; some cells have only one fill rectangle and others have multiple fill
rectangles. The fill is compressed by replacing the fill data of these cells with
single and AREF placements, as appropriate.
■ cell. Required. Names the cell created when fill rectangles are grouped into a
sub cell. The IC Validator tool adds a suffix if there is any conflict with existing cells
in the hierarchy or other new cells. For example, if the cell name is specified as
icv_fill and there is a conflict, a suffix is added and the new cell is named icv_fill_1.
If there is a conflict with this name, the new cell is named icv_fill_2, and so on.
❍ name. Specifies the layer name used by the IC Validator tool for the data counts in the
summary file. The default behavior is to extract a name based on an internal
IC Validator file name used for the layer, which might not match the runset layer
variable name specified in the layer argument.

errors
Optional. Lists the errors written to the GDSII file along with mapping and prefix
information.
❍ error. Specifies the violation name for the error geometry.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See “Layout Layer and Datatype Ranges” on page A-6 for information
about the limits of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the error_cell_prefix argument.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
error_cell_suffix argument.

❍ classifications. Optional. Lists the error classifications that the IC Validator tool
uses to filter the violations for the specified output layer. For example, this argument

Chapter 3: Runset Functions: J - Z


write_gds() 3-897
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

allows you to write waived violations to one layer and unwaived violations to another
layer.
The valid error classifications are Error, Ignore, Waive, Watch, Fixed, and Debug.
By default, no error classification filtering is performed and all errors are written for the
output layer.
Note:
The error_limit_per_check argument of the error_options() function, which
has a default of 100, applies to all error output, including violations written using the
write_gds() function.

properties
Optional. Associates property numbers with specific properties for output. The property
numbers must be in the range of 0–255, inclusive. By default, the IC Validator tool does
not write any properties.
❍ instance_name. Optional. Specifies the property number to which cell instance
names are written. By default, the IC Validator tool does not write instance names.
❍ net_name. Optional. Specifies the property number to which polygon net names are
written. Either a connect database must be specified in the connect_sequence
argument or a device database must be specified in the device_db argument. By
default, the IC Validator tool does not write net names.
❍ internal_net_name. Optional. Specifies the property number to which internal net
names are written. The internal net name is the net prefix plus the base net number.
Either a connect database must be specified in the connect_sequence argument or
a device database must be specified in the device_db argument. By default, the
IC Validator tool does not write the internal net name.
❍ net_type. Optional. Specifies the property number to which polygon net types are
written. If a polygon’s net connects up or down the hierarchy, the property value is
“IO”; otherwise, the property is not set. Either a connect database must be specified
in the connect_sequence argument or a device database must be specified in the
device_db argument. By default, the IC Validator tool does not write the net type.

❍ device_name. Optional. Specifies the property number to which device names


associated with the device body or terminal polygon are written. A device database
must be specified in the device_db argument. By default, the IC Validator tool does
not write the device name.
❍ device_instance_name. Optional. Specifies the property number to which device
instance names associated with device body polygons are written. A device database
must be specified in the device_db argument. If more than one device is associated
with a polygon, the polygon gets multiple properties in the output. By default, the
IC Validator tool does not write the device instance name.

Chapter 3: Runset Functions: J - Z


write_gds() 3-898
IC Validator Reference Manual Version N-2017.12-SP2

❍ device_terminal_instance_name. Optional. Specifies the property number to


which device instance names associated with the device terminal polygon are written.
A device database must be specified in the device_db argument. If more than one
device is associated with a polygon, the polygon gets multiple properties in the
output. By default, the IC Validator tool does not write the device terminal instance
name.

connect_sequence
Optional. Specifies the connect database used to output net name and type properties
when the properties argument is used. If you specify both the connect_sequence and
the device_db arguments, the connectivity in the device database is used.

magnification_factor
Optional. The output coordinates are multiplied by this factor before writing to the output
library. A magnification factor between 0.0 and less than 1.0 shrinks data. A
magnification factor greater than 1.0 enlarges data. The default is 1.0 (no magnification).

cell_suffix
Optional. Suffix for all cell names written from the layers argument list. This value can
be overridden by the cell_suffix option inside of the layers argument list. The default
is an empty string ("").

error_cell_suffix
Optional. Suffix for all cell names written from the errors argument list. This value can
be overridden by the cell_suffix option inside of the errors argument list. Set this
value to an empty string ("") if you do not want a suffix. The default is "ERR_".

apply_suffix
Optional. Specifies the cells in the output library to which the suffix is applied. By default,
the IC Validator tool applies the suffix to the output cell and lower cells.
❍ OUTPUT_CELL. Suffix is applied to the top cell of the design.

❍ LOWER_CELLS. Suffix is applied to cells placed underneath the top cell.

❍ HOLDING_CELL. Suffix is applied to the holding cell.

device_db
Optional. Specifies a device database used to output device name properties when the
properties argument is used. If you are writing the device name, device instance
name, or device terminal instance name, you must specify a device database. The
extract_devices() function generates a device database. If you specify both the
connect_sequence and the device_db arguments, the connectivity in the device
database is used.

Chapter 3: Runset Functions: J - Z


write_gds() 3-899
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

place_cells
Optional. Places complex fill cells programmatically, instead of layer-by-layer fill, into the
output layout based on a marker layer containing rectangles. A layer consisting of
rectangles is converted into placements of predefined fill cells containing arbitrary
polygons on multiple layers during data output.
The imported cell can be renamed to prevent cell name conflicts. The origin of the
placement is the lower-left corner of the rectangle.
❍ cell. Specifies the handle to the cell that is imported. The handle is created by the
import_gds_cell() or import_oasis_cell() function.

❍ marker_layer. Specifies the layer that has the rectangles which define the fill
placement.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ layer_map_file. Specifies a unified Milkyway layer mapping file that maps layers
from the imported fill cell to the output format. The color mappings are specific to
Milkyway and only apply when the output format is Milkyway. The other mappings can
be used for all output formats.
Note:
The unified Milkyway layer mapping file has backward compatible support for the
older Milkyway stream-in layer mapping file syntax.
The format of the Milkyway unified file is
■ Mapping for all data:

Chapter 3: Runset Functions: J - Z


write_gds() 3-900
IC Validator Reference Manual Version N-2017.12-SP2

A mwlayer[:mwdtype] gdsiilayer[:gdsiidtype]
■ Mapping for polygons:
D mwlayer[:mwdtype] gdsiilayer[:gdsiidtype]
■ Mapping for text:
T mwlayer[:mwdtype] gdsiilayer[:gdsiidtype]
■ Color mapping from gdsiidtype to SAME_COLOR:
M * *:gdsiidtype
■ Color mapping from gdsiidtype to MASK_ONE_HARD:
M1 * *:gdsiidtype
■ Color mapping from gdsiidtype to MASK_TWO_HARD:
M2 * *:gdsiidtype
The format of the Milkyway stream-in file is
■ DestLayer[:DestDatatype] SrcLayer[:SrcDatatype]
Note:
Comments are specified with a semicolon. All of the text following the semicolon
on the current line is part of the comment.
❍ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for an
example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the pattern.

■ false. Does not reflect the pattern.

❍ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

Chapter 3: Runset Functions: J - Z


write_gds() 3-901
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ shift. Optional. Specifies the shift of the pattern origin from the lower-left corner of
the marker layer rectangle. The default is {0.0, 0.0}; that is, the pattern is not
shifted.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

output_generated_instance_names
Optional. Specifies if instance names internally generated by the IC Validator tool are
written to the GDSII file in addition to instance names from the input layout. Instance
names are written out only if the instance_name option of the property argument is
defined. The default is true.
❍ true. Writes internally generated instance names to the GDSII file.

❍ false. Does not write internally generated instance names to the GDSII file.

exclude_from_generated_cell_names
Required. Specifies the list of strings that cannot be included in cell names generated
during multilayer fill compression. This does not apply to cell names generated by single
layer fill compression. Multilayer fill compression still calls single layer fill compression on
the remaining uncompressed data.

hierarchy_output
Optional. Specifies the type of cell to be exploded.
❍ ORIGINAL. Maintains the original hierarchy. This option explodes automatically the
vcells and any cells whose flat reference count is different than the original hierarchy.
❍ INTERNAL. Specifies the hierarchy used in the IC Validator tool. This is the current
behavior.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


write_gds() 3-902
IC Validator Reference Manual Version N-2017.12-SP2

Examples

Reflection and Rotation


Figure 3-210 shows reflection and rotation of a pattern. The red polygon is the marker layer
and the "F" shape is the polygon in the cell that replaces the marker.
• The origin of the rotation is the bottom left corner of the marker layer
• The reflection is performed on the x-axis.
In Figure 3-210,
A: reflection = false, rotation = ROTATE_0
B: reflection = false, rotation = ROTATE_90
C: reflection = false, rotation = ROTATE_180
D: reflection = false, rotation = ROTATE_270
E: reflection = true, rotation = ROTATE_0
F: reflection = true, rotation = ROTATE_90
G: reflection = true, rotation = ROTATE_180
H: reflection = true, rotation = ROTATE_270

Figure 3-210 Reflection and Rotation of a Pattern

A B C D

E F G H
Note:
You can use the shift option to move reflected and rotated cells so that they realign with
the marker boundaries.

Chapter 3: Runset Functions: J - Z


write_gds() 3-903
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Magnification Factor
Figure 3-211 illustrates the use of the magnification_factor argument for shrinking and
enlarging data. The example code is
a=gds_library("m1_shrink.gds");
write_gds(a,
layers = {{M1, {8,0}}},
magnification_factor=0.5
);

b=gds_library("m1_enlarge.gds");
write_gds(b,
layers = {{M1, {8,0}}},
magnification_factor=1.5
);

Figure 3-211 magnification_factor Argument Examples

output data before


magnification

0.5 1.5 result

Violation Output
Figure 3-212 illustrates how the errors argument outputs violation data to the GDSII file for
a single point or for a group of points connected by a flyline.
• For functions that generate violation data in terms of single points, the errors argument
generates an X that matches what you see in VUE. For example, the green lines are an
example for the net_select() function.
• For functions that generate a violation as a group of points connected by flylines, the
errors argument also generates the flyline in the GDSII file that matches what you see
in VUE. For example, the blue lines are an example for the text_net() function.

The example code is


cdb = connect({
{{M1, POLY}, CONT}
});

tcdb : connect_database;

Chapter 3: Runset Functions: J - Z


write_gds() 3-904
IC Validator Reference Manual Version N-2017.12-SP2

text_viol @= {
tcdb = text_net(cdb, {
{POLY, POLY_TEXT}
});
}

net_select_viol @= { @ "Net Select";


net_select(tcdb, not_connected_to_all={M1});
}

a=gds_library("out.gds");
write_gds(a,
layers = {
{CONT, {5,0}},
{POLY, {6,0}},
{M1, {8,0}},
{POLY_TEXT, {25,0}}
},
errors = {
{text_viol, {1,0}},
{net_select_viol, {2,0}}
},
error_cell_prefix = ""
);

Figure 3-212 Error Results for Layout Text Causing a Short

A A

M1

POLY
B B

CONT

text_viol

net_select_viol

Writing Instance Name and Net Name Properties


In this example, the connect_database argument to write instance name and net name
properties.
g = gds_library("out.gds");

Chapter 3: Runset Functions: J - Z


write_gds() 3-905
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_gds(
output_library = g,
connect_sequence = cdb1,
properties = {
net_name = 1,
instance_name = 2
},
layers = {
{m1, {1}},
{m2, {2}}
}
);

See Also
error_options()
gds_library()
gds_options()
get_netlist_connect_database()
resolution_options()

Chapter 3: Runset Functions: J - Z


write_gds() 3-906
IC Validator Reference Manual Version N-2017.12-SP2

write_group()
The write_group() function writes the specified layers into the specified output library.
Note:
There can be multiple write_group() functions within a runset. When multiple functions
have the same output library, the run stops and an error is reported.

Syntax
write_group(
output_library = group_library_handle,
layers = {{layer = layername, label = "string"},
...} //optional
);

Returns
void

Arguments
output_library
Required. Specifies a group library handle. The handle is defined using the
group_library() function.

layers
Optional. Lists the layers to write to the group library.
❍ layer. Specifies the layer. This layer can be an edge, polygon, or text layer.

❍ label. Specifies the string used to reference the saved layer by the read_group(),
read_group_edge(), and read_group_text() functions.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Example
See the read_group() function for an example of the write_group() function.

Chapter 3: Runset Functions: J - Z


write_group() 3-907
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
group_library()
read_group()
read_group_edge()
read_group_text()

Chapter 3: Runset Functions: J - Z


write_group() 3-908
IC Validator Reference Manual Version N-2017.12-SP2

write_milkyway()
The write_milkyway() function writes layers and violations to a Milkyway library. There
can be multiple write_milkyway() functions within a runset.
Note:
The Milkyway format does not support 64-bit coordinates. Therefore, do not use the -64
command-line option with the write_milkyway() function.
Errors consisting of a single point or two points have polygon data generated for output to
the Milkyway library. These polygons match what you see in VUE associated with these
errors (an X for a single point or a flyline for multiple points).
Note:
See the “Runtimes and Memory Use Report” section in the Licensing and Resource
Requirements chapter of the IC Validator User Guide for information about the reported
Milkyway memory usage.
See the “Limits on Number of Vertices of a Polygon” section for information about writing
out large polygons.

Syntax
write_milkyway(
output_library = milkyway_library_handle,
holding_cell = "string", //optional
output_cell = "string", //optional
apply_prefix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL}, //optional
view = "string", //optional
mode = APPEND | APPEND_NEW_VERSION | OVERWRITE, //optional
technology_file = "string", //optional
net_id = true | false, //optional
connect_sequence = connect_database, //optional
cell_prefix = "string", //optional
error_cell_prefix = "string", //optional
virtual_cells = KEEP | EXPLODE, //optional
boundary_layer = polygon_layer, //optional
layers = {{layer = layername,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
route_type = route_type,
aref = {{cell = "string",
width = doubleconstraint,
height = doubleconstraint,
minimum_elements = integer,
replace = {{x = double, y = double}, ...}},
...},
convert_to = NONE | WIRE | RECT,
cell_suffix = "string",
attach_properties = {{assign_layer = data_layer,
properties = {OWNER_NET, ROUTE_TYPE}

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-909
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

}, ...},
boolean_attributes = {{name = "string",
value = true | false}, ...},
double_attributes = {{name = "string",
value = double}, ...},
float_attributes = {{name = "string",
value = double}, ...},
integer_attributes = {{name = "string",
value = integer}, ...},
string_attributes = {{name = "string",
value = "string"}, ...},
color = color,
compress_fill = {mode = NONE | AUTO,
cell = "string"},
error_layer_format = DATA | ERRORS},
...}, //optional
errors = {{error = violation,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
route_type = route_type,
cell_suffix = "string",
classifications = {"string", ...}},
...}, //optional
output_hierarchy = true | false, //optional
update_technology_file = true | false, //optional
magnification_factor = double, //optional
instance_name = {write = true | false,
conflict = ABORT | SKIP | RENAME}, //optional
cell_suffix = "string", //optional
error_cell_suffix = "string", //optional
apply_suffix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
place_cells = {{cell = cell_handle,
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
layer_map_file = "string",
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}},
...}, //optional
layer_mode = AUTO | NORMAL | EXTENDED, //optional
datatype_mode = AUTO | NORMAL | EXTENDED, //optional
exclude_from_generated_cell_names = {"string", ...}, //optional
hierarchy_output = ORIGINAL | INTERNAL //optional
);

Returns
void

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-910
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
output_library
Required. Specifies the Milkyway library handle. The handle is defined using the
milkyway_library() function.

holding_cell
Optional. Specifies the generated top cell that references the output hierarchy from the
run. This cell is a generated holding cell; it does not contain any polygon or text data.
The holding cell contains both the error and layer cells. By default, error data is written to
cells with the ERR_ prefix and layers are written to the layout cell names. The error data
can be placed within the layer hierarchy if you change the ERR_ prefix to an empty string
("") using the error_cell_prefix argument. See the holding_cell argument of the
write_milkyway() function for more information.

output_cell
Optional. Specifies a new name for the top cell of the design to be used in the output
library. The name should not conflict with existing cells in the design. The default name
is the original top cell name.

apply_prefix
Optional. Specifies the cells in the output library to which the prefix is applied. By default,
the IC Validator tool applies the prefix to the output cell and lower cells.
❍ OUTPUT_CELL. Specifies the prefix that is applied to the top cell of the design.

❍ LOWER_CELLS. Specifies the prefix that is applied to cells placed underneath the top
cell.
❍ HOLDING_CELL. Specifies the prefix that is applied to the holding cell.

view
Optional. Names the view created to store graphical output. The default is "HOUT".

mode
Optional. Specifies the action for when the library already exists. The default is
OVERWRITE.

❍ APPEND. When you write data into a cell that already exists in the target Milkyway
library, the cell has both the old and new data.
❍ APPEND_NEW_VERSION. When you write data into a cell that already exists in the target
Milkyway library, the cell has both the old and new data. In addition, due to the
Milkyway version system, a previous version of the same cell is also stored in the
library.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-911
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ OVERWRITE. Specifies that the previously read library is overwritten.

technology_file
Optional. Specifies the technology file used if a new Milkyway library is being created. If
appending to an existing Milkyway library, its technology information is used. If this
argument is not specified and the input library was Milkyway, the technology information
from the input library is used; otherwise a default technology file is created. Output layers
that do not exist in the technology information of the target library are appended. If you
do not want to update the Milkyway technology file, set the update_technology_file
argument to false.

net_id
Optional. Specifies if the net ID is generated for rectangle and polygon data. The connect
database that generated the nets must be specified in the connect_sequence argument.
The default is false.

connect_sequence
Optional. Specifies the connect database that contains net information used for
outputting net IDs when the net_id argument is true.

cell_prefix
Optional. Specifies the prefix for all cell names written from the layers argument list.
This value can be overridden by the cell_prefix option inside of the layers argument
list. The default is an empty string (""); that is, no added prefix.

error_cell_prefix
Optional. Specifies the prefix for all cell names written from the errors argument list.
This value can be overridden by the cell_prefix option inside of the errors argument
list. Set this value to an empty string ("") if you do not want a prefix. The default is
"ERR_".

virtual_cells
Optional. Specifies the action to take for virtual cells. The default is KEEP.
❍ KEEP. Virtual cells are kept and written to the output library. The output hierarchy
contains references to virtual cells.
❍ EXPLODE. All data and placements from virtual cells are exploded to the first parent
design cell before writing to the output library. The output hierarchy does not contain
references to virtual cells.

boundary_layer
Optional. Specifies the boundary layer. When the boundary layer is specified, the
write_milkyway() function uses polygons from the boundary layer as cell boundaries

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-912
IC Validator Reference Manual Version N-2017.12-SP2

in the output layout. If there is no polygon in a given cell in the boundary layer, the default
behavior applies. The default behavior is that the write_milkyway() function uses a
rectangle representing the extents of the cell's data and all of its children as the
boundary. If a cell and all of its children contain no data other than the boundary layer
polygon, that cell is omitted from the output layout.

layers
Optional. Lists the layers to write to the Milkyway library along with mapping, prefix, and
attribute information.
❍ layer. Specifies the layer name. This layer can be an edge, polygon, or text layer.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See “Layout Layer and Datatype Ranges” on page A-6 for information
about the limits of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the cell_prefix argument.
❍ route_type. Optional. Specifies the route type to set when writing rectangles from
this layer. By default, the IC Validator tool uses the FILL_TRACK route type when
writing rectangles to the FILL view and does not set the route type for other views.
See Table 3-18 for a list of route types.
❍ aref. Optional. Lists the regular patterns of rectangles to be converted into arrayed
structures. You can specify multiple patterns per layer. This behavior is a cell-level
operation. This feature is typically used to reduce the size of the output layout by
converting flat fill to arrayed structures.
The IC Validator tool determines if rectangles that meet the provided dimensions,
specified in the width and height options, are in an arrayed pattern. These
rectangles with an arrayed pattern are replaced with a new cell containing a single
rectangle of the specified width and height dimensions. The origin of the new cell is
the lower-left corner of the rectangle. Any data in the layer that is not arrayed is output
unchanged.
The replace option allows the single rectangle in the new AREF (array reference)
cell to be replaced by specified polygons.
■ cell. Required. Names new cells created when rectangles are grouped into
arrayed structures. The IC Validator tool adds a suffix if there is any conflict with
existing cells in the hierarchy or other new cells. For example, if the cell name is
icv_aref and there is a conflict, a suffix is added and the new cell is named
icv_aref_1. There is a conflict with this name, the new cell is named icv_aref_2,
and so on.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-913
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ width. Required. Width of the rectangles. See “Constraints” on page A-4 for more
information.
The IC Validator tool looks for all rectangles with a width equal to the width value
and height equal to the height value, and forms arrayed structures, if possible,
with 0-degree rotation. It also looks for rectangles with a height equal to the width
value and width equal to the height value, and forms arrayed structures, if
possible, with 90-degree rotation. Both the 0-degree and 90-degree array
placements point to the same created cell.
■ height. Required. Height of the rectangles. See “Constraints” on page A-4 for
more information.
■ minimum_elements. Optional. Minimum number of rectangles for an arrayed
structure to be formed. The IC Validator tool creates an SREF (structured
reference) instead of an array placement when there is an arrayed structure of
only one rectangle. The default is 16.
■ replace. Optional. Lists the polygons that replace the rectangle in the new cells.
This behavior allows a rectangle marker layer to be used to create arrayed
structures of more complex shapes in the output layout.
Note:
Setting minimum_elements option to 1 ensures all rectangles of the specified
width and height dimensions are replaced by a placement to a cell with the
polygons provided.
The list contains xy coordinate pairs for each created polygon. The coordinates
can be either
- Two coordinates, which are interpreted as the opposing corners of a
rectangle.
- Three or more coordinates, which define the outer boundary of a closed
polygon. You do not need to repeat the first coordinate at the end of the list.
The coordinates can be ordered in either direction around the polygon.
Note:
Polygons, or portions of polygons with no area, are ignored. Areas of
self-intersection are left empty.
❍ convert_to. Optional. Indicates if data should be written as a wire or as a rectangle
rather than a polygon. The default is NONE.
Note:
The WIRE option can be used only when writing to the CEL view. If you are
appending to an existing cell by setting the mode argument to APPEND, the cell
must be Milkyway schema version 5.0 or greater.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-914
IC Validator Reference Manual Version N-2017.12-SP2

When set to WIRE,


■ The IC Validator tool converts all rectilinear data in the top cell to wires. Data in
lower-level cells is not converted.
■ Each wire is stored as either a vertical wire (VWIRE) or a horizontal wire (HWIRE).
■ Odd width rectangles are represented as two overlapping wires.
■ If data that cannot be converted to a wire is encountered, such as a
nonrectangular polygon or a 1x1 rectangle, the IC Validator tool gives a
WARNING message and writes the shape unconverted.
■ The IC Validator tool makes no attempt to connect the centerlines of the wires.
The footprint of the output data exactly matches the polygons from the input layer,
but the orientation, length, and width of the wires is arbitrary.
When set to RECT,
■ The IC Validator tool puts all polygons that can be decomposed into rectangles
into the Milkyway library as rectangles with the correct properties.
■ Polygons that are not rectilinear or can otherwise not be decomposed into
rectangles remain as polygons.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
write_milkyway(cell_suffix) argument.

❍ attach_properties. Optional. Lists the properties to attach to output shapes on this


layer based on the interaction with a specified assign layer. Properties to be attached
must have been specified in the keep_properties option list of the assign layer. By
default, the IC Validator tool does not attach any properties.
■ assign_layer. Specifies the layer from which the properties are attached. This
layer must be the output of the assign() function.
■ properties. Optional. Specifies which properties are attached. These properties
must have been present in the keep_properties option list in the assign()
function. By default, the IC Validator tool does not attach any properties.
- OWNER_NET. Output shapes are assigned to nets based on assign layer shapes
that they interact with. If an output shape interacts with multiple input shapes
having different nets, one is chosen arbitrarily and a warning is reported. See
the milkyway argument of the assign() function for more information.
- ROUTE_TYPE. Output shapes are assigned a route type based on assign layer
shapes that they interact with. If an output shape interacts with multiple input
shapes having different route types, a predefined precedence is used to

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-915
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

determine which route type the output shape takes, and a warning is reported.
See the milkyway argument of the assign() function for more information.
Note:
Only certain types of objects can be given a route type in Milkyway libraries:
rectangles, wires, paths, contacts, and contact arrays. To break down
polygons into constituent rectangles so that they can be given a route type, set
the convert_to option to RECT.
In the following example, layer m1_ext is written to Milkyway layer 31, with
OWNER_NET and ROUTE_TYPE properties attached based on the properties of the m1
shapes with which m1_ext interacts.
m = milkyway_library("OUT");
write_milkyway(
output_library = m,
output_cell = "c",
view = "CEL",
layers = {
{m1_ext,
{31},
attach_properties = {{m1, {OWNER_NET, ROUTE_TYPE}}}
}
}
);

❍ boolean_attributes. Optional. Creates Boolean attributes for the specified layer.


All shapes on the layer have the same Boolean attribute name and value.
Note:
An error occurs if an attribute of the same name is redefined as a different type.
This behavior includes appending to an existing Milkyway library where the
attribute is already defined.
■ name. Specifies the attribute name.

■ value. Specifies the Boolean value, true or false.

❍ double_attributes. Optional. Creates double attributes for the specified layer. All
shapes on the layer have the same double attribute name and value.
Note:
An error occurs if an attribute of the same name is redefined as a different type.
This behavior includes appending to an existing Milkyway library where the
attribute is already defined.
■ name. Specifies the attribute name.

■ value. Specifies the attribute value, which is a double.

❍ float_attributes. Optional. Creates float attributes for the specified layer. All
shapes on the layer have the same float attribute name and value.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-916
IC Validator Reference Manual Version N-2017.12-SP2

Note:
An error occurs if an attribute of the same name is redefined as a different type.
This behavior includes appending to an existing Milkyway library where the
attribute is already defined.
■ name. Specifies the attribute name.

■ value. Specifies the attribute value, which is a floating point.

❍ integer_attributes. Optional. Creates integer attributes for the specified layer. All
shapes on the layer have the same integer attribute name and value.
Note:
An error occurs if an attribute of the same name is redefined as a different type.
This behavior includes appending to an existing Milkyway library where the
attribute is already defined.
■ name. Specifies the attribute name.

■ value. Specifies the attribute value, which is an integer.

❍ string_attributes. Optional. Creates string attributes for the specified layer. All
shapes on the layer have the same string attribute name and value.
Note:
An error occurs if an attribute of the same name is redefined as a different type.
This behavior includes appending to an existing Milkyway library where the
attribute is already defined.
■ name. Specifies the attribute name.

■ value. Specifies the attribute value, which is a string.

❍ color. Optional. Applies the specified Milkyway library color attribute to the output
layer. Table 2-2 lists the attributes. By default, the IC Validator tool reads data of all
color attribute values
Note:
This feature is used in runsets that support double patterning technology (DPT).
See the two_color() function for more information. Use the colors option of the
milkyway argument of the assign() function to select the color attributes.

❍ compress_fill. Optional. Specifies the compression of fill by replacing blocks of fill


with a cell placement.
Note:
Each layer to be compressed must be specified with the layers argument and the
mode of the compress_fill option set to AUTO.
■ mode. Optional. Specifies the type of compression. The default is NONE.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-917
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

- NONE. Does not compress the fill.

- AUTO. Compresses the fill. During the fill compression process, new cells are
created; some cells have only one fill rectangle and others have multiple fill
rectangles. The fill is compressed by replacing the fill data of these cells with
single and AREF placements, as appropriate.
■ cell. Required. Names the cell created when fill rectangles are grouped into a
sub cell. The IC Validator tool adds a suffix if there is any conflict with existing cells
in the hierarchy or other new cells. For example, if the cell name is specified as
icv_fill and there is a conflict, a suffix is added and the new cell is named icv_fill_1.
If there is a conflict with this name, the new cell is named icv_fill_2, and so on.
❍ error_layer_format. Optional. Specifies how layers of type error_layer are written.
The default is DATA.
■ DATA. Specifies that errors are written as either zero-width paths or boundaries
depending on the type of error. The shapes that are written can be viewed in a
layout editor.
■ ERROR. Specifies a setting for an internal IC Validator flow and should not be used
by the customer.

errors
Optional. Lists the errors written to the Milkyway library along with mapping and prefix
information.
❍ error. Specifies the violation name for the error geometry.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See Layout Layer and Datatype Ranges for information about the limits
of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the error_cell_prefix argument.
❍ route_type. Optional. Specifies the route type to set when writing rectangles from
this layer. By default, the IC Validator tool uses the FILL_TRACK route type when
writing rectangles to the FILL view and does not set the route type for other views.
See Table 3-18 for a list of route types.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
error_cell_suffix argument.

❍ classifications. Optional. Lists the error classifications that the IC Validator tool
uses to filter the violations for the specified output layer. For example, this argument

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-918
IC Validator Reference Manual Version N-2017.12-SP2

allows you to write waived violations to one layer and unwaived violations to another
layer.
The valid error classifications are Error, Ignore, Waive, Watch, Fixed, and Debug.
By default, no error classification filtering is performed and all errors are written for the
output layer.

output_hierarchy
Optional. Controls the writing of cell references into the Milkyway library. This argument
is typically set to false when the virtual_cells argument is EXPLODE and the mode
argument is APPEND so that polygon data can be appended to existing cells without
affecting the hierarchy. The default is true.

update_technology_file
Optional. When set to false, output layers are not appended to the technology data in
the output database. The default is true.

magnification_factor
Optional. The output coordinates are multiplied by this factor before writing to the output
library. A magnification factor between 0.0 and less than 1.0 shrinks data. A
magnification factor greater than 1.0 enlarges data. The default is 1.0 (no magnification).

instance_name
Optional. Specifies whether instance names are written.
❍ write. Optional. Specifies whether to write instance names. The default is true.
❍ conflict. Optional. Specifies what happens when a newly written instance name is in
conflict with an existing instance name. This situation is relevant only when you set
the mode argument to APPEND. The default is SKIP.
■ ABORT. Abort the run.

■ SKIP. Do not write the cell reference.

■ RENAME. Rename the new cell reference with a unique instance name.

cell_suffix
Optional. Suffix for all cell names written from the layers argument list. This value can
be overridden by the cell_suffix option inside of the layers argument list. The default
is an empty string ("").

error_cell_suffix
Optional. Suffix for all cell names written from the errors argument list. This value can
be overridden by the cell_suffix option inside of the errors argument list. Set this
value to an empty string ("") if you do not want a suffix. The default is "ERR_".

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-919
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

apply_suffix
Optional. Specifies the cells in the output library to which the suffix is applied. By default,
the IC Validator tool applies the suffix to the output cell and lower cells.
❍ OUTPUT_CELL. Suffix is applied to the top cell of the design.

❍ LOWER_CELLS. Suffix is applied to cells placed underneath the top cell.

❍ HOLDING_CELL. Suffix is applied to the holding cell.

place_cells
Optional. Places complex fill cells programmatically, instead of layer-by-layer fill, into the
output layout based on a marker layer containing rectangles. A layer consisting of
rectangles is converted into placements of predefined fill cells containing arbitrary
polygons on multiple layers during data output.
The imported cell can be renamed to prevent cell name conflicts. The origin of the
placement is the lower-left corner of the rectangle.
❍ cell. Specifies the handle to the cell that is imported. The handle is created by the
import_gds_cell() or import_oasis_cell() function.

❍ marker_layer. Specifies the layer that has the rectangles which define the fill
placement.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ layer_map_file. Specifies a unified Milkyway layer mapping file that maps layers
from the imported fill cell to the output format. The color mappings are specific to

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-920
IC Validator Reference Manual Version N-2017.12-SP2

Milkyway and only apply when the output format is Milkyway. The other mappings can
be used for all output formats.
Note:
The unified Milkyway layer mapping file has backward compatible support for the
older Milkyway stream in layer mapping file syntax.
See the place_cells argument of the write_gds() function for information about
the format of the Milkyway unified file.
❍ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for an
example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the pattern.

■ false. Does not reflect the pattern.

❍ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

❍ shift. Optional. Specifies the shift of the pattern origin from the lower-left corner of
the marker layer rectangle. The default is {0.0, 0.0}; that is, the pattern is not
shifted.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

layer_mode
Optional. Specifies the Milkyway extended layer mode. The default is AUTO.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-921
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ AUTO. Specifies that

■ If the output library exists, the output Milkyway library is in the layer mode of the
output library. If a layer number used by the write_milkyway() function is out of
range for the output library, the IC Validator tool issues an error.
■ If the output library does not exist, the tool creates it in extended layer mode if the
input Milkyway library is in extended layer mode. Otherwise, the tool creates it in
normal layer mode. Layer range checking corresponds to the mode of the created
library.
❍ NORMAL. Specifies that the output Milkyway library is in normal layer mode. If the
output library exists in extended layer mode, the IC Validator tool issues an error.
Note:
Normal mode supports numbers up to 255.
Extended mode supports layer or datatype numbers up to 4095.
❍ EXTENDED. Specifies that the output Milkyway library is in extended layer mode. If the
output library exists in normal layer mode, the IC Validator tool issues an error.

datatype_mode
Optional. Specifies the Milkyway extended layer mode. The default is AUTO.
The IC Validator tool allows you to write a Milkyway library in extended datatype mode if
one of the following is true:
❍ The input library is in extended datatype mode.
❍ The destination library exists and is in extended datatype mode.
❍ The datatype_mode argument of the write_milkyway() function is EXTENDED.
Note:
Normal mode supports layer or datatype numbers up to 255.
Extended mode supports layer or datatype numbers up to 4095.
❍ AUTO. Specifies that

■ If the output library exists, the output Milkyway library is in the datatype mode of
the existing library. If a datatype number used by the write_milkyway() function
is out of range for the output library, the IC Validator tool issues an error.
■ If the output library does not exist, the tool creates it in extended datatype mode if
the input Milkyway library is in extended datatype mode. Otherwise, the tool
creates it in normal datatype mode. Datatype range checking corresponds to the
mode of the created library.

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-922
IC Validator Reference Manual Version N-2017.12-SP2

❍ NORMAL. Specifies that the output Milkyway library is in normal datatype mode. If the
output library exists in extended datatype mode, the IC Validator tool issues an error.
❍ EXTENDED. Specifies that the output Milkyway library is in extended datatype mode. If
the output library exists in normal datatype mode, the IC Validator tool issues an
error.

exclude_from_generated_cell_names
Required. Specifies the list of strings that cannot be included in cell names generated
during multilayer fill compression. This does not apply to cell names generated by single
layer fill compression. Multilayer fill compression still calls single layer fill compression on
the remaining uncompressed data.

hierarchy_output
Optional. Specifies the type of cell to be exploded.
❍ ORIGINAL. Maintains the original hierarchy. This option explodes automatically the
vcells and any cells whose flat reference count is different than the original hierarchy.
❍ INTERNAL. Specifies the hierarchy used in the IC Validator tool. This is the current
behavior.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
See the write_gds() function for examples of the errors and magnification_factor
arguments, and for an example that uses the connect_database argument to write
instance name and net name properties.

See Also
error_options()
get_netlist_connect_database()
milkyway_library()
milkyway_options()
resolution_options()

Chapter 3: Runset Functions: J - Z


write_milkyway() 3-923
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_ndm()
The write_ndm() function writes layers and violations to an NDM library. There can be
multiple write_ndm() functions within a runset.
Errors consisting of a single point or two points have polygon data generated for output to
the NDM library. These polygons match what you see in VUE associated with these errors
(an X for a single point or a flyline for multiple points).
See the “Limits on Number of Vertices of a Polygon” section for information about writing out
large polygons.

Syntax
write_ndm(
output_library = ndm_library_handle,
view = DESIGN_VIEW | FRAME_VIEW | LAYOUT_VIEW,
internal_design = {use = NONE | FILL_USE | FILL_BLOCKAGE_USE,
parent_cell = "string"},
holding_cell = "string", //optional
output_cell = "string", //optional
apply_prefix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL}, //optional
mode = APPEND | OVERWRITE, //optional
net_id = true | false, //optional
connect_sequence = connect_database, //optional
cell_prefix = "string", //optional
error_cell_prefix = "string", //optional
virtual_cells = KEEP | EXPLODE, //optional
layers = {{layer = layername,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
shape_use = ndm_shape_use,
cell_suffix = "string",
compress_fill = {mode = NONE | AUTO, cell = "string"},
mask = ndm_mask,
error_layer_format = {DATA | ERRORS},
attach_properties = {{assign_layer = data_layer,
properties =
{OWNER_NET, SHAPE_USE}}, ...}
}, ...}, //optional
errors = {{error = violation,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
shape_use = ndm_shape_use,
cell_suffix = "string",
mask = ndm_mask,
classifications = {"string", ...}},
...}, //optional
output_hierarchy = true | false, //optional
magnification_factor = double, //optional
instance_name = {write = true | false,

Chapter 3: Runset Functions: J - Z


write_ndm() 3-924
IC Validator Reference Manual Version N-2017.12-SP2

conflict = ABORT | SKIP | RENAME}, //optional


cell_suffix = "string", //optional
error_cell_suffix = "string", //optional
apply_suffix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
place_cells = {{cell = cell_handle,
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
layer_map_file = "string",
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}},
...}, //optional
technology_file = "string", //optional
missing_technology_layers = UPDATE | IGNORE | SKIP | ABORT, //optional
design_label = "string", //optional
exclude_from_generated_cell_names = {"string", ...}, //optional
hierarchy_output = ORIGINAL | INTERNAL //optional
);

Returns
void

Arguments
output_library
Required. Specifies the NDM library handle. The handle is defined using the
ndm_library() function.

view
Required. Writes output to the specified view.
❍ DESIGN_VIEW

❍ FRAME_VIEW

❍ LAYOUT_VIEW

internal_design
Optional. Specifies that data is written to internal designs underneath a top-level design
cell. The default is to not write output as internal designs. It is only used for fill.
❍ use. Optional. Specifies the internal design to be written. The default is NONE.

■ NONE. Specifies not writing output as internal designs; write output to design cells.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-925
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ FILL_USE. Specifies writing internal designs that are for fill. The internal designs
have the extension .FILL.
■ FILL_BLOCKAGE_USE. Specifies writing internal designs that are for fill blockage or
guidance. The internal designs have the extension .FILLBLKG.
❍ parent_cell. Optional. Specifies the name of the parent design cell in which the
internal designs are created. The default is the top cell name of the input library.
The hierarchy that is specified in the other write_ndm() arguments, such as
output_cell and holding_cell, is written as internal designs placed underneath
this design cell.

holding_cell
Optional. Specifies the generated top cell that references the output hierarchy from the
run. This cell is a generated holding cell; it does not contain any polygon or text data.
The holding cell contains both the error and layer cells. By default, error data is written to
cells with the ERR_ prefix and layers are written to the layout cell names. The error data
can be placed within the layer hierarchy if you change the ERR_ prefix to an empty string
("") using the error_cell_prefix argument. See the holding_cell argument of the
write_milkyway() function for more information.

output_cell
Optional. Specifies a new name for the top cell of the design to be used in the output
library. The name should not conflict with existing cells in the design. The default name
is the original top cell name.

apply_prefix
Optional. Specifies the cells in the output library to which the prefix is applied. By default,
the IC Validator tool applies the prefix to the output cell and lower cells.
❍ OUTPUT_CELL. Specifies the prefix that is applied to the top cell of the design.

❍ LOWER_CELLS. Specifies the prefix that is applied to cells placed underneath the top
cell.
❍ HOLDING_CELL. Specifies the prefix that is applied to the holding cell.

mode
Optional. Specifies the action for when the library already exists. The default is
OVERWRITE.

❍ APPEND. When you write data into a cell that already exists in the target NDM library,
the cell has both the old and new data.
❍ OVERWRITE. Specifies that any previously existing cells are overwritten.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-926
IC Validator Reference Manual Version N-2017.12-SP2

net_id
Optional. Specifies if the net ID is generated for rectangle and polygon data. The connect
database that generated the nets must be specified in the connect_sequence argument.
The default is false.

connect_sequence
Optional. Specifies the connect database that contains net information used for
outputting net IDs when the net_id argument is true.

cell_prefix
Optional. Specifies the prefix for all cell names written from the layers argument list.
This value can be overridden by the cell_prefix option inside of the layers argument
list. The default is an empty string (""); that is, no added prefix.

error_cell_prefix
Optional. Specifies the prefix for all cell names written from the errors argument list.
This value can be overridden by the cell_prefix option inside of the errors argument
list. Set this value to an empty string ("") if you do not want a prefix. The default is
"ERR_".

virtual_cells
Optional. Specifies the action to take for virtual cells. The default is KEEP.
❍ KEEP. Virtual cells are kept and written to the output library. The output hierarchy
contains references to virtual cells.
❍ EXPLODE. All data and placements from virtual cells are exploded to the first parent
design cell before writing to the output library. The output hierarchy does not contain
references to virtual cells.

layers
Optional. Lists the layers to write to the NDM library along with mapping, prefix, and
attribute information.
❍ layer. Specifies the layer name. This layer can be an edge, polygon, or text layer.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type value, which is
the layer purpose, for each pair is optional, with a default of 0. See Layout Layer and
Datatype Ranges for information about the limits of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the cell_prefix argument.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-927
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ shape_use. Optional. Specifies the shape use for shapes written to NDM for this
layer. The default is to not set a shape use. See Table 2-7 for a list of shape uses.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
cell_suffix argument of the write_ndm() argument function.

❍ compress_fill. Optional. Specifies the compression of fill by replacing blocks of fill


with a cell placement. There are two kinds of compression. The compress_fill
option turns on both of these.
■ Multilayer fill compression. Applies only to fill data that was originally created in
multilayer fill cells by the unified_fill() function.
■ Single layer fill compression. Applies to any fill data that was not created by the
unified_fill() function.
For data that contains multilayer fill created with the unified fill functionality, when the
multilayer fill is compressed, the IC Validator tool creates new cells in the output
library. The multilayer fill cells are not reused. The names of these new fill cells are
based on the multilayer fill cell from which they are derived. See the unified_fill()
function and the Unified Fill chapter of the IC Validator User Guide for information
about creating multilayer fill.
Note:
Each layer to be compressed must be specified with the layers argument and the
mode of the compress_fill option set to AUTO.
■ mode. Optional. Specifies the type of compression. The default is NONE.

- NONE. Does not compress the fill.

- AUTO. Compresses the fill. During the fill compression process, new cells are
created; some cells have only one fill rectangle and others have multiple fill
rectangles. The fill is compressed by replacing the fill data of these cells with
single and AREF (array reference) placements, as appropriate.
■ cell. Required. Names the cell created when fill rectangles are grouped into a
sub cell. The IC Validator tool adds a suffix if there is any conflict with existing cells
in the hierarchy or other new cells. For example, if the cell name is specified as
icv_fill and there is a conflict, a suffix is added and the new cell is named icv_fill_1.
If there is a conflict with this name, the new cell is named icv_fill_2, and so on.
❍ mask. Optional. Sets the multi-patterning mask to set for shapes written to NDM from
this layer. The default is not to set a multi-patterning mask. See Table 2-11 for a list of
the masks.
❍ error_layer_format. Optional. Specifies how layers of type error_layer are written.
The default is DATA.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-928
IC Validator Reference Manual Version N-2017.12-SP2

■ DATA. Specifies that errors are written as either zero-width paths or boundaries
depending on the type of error. The shapes that are written can be viewed in a
layout editor.
■ ERRORS. Specifies a setting for an internal IC Validator flow and should not be used
by the customer.
❍ attach_properties. Optional. Lists the properties to attach to output shapes on this
layer based on the interaction with a specified assign layer. Properties to be attached
must have been specified in the keep_properties option list of the assign layer. By
default, the IC Validator tool does not attach any properties.
■ assign_layer. Specifies the layer from which the properties are attached. This
layer must be the output of the assign() function.
■ properties. Optional. Specifies which properties are attached. These properties
must have been present in the keep_properties option list in the assign()
function. By default, the IC Validator tool does not attach any properties.
- OWNER_NET. Output shapes in the top cell are assigned to nets based on
assign layer shapes that they interact with. If an output shape interacts with
multiple input shapes having different nets, one is chosen arbitrarily and a
warning is reported. See the milkyway argument of the assign() function for
more information.
- SHAPE_USE. Output shapes are assigned a shape use based on assign layer
shapes that they interact with. If an output shape interacts with multiple input
shapes having different shape uses, a predefined precedence is used to
determine which shape use the output shape takes, and a warning is reported.
These properties are kept for every cell and are applied hierarchically.The
default is to not set a shape use. See Table 2-7 for a list of shape uses.

errors
Optional. Lists the errors written to the NDM library along with mapping and prefix
information.
❍ error. Specifies the violation for the error geometry.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype, to which this violation is written. The data_type value, which is the layer
purpose, for each pair is optional, with a default of 0. See Layout Layer and Datatype
Ranges for information about the limits of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the error_cell_prefix argument.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-929
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ shape_use. Optional. Specifies the shape use for shapes written to NDM for this
violation. The default is to not set a shape use. See Table 2-7 for a list of shape uses.
❍ cell_suffix. Optional. Suffix for all cells written from this violation. The default is the
value of the error_cell_suffix argument.
❍ mask. Optional. Sets the multi-patterning mask to set for shapes written to NDM for
this violation. The default is not to set a multi-patterning mask. See Table 2-11 for a
list of the masks.
❍ classifications. Optional. Lists the error classifications that the IC Validator tool
uses to filter the violations for the specified output layer. For example, this argument
allows you to write waived violations to one layer and unwaived violations to another
layer.
The valid error classifications are Error, Ignore, Waive, Watch, Fixed, and Debug.
By default, no error classification filtering is performed and all errors are written for the
output layer.
Note:
The error_limit_per_check argument of the error_options() function, which
has a default of 100, applies to all error output, including violations written using the
write_ndm() function.

output_hierarchy
Optional. Controls the writing of cell references into the NDM library. This argument is
typically set to false only when the virtual_cells argument is EXPLODE and the mode
argument is APPEND so that polygon data can be appended to existing cells without
affecting the hierarchy. The default is true.

magnification_factor
Optional. The output coordinates are multiplied by this factor before writing to the output
library. A magnification factor between 0.0 and less than 1.0 shrinks data. A
magnification factor greater than 1.0 enlarges data. The default is 1.0 (no magnification).

instance_name
Optional. Specifies whether instance names are written.
❍ write. Optional. Specifies whether to write instance names. The default is true.
❍ conflict. Optional. Specifies what happens when a newly written instance name is in
conflict with an existing instance name. This situation is relevant only when you set
the mode argument to APPEND. The default is SKIP.
■ ABORT. Abort the run.

■ SKIP. Do not write the cell reference.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-930
IC Validator Reference Manual Version N-2017.12-SP2

■ RENAME. Rename the new cell reference with a unique instance name.

cell_suffix
Optional. Suffix for all cell names written from the layers argument list. This value can
be overridden by the cell_suffix option inside of the layers argument list. The default
is an empty string ("").

error_cell_suffix
Optional. Suffix for all cell names written from the errors argument list. This value can
be overridden by the cell_suffix option inside of the errors argument list. Set this
value to an empty string ("") if you do not want a suffix. The default is "ERR_".

apply_suffix
Optional. Specifies the cells in the output library to which the suffix is applied. By default,
the IC Validator tool applies the suffix to the output cell and lower cells.
❍ OUTPUT_CELL. Suffix is applied to the top cell of the design.

❍ LOWER_CELLS. Suffix is applied to cells placed underneath the top cell.

❍ HOLDING_CELL. Suffix is applied to the holding cell.

place_cells
Optional. Places complex fill cells programmatically, instead of layer-by-layer fill, into the
output layout based on a marker layer containing rectangles. A layer consisting of
rectangles is converted into placements of predefined fill cells containing arbitrary
polygons on multiple layers during data output.
The imported cell can be renamed to prevent cell name conflicts. The origin of the
placement is the lower-left corner of the rectangle.
❍ cell. Specifies the handle to the cell that is imported. The handle is created by the
import_gds_cell() or import_oasis_cell() function.

❍ marker_layer. Specifies the layer that has the rectangles which define the fill
placement.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-931
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ layer_map_file. Specifies a layer mapping file that maps layers from the imported
fill cell to the output format. The color mappings are specific to NDM and only apply
when the output format is NDM. The other mappings can be used for all output
formats.
When writing place_cells output to an NDM database, a layer mapping file is
required. It is of the same format as used for stream in and stream out. See the
read_gds command in the IC Compiler II documentation for a description of the
format.
❍ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for an
example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the pattern.

■ false. Does not reflect the pattern.

❍ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

❍ shift. Optional. Specifies the shift of the pattern origin from the lower-left corner of
the marker layer rectangle. The default is {0.0, 0.0}; that is, the pattern is not
shifted.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-932
IC Validator Reference Manual Version N-2017.12-SP2

Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

technology_file
Optional. Specifies the technology file used if a new NDM library is being created. If
appending to an existing NDM library, its technology information is used. If this argument
is not specified and the input library was NDM or Milkyway, the technology information
from the input library is used; otherwise an empty technology file is created. The
missing_technology_layers argument specifies how output layers that do not exist in
the technology information of the target library are handled.

missing_technology_layers
Optional. Specifies what happens when a layer/purpose combination that is used in the
output layers or errors list does not exist in the technology database of the destination
library. The default is UPDATE.
❍ UPDATE. Adds the missing layer/purpose to the technology database.

❍ IGNORE. Writes the output database without adding the missing layer/purpose to the
technology database.
❍ SKIP. Does not write the missing layers to the technology database.

❍ ABORT. Aborts the run.

design_label
Optional. Specifies the output design label. The default is the design label of the top input
cell.

exclude_from_generated_cell_names
Required. Specifies the list of strings that cannot be included in cell names generated
during multilayer fill compression. This does not apply to cell names generated by single
layer fill compression. Multilayer fill compression still calls single layer fill compression on
the remaining uncompressed data.

hierarchy_output
Optional. Specifies the type of cell to be exploded.
❍ ORIGINAL. Maintains the original hierarchy. This option explodes automatically the
vcells and any cells whose flat reference count is different than the original hierarchy.
❍ INTERNAL. Specifies the hierarchy used in the IC Validator tool. This is the current
behavior.

Chapter 3: Runset Functions: J - Z


write_ndm() 3-933
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function requires the native ICValidator2-GeometryEngine license. See the Licensing
and Resource Requirements chapter in the IC Validator User Guide for more information
about licensing.

Examples
The following example shows the NDM_SYSTEM_PURPOSE_DIELECTRIC_FILL data type,
which is only supported in the write_ndm() function, and for NDM layer mapping.
write_ndm(
layers = {
{layer = L31,
layer_num = {layer_num=31,
data_type=NDM_SYSTEM_PURPOSE_DIELECTRIC_FILL}
}
}
);

See the write_gds() function for examples of the errors and magnification_factor
arguments, and for an example that uses the connect_database argument to write
instance name and net name properties.

See Also
ndm_library()
ndm_merge_library_options()
ndm_options()

Chapter 3: Runset Functions: J - Z


write_ndm() 3-934
IC Validator Reference Manual Version N-2017.12-SP2

write_oasis()
The write_oasis() function write layers and violations to an OASIS file. There can be
multiple write_oasis() functions within a runset.
Errors consisting of a single point or two points have polygon data generated for output to
the OASIS file. These polygons match what you see in VUE associated with these errors (an
X for a single point or a flyline for multiple points).
See the “Limits on Number of Vertices of a Polygon” section for information about writing out
large polygons.

Syntax
write_oasis(
output_library =
oasis_library,
resolution =
double, //optional
holding_cell =
"string", //optional
output_cell =
"string", //optional
apply_prefix =
{OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
compression_level = integer, //optional
cell_prefix = "string", //optional
error_cell_prefix = "string", //optional
virtual_cells = KEEP | EXPLODE, //optional
layers = {{layer = layername,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
aref = {{cell = "string",
width = doubleconstraint,
height = doubleconstraint,
minimum_elements = integer,
replace = {{{x = double, y = double}, ...}, ...}},
...},
cell_suffix = "string",
user_defined_properties = {double_properties =
{{name = "string",
number = integer}, ...}},
= {string_properties =
{{name = "string",
number = integer}, ...}},
compress_fill = {mode = NONE | AUTO,
cell = "string"},
name = "string"},
...}, //optional
errors = {{error = violation,
layer_num = {layer_num = integer, data_type = integer},
cell_prefix = "string",
cell_suffix = "string"},
classifications = {"string", ...},
...} //optional

Chapter 3: Runset Functions: J - Z


write_oasis() 3-935
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

properties = {instance_name = integer,


net_name = integer,
internal_net_name = integer,
net_type = integer,
device_name = integer,
device_instance_name = integer,
device_terminal_instance_name = integer,
}, //optional
connect_sequence = connect_database, //optional
merge_input_layout = true | false, //optional
magnification_factor = double, //optional
cell_suffix = "string", //optional
error_cell_suffix = "string", //optional
apply_suffix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
device_db = device_database, //optional
place_cells = {{cell = cell_handle,
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
layer_map_file = "string",
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}},
...}, //optional
output_generated_instance_names = true | false, //optional
exclude_from_generated_cell_names = {"string", ...}, //optional
hierarchy_output = ORIGINAL | INTERNAL //optional
);

Returns
void

Arguments
output_library
Required. Specifies the OASIS file handle. The handle is defined using the
oasis_library() function.
Note:
Multiple write_oasis() functions that have the same file name cause an overwrite
of the OASIS file.

resolution
Optional. Output data is snapped to this resolution before it is written to the OASIS file.
The default is the input library resolution.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-936
IC Validator Reference Manual Version N-2017.12-SP2

holding_cell
Optional. Generated top cell that references the output hierarchy from the run. This cell
is a generated holding cell; it does not contain any polygon or text data.
The holding cell contains both the error and layer cells. By default, error data is written to
cells with the ERR_ prefix and layers are written to the layout cell names. The error data
can be placed within the layer hierarchy if you change the ERR_ prefix to an empty string
("") using the error_cell_prefix argument. See the holding_cell argument of the
write_milkyway() function for more information.

output_cell
Optional. Specifies the new name for the top cell of the design to be used in the output
library. The name should not conflict with existing cells in the design. The default name
is the original top cell name.

apply_prefix
Optional. Specifies the cells in the output library to which the prefix is applied. By default,
the IC Validator tool applies the prefix to the output cell and lower cells.
❍ OUTPUT_CELL. Specifies the prefix that is applied to the top cell of the design.

❍ LOWER_CELLS. Specifies the prefix that is applied to cells placed underneath the top
cell.
❍ HOLDING_CELL. Specifies the prefix that is applied to the holding cell.

compression_level
Optional. Compression of the output OASIS file. The higher the number the more
aggressive the compression at the cost of processing time. The level can be set from 0
to 9. If a value greater than 9 is specified, the compression level is 9. The default is 6.

cell_prefix
Optional. Specifies the prefix for all cell names written from the layers argument list.
This value can be overridden by the cell_prefix option inside of the layers argument
list. The default is an empty string (""); that is, no added prefix.

error_cell_prefix
Optional. Specifies the prefix for all cell names written from the errors argument list.
This value can be overridden by the cell_prefix option inside of the errors argument
list. Set this value to an empty string ("") if you do not want a prefix. The default is
"ERR_".

virtual_cells
Optional. Specifies the action to take for virtual cells. The default is KEEP.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-937
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ KEEP. Virtual cells are kept and written to the output library. The output hierarchy
contains references to virtual cells.
❍ EXPLODE. All data and placements from virtual cells are exploded to the first parent
design cell before writing to the output library. The output hierarchy does not contain
references to virtual cells.

layers
Optional. Lists the layers to write to the OASIS file along with mapping and prefix
information.
❍ layer. Specifies the layer name. This layer can be an edge, polygon, or text layer.

❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See “Layout Layer and Datatype Ranges” on page A-6 for information
about the limits of the values.
❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the cell_prefix argument.
❍ aref. Optional. Lists the regular patterns of rectangles to be converted into arrayed
structures. You can specify multiple patterns per layer. This behavior is a cell-level
operation. This feature is typically used to reduce the size of the output layout by
converting flat fill to arrayed structures.
The IC Validator tool determines if rectangles that meet the provided dimensions,
specified in the width and height options, are in an arrayed pattern. These
rectangles with an arrayed pattern are replaced with a new cell containing a single
rectangle of the specified width and height dimensions. The origin of the new cell is
the lower-left corner of the rectangle. Any data in the layer that is not arrayed is output
unchanged.
The replace option allows the single rectangle in the new AREF (array reference)
cell to be replaced by specified polygons.
■ cell. Required. Names new cells created when rectangles are grouped into
arrayed structures. The IC Validator tool adds a suffix if there is any conflict with
existing cells in the hierarchy or other new cells. For example, if the cell name is
icv_aref and there is a conflict, a suffix is added and the new cell is named
icv_aref_1. There is a conflict with this name, and then the new cell is named
icv_aref_2, and so on.
■ width. Required. Width of the rectangles. See “Constraints” on page A-4 for more
information.
The IC Validator tool looks for all rectangles with a width equal to the width value
and height equal to the height value, and forms arrayed structures, if possible,

Chapter 3: Runset Functions: J - Z


write_oasis() 3-938
IC Validator Reference Manual Version N-2017.12-SP2

with 0-degree rotation. It also looks for rectangles with a height equal to the width
value and width equal to the height value, and forms arrayed structures, if
possible, with 90-degree rotation. Both the 0-degree and 90-degree array
placements point to the same created cell.
■ height. Required. Height of the rectangles. See “Constraints” on page A-4 for
more information.
■ minimum_elements. Optional. Minimum number of rectangles for an arrayed
structure to be formed. The IC Validator tool creates an SREF (structured
reference) instead of an array placement when there is an arrayed structure of
only one rectangle. The default is 16.
■ replace. Optional. Lists the polygons that replace the rectangle in the new cells.
This behavior allows a rectangle marker layer to be used to create arrayed
structures of more complex shapes in the output layout.
Note:
Setting the minimum_elements option to 1 ensures all rectangles of the
specified width and height dimensions are replaced by a placement to a cell
with the polygons provided.
The list contains xy coordinate pairs for each created polygon. The coordinates
can be either
- Two coordinates, which are interpreted as the opposing corners of a rectangle.
- Three or more coordinates, which define the outer boundary of a closed
polygon. You do not need to repeat the first coordinate at the end of the list.
The coordinates can be ordered in either direction around the polygon.
Note:
Polygons, or portions of polygons with no area, are ignored. Areas of
self-intersection are left empty.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
write_oasis(cell_suffix) argument.

❍ user_defined_properties. Optional. Specifies user-defined properties that are


written to specified property numbers. By default, the IC Validator tool does not write
any properties.
■ double_properties. Specifies the double value properties that are written to the
specified property numbers.
- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-939
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ string_properties. Specifies the string value properties that are written to the
specified property numbers.
- name. Specifies the property name.

- number. Specifies the property number. The property numbers must be in the
range of 0–255, inclusive.
See the oasis argument of the assign() function for more information.
❍ compress_fill. Optional. Specifies the compression of fill by replacing blocks of fill
with a cell placement.
Note:
Each layer to be compressed must be specified with the layers argument and the
mode of the compress_fill option set to AUTO.
■ mode. Optional. Specifies the type of compression. The default is NONE.

- NONE. Does not compress the fill.

- AUTO. Compresses the fill. During the fill compression process, new cells are
created; some cells have only one fill rectangle and others have multiple fill
rectangles. The fill is compressed by replacing the fill data of these cells with
single and AREF placements, as appropriate.
■ cell. Required. Names the cell created when fill rectangles are grouped into a
sub cell. The IC Validator tool adds a suffix if there is any conflict with existing cells
in the hierarchy or other new cells. For example, if the cell name is specified as
icv_fill and there is a conflict, a suffix is added and the new cell is named icv_fill_1.
If there is a conflict with this name, the new cell is named icv_fill_2, and so on.
❍ name. Optional. Specifies the layer name used by the IC Validator tool for the data
counts in the summary file and for naming the layer in the OASIS output layout. The
default behavior is to extract a name based on an internal IC Validator file name used
for the layer, which might not match the runset layer variable name specified in the
layer argument.

errors
Optional. Lists the errors written to the OASIS file along with mapping and prefix
information.
❍ error. Specifies the violation name for the error geometry.
❍ layer_num. Specifies the layer number, which is composed of a layer number and the
datatype. This value is used when writing to a library. The data_type option has a
default of 0. See “Layout Layer and Datatype Ranges” on page A-6 for information
about the limits of the values.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-940
IC Validator Reference Manual Version N-2017.12-SP2

❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the error_cell_prefix argument.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
error_cell_suffix argument.

❍ classifications. Optional. Lists the error classifications that the IC Validator tool
uses to filter the violations for the specified output layer. For example, this argument
allows you to write waived violations to one layer and unwaived violations to another
layer.
The valid error classifications are Error, Ignore, Waive, Watch, Fixed, and Debug.
By default, no error classification filtering is performed and all errors are written for the
output layer.
Note:
The error_limit_per_check argument of the error_options() function, which
has a default of 100, applies to all error output, including violations written using the
write_oasis() function.

properties
Optional. Associates property numbers with specific properties for output. The property
numbers must be in the range of 0–255, inclusive. By default, the IC Validator tool does
not write any properties.
❍ instance_name. Optional. Specifies the property number to which cell instance
names are written. By default, the IC Validator tool does not write instance names.
❍ net_name. Optional. Specifies the property number to which polygon net names are
written. Either a connect database must be specified in the connect_sequence
argument or a device database must be specified in the device_db argument. By
default, the IC Validator tool does not write net names.
❍ internal_net_name. Optional. Specifies the property number to which internal net
names are written. The internal net name is the net prefix plus the base net number.
Either a connect database must be specified in the connect_sequence argument or
a device database must be specified in the device_db argument. By default, the
IC Validator tool does not write the internal net name.
❍ net_type. Optional. Specifies the property number to which polygon net types are
written. If a polygon’s net connects up or down the hierarchy, the property value is
“IO”; otherwise, the property is not set. Either a connect database must be specified
in the connect_sequence argument or a device database must be specified in the
device_db argument. By default, the IC Validator tool does not write the net type.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-941
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ device_name. Optional. Specifies the property number to which device names


associated with the device body or terminal polygon are written. A device database
must be specified in the device_db argument. By default, the IC Validator tool does
not write the device name.
❍ device_instance_name. Optional. Specifies the property number to which device
instance names associated with device body polygons are written. A device database
must be specified in the device_db argument. If more than one device is associated
with a polygon, the polygon gets multiple properties in the output. By default, the
IC Validator tool does not write the device instance name.
❍ device_terminal_instance_name. Optional. Specifies the property number to
which device instance names associated with the device terminal polygon are written.
A device database must be specified in the device_db argument. If more than one
device is associated with a polygon, the polygon gets multiple properties in the
output. By default, the IC Validator tool does not write the device terminal instance
name.

connect_sequence
Optional. Specifies the connect database used to output net name and type properties
when the properties argument is used. If you specify both the connect_sequence and
the device_db arguments, the connectivity in the device database is used.

merge_input_layout
Optional. Specifies if the input and generated Oasis files are merged. The default is
false.

❍ true. Merges the input and generated OASIS files to make the final output OASIS
file. The output OASIS file is a copy of the input OASIS file with the output of the
specified layers placed hierarchically at (0,0) under the top of the input cell. Set the
cell_prefix argument to give the output cells a name different from the original
input cells.
❍ false. Outputs only the generated file.

magnification_factor
Optional. The output coordinates are multiplied by this factor before writing to the output
library. A magnification factor between 0.0 and less than 1.0 shrinks data. A
magnification factor greater than 1.0 enlarges data. The default is 1.0 (no magnification).

cell_suffix
Optional. Suffix for all cell names written from the layers argument list. This value can
be overridden by the cell_suffix option inside of the layers argument list. The default
is an empty string ("").

Chapter 3: Runset Functions: J - Z


write_oasis() 3-942
IC Validator Reference Manual Version N-2017.12-SP2

error_cell_suffix
Optional. Suffix for all cell names written from the errors argument list. This value can
be overridden by the cell_suffix option inside of the errors argument list. The default
is an empty string ("").

apply_suffix
Optional. Specifies the cells in the output library to which the suffix is applied. By default,
the IC Validator tool applies the suffix to the output cell and lower cells.
❍ OUTPUT_CELL. Suffix is applied to the top cell of the design.

❍ LOWER_CELLS. Suffix is applied to cells placed underneath the top cell.

❍ HOLDING_CELL. Suffix is applied to the holding cell.

device_db
Optional. Specifies a device database used to output device name properties when the
properties argument is used. If you are writing the device name, device instance
name, or device terminal instance name, you must specify a device database. The
extract_devices() function generates a device database. If you specify both the
connect_sequence and the device_db arguments, the connectivity in the device
database is used.

place_cells
Optional. Places complex fill cells programmatically, instead of layer-by-layer fill, into the
output layout based on a marker layer containing rectangles. A layer consisting of
rectangles is converted into placements of predefined fill cells containing arbitrary
polygons on multiple layers during data output.
The imported cell can be renamed to prevent cell name conflicts. The origin of the
placement is the lower-left corner of the rectangle.
❍ cell. Specifies the handle to the cell that is imported. The handle is created by the
import_gds_cell() or import_oasis_cell() function.

❍ marker_layer. Specifies the layer that has the rectangles which define the fill
placement.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-943
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ layer_map_file. Specifies a unified Milkyway layer mapping file that maps layers
from the imported fill cell to the output format. The color mappings are specific to
Milkyway and only apply when the output format is Milkyway. The other mappings can
be used for all output formats.
Note:
The unified Milkyway layer mapping file has backward compatible support for the
older Milkyway stream in layer mapping file syntax.
See the place_cells argument of the write_gds() function for information about
the format of the Milkyway unified file.
❍ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for an
example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the pattern.

■ false. Does not reflect the pattern.

❍ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-944
IC Validator Reference Manual Version N-2017.12-SP2

❍ shift. Optional. Specifies the shift of the pattern origin from the lower-left corner of
the marker layer rectangle. The default is {0.0, 0.0}; that is, the pattern is not
shifted.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

output_generated_instance_names
Optional. Specifies if instance names internally generated by the IC Validator tool are
written to the OASIS file in addition to instance names from the input layout. Instance
names are written out only if the instance_name option of the property argument is
defined. The default is true.
❍ true. Writes internally generated instance names to the OASIS file.

❍ false. Does not write internally generated instance names to the OASIS file.

exclude_from_generated_cell_names
Required. Specifies the list of strings that cannot be included in cell names generated
during multilayer fill compression. This does not apply to cell names generated by single
layer fill compression. Multilayer fill compression still calls single layer fill compression on
the remaining uncompressed data.

hierarchy_output
Optional. Specifies the type of cell to be exploded.
❍ ORIGINAL. Maintains the original hierarchy. This option explodes automatically the
vcells and any cells whose flat reference count is different than the original hierarchy.
❍ INTERNAL. Specifies the hierarchy used in the IC Validator tool. This is the current
behavior.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Chapter 3: Runset Functions: J - Z


write_oasis() 3-945
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
See the write_gds() function for examples of the errors and magnification_factor
arguments, and for an example that uses the connect_database argument to write
instance name and net name properties.

See Also
error_options()
get_netlist_connect_database()
oasis_library()
oasis_options()
resolution_options()

Chapter 3: Runset Functions: J - Z


write_oasis() 3-946
IC Validator Reference Manual Version N-2017.12-SP2

write_openaccess()
The write_openaccess() function writes layers and violations to an OpenAccess library.
There can be multiple write_openaccess() functions within a runset.
Note:
The OpenAccess format does not support 64-bit coordinates. Therefore, do not use the
-64 command-line option with the write_openaccess() function.

If the input layout is OpenAccess, library and view names from input cells are used unless
the library or view arguments of the write_openaccess() function are specified.
Errors consisting of a single point or two points have polygon data generated for output to
the OpenAccess library. These polygons match what you see in VUE associated with these
errors (an X for a single point or a flyline for multiple points).
See the “Limits on Number of Vertices of a Polygon” section for information about writing out
large polygons.

Syntax
write_openaccess(
output_library =
openaccess_library_handle,
view =
"string", //optional
library =
"string", //optional
mode =
APPEND | OVERWRITE, //optional
holding_cell =
"string", //optional
output_cell =
"string", //optional
cell_prefix =
"string", //optional
error_cell_prefix =
"string", //optional
apply_prefix =
{OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
virtual_cells = KEEP | EXPLODE, //optional
output_hierarchy = true | false, //optional
net_id = true | false, //optional
connect_sequence = connect_database, //optional
magnification_factor = double, //optional
layers = {{layer = layername,
lpp = {layer_name = "string",
purpose_name = "string"},
cell_prefix = "string",
aref = {{cell = "string",
width = doubleconstraint,
height = doubleconstraint,
minimum_elements = integer,
replace = {{{x = double, y = double}, ...}, ...}},
...},
cell_suffix = "string",
compress_fill = {mode = NONE | AUTO,
cell = "string"}},
...}, //optional

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-947
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

errors = {{error = violation,


lpp = {layer_name = "string",
purpose_name = "string"},
cell_prefix = "string",
cell_suffix = "string"},
classifications = {"string", ...},
...}, //optional
instance_name = {write = true | false,
conflict = ABORT | SKIP | RENAME}, //optional
cell_suffix = "string", //optional
error_cell_suffix = "string", //optional
apply_suffix = {OUTPUT_CELL, LOWER_CELLS, HOLDING_CELL},
//optional
place_cells = {{cell = cell_handle,
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
layer_map_file = "string",
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}},
...} //optional
exclude_from_generated_cell_names = {"string", ...}, //optional
hierarchy_output = ORIGINAL | INTERNAL, //optional
place_references = {{library = "string",
cell = "string",
view = "string",
marker_layer = polygon_layer,
compress = NONE | AUTO,
abort = {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES},
reflection = true | false,
rotation = ROTATE_0 | ROTATE_90 |
ROTATE_180 | ROTATE_270,
shift = {x = double, y = double}}
...} //optional
);

Returns
void

Arguments
output_library
Required. Specifies an OpenAccess library handle. The handle is defined using the
openaccess_library() function.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-948
IC Validator Reference Manual Version N-2017.12-SP2

view
Optional. Specifies the view used for output cells. By default, the IC Validator tool uses
the view names from OpenAccess input layout cells, or if the input layout is not
OpenAccess, the default is "layout".
Note:
If a cell name conflicts with another name after renaming the view, the name is
modified such that it is unique in the output hierarchy.

library
Optional. Names the library to use for output cells. By default, the IC Validator tool uses
the library names from any OpenAccess input layout cells or the name of the
OpenAccess input library. This argument is required if the input layout is not
OpenAccess.
Note:
If a cell name conflicts with another name after renaming the library, the name is
modified such that it is unique in the output hierarchy.

mode
Optional. Specifies the action for when the library already exists. The default is
OVERWRITE.

❍ APPEND. When you write data into a cell that already exists in the target OpenAccess
library, the cell has both the old and new data.
❍ OVERWRITE. When you write data into a cell that already exists in the target library,
any previous data is overwritten.

holding_cell
Optional. Generated top cell that references the output hierarchy from the run. This cell
is a generated holding cell; it does not contain any polygon or text data.
The holding cell contains both the error and layer cells. By default, error data is written to
cells with the ERR_ prefix and layers are written to the layout cell names. The error data
can be placed within the layer hierarchy if you change the ERR_ prefix to an empty string
("") using the error_cell_prefix argument. See the holding_cell argument of the
write_milkyway() function for more information.

output_cell
Optional. Specifies the new name for the top cell of the design to be used in the output
library. The name should not conflict with existing cells in the design. The default name
is the original top cell name.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-949
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

cell_prefix
Optional. Specifies the prefix for all cell names written from the layers argument list.
This value can be overridden by the cell_prefix option inside of the layers argument
list. The default is an empty string (""); that is, no added prefix.

error_cell_prefix
Optional. Specifies the prefix for all cell names written from the errors argument list.
This value can be overridden by the cell_prefix option inside of the errors argument
list. Set this value to an empty string ("") if you do not want a prefix. The default is
"ERR_".

apply_prefix
Optional. Specifies the cells in the output library to which the prefix is applied. By default,
the IC Validator tool applies the prefix to the output cell and lower cells.
❍ OUTPUT_CELL. Specifies the prefix that is applied to the top cell of the design.

❍ LOWER_CELLS. Specifies the prefix that is applied to cells placed underneath the top
cell.
❍ HOLDING_CELL. Specifies the prefix that is applied to the holding cell.

virtual_cells
Optional. Specifies the action to take for virtual cells. Virtual cells can include cells that
the IC Validator tool creates to represent standard vias or programmable cells. The
default is KEEP.
❍ KEEP. Virtual cells are kept and written to the output library. The output hierarchy
contains references to virtual cells.
❍ EXPLODE. All data and placements from virtual cells are exploded to the first parent
design cell before writing to the output library. The output hierarchy does not contain
references to virtual cells.

output_hierarchy
Optional. Controls the writing of cell references into the output OpenAccess library. This
argument is typically set to false when the virtual_cells argument is EXPLODE and
the mode argument is APPEND so that polygon data can be appended to existing cells
without affecting the hierarchy. The default is true.

net_id
Optional. Specifies if the net ID is generated for rectangle and polygon data. The connect
database that generated the nets must be specified in the connect_sequence argument.
The default is false.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-950
IC Validator Reference Manual Version N-2017.12-SP2

connect_sequence
Optional. Specifies the connect database that contains net information used for
outputting net IDs when the net_id argument is true.

magnification_factor
Optional. The output coordinates are multiplied by this factor before writing to the output
library. A magnification factor between 0.0 and less than 1.0 shrinks data. A
magnification factor greater than 1.0 enlarges data. The default is 1.0 (no magnification).

layers
Optional. Lists the layers to write to the OpenAccess library along with mapping and
prefix information.
❍ layer. Specifies the layer name. This layer can be an edge, polygon, or text layer.

❍ lpp. Specifies the layer and purpose name pair to which data is written.

❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the cell_prefix argument.
❍ aref. Optional. Lists the regular patterns of rectangles to be converted into arrayed
structures. You can specify multiple patterns per layer. This behavior is a cell-level
operation. This feature is typically used to reduce the size of the output layout by
converting flat fill to arrayed structures.
The IC Validator tool determines if rectangles that meet the provided dimensions,
specified in the width and height options, are in an arrayed pattern. These
rectangles with an arrayed pattern are replaced with a new cell containing a single
rectangle of the specified width and height dimensions. The origin of the new cell is
the lower-left corner of the rectangle. Any data in the layer that is not arrayed is output
unchanged.
The replace option allows the single rectangle in the new AREF (array reference)
cell to be replaced by specified polygons.
■ cell. Required. Names new cells created when rectangles are grouped into
arrayed structures. The IC Validator tool adds a suffix if there is any conflict with
existing cells in the hierarchy or other new cells. For example, if the cell name is
icv_aref and there is a conflict, a suffix is added and the new cell is named
icv_aref_1. There is a conflict with this name, the new cell is named icv_aref_2,
and so on.
■ width. Required. Width of the rectangles. See “Constraints” on page A-4 for more
information.
The IC Validator tool looks for all rectangles with a width equal to the width value
and height equal to the height value, and forms arrayed structures, if possible,

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-951
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

with 0-degree rotation. It also looks for rectangles with a height equal to the width
value and width equal to the height value, and forms arrayed structures, if
possible, with 90-degree rotation. Both the 0-degree and 90-degree array
placements point to the same created cell.
■ height. Required. Height of the rectangles. See “Constraints” on page A-4 for
more information.
■ minimum_elements. Optional. Minimum number of rectangles for an arrayed
structure to be formed. The IC Validator tool creates an SREF (structured
reference) instead of an array placement when there is an arrayed structure of
only one rectangle. The default is 16.
■ replace. Optional. Lists the polygons that replace the rectangle in the new cells.
This behavior allows a rectangle marker layer to be used to create arrayed
structures of more complex shapes in the output layout.
Note:
Setting minimum_elements option to 1 ensures all rectangles of the specified
width and height dimensions are replaced by a placement to a cell with the
polygons provided.
The list contains xy coordinate pairs for each created polygon. The coordinates
can be either
- Two coordinates, which are interpreted as the opposing corners of a rectangle.
- Three or more coordinates, which define the outer boundary of a closed
polygon. You do not need to repeat the first coordinate at the end of the list.
The coordinates can be ordered in either direction around the polygon.
Note:
Polygons, or portions of polygons with no area, are ignored. Areas of
self-intersection are left empty.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
write_openaccess(cell_suffix) argument.

❍ compress_fill. Optional. Specifies the compression of fill by replacing blocks of fill


with a cell placement.
Note:
Each layer to be compressed must be specified with the layers argument and the
mode of the compress_fill option set to AUTO.
■ mode. Optional. Specifies the type of compression. The default is NONE.

- NONE. Does not compress the fill.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-952
IC Validator Reference Manual Version N-2017.12-SP2

- AUTO. Compresses the fill. During the fill compression process, new cells are
created; some cells have only one fill rectangle and others have multiple fill
rectangles. The fill is compressed by replacing the fill data of these cells with
single and AREF placements, as appropriate.
■ cell. Required. Names the cell created when fill rectangles are grouped into a
sub cell. The IC Validator tool adds a suffix if there is any conflict with existing cells
in the hierarchy or other new cells. For example, if the cell name is specified as
icv_fill and there is a conflict, a suffix is added and the new cell is named icv_fill_1.
If there is a conflict with this name, the new cell is named icv_fill_2, and so on.

errors
Optional. Lists the errors written to the OpenAccess library along with mapping and
prefix information.
❍ error. Specifies the violation name for the error geometry.

❍ lpp. Specifies the layer and purpose name pair to which data is written.

❍ cell_prefix. Optional. Specifies the prefix for all cells written from this layer. New
cells are generated for this layer if a unique prefix is specified. The default is the value
of the error_cell_prefix argument.
❍ cell_suffix. Optional. Suffix for all cells written from this layer. New cells are
generated for this layer if a unique suffix is specified. The default is the value of the
error_cell_suffix argument.

❍ classifications. Optional. Lists the error classifications that the IC Validator tool
uses to filter the violations for the specified output layer. For example, this argument
allows you to write waived violations to one layer and unwaived violations to another
layer.
The valid error classifications are Error, Ignore, Waive, Watch, Fixed, and Debug.
By default, no error classification filtering is performed and all errors are written for the
output layer.
Note:
The error_limit_per_check argument of the error_options() function, which
has a default of 100, applies to all error output, including violations written using the
write_openaccess() function.

instance_name
Optional. Specifies whether instance names are written.
❍ write. Optional. Specifies whether to write instance names. The default is true.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-953
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ conflict. Optional. Specifies what happens when a newly written instance name is
in conflict with an existing instance name. This behavior is relevant only when you set
the mode argument to APPEND. The default is SKIP.
■ ABORT. Abort the run.

■ SKIP. Do not write the cell reference.

■ RENAME. Rename the new cell reference with a unique instance name.

cell_suffix
Optional. Suffix for all cell names written from the layers argument list. This value can
be overridden by the cell_suffix option inside of the layers argument list. The default
is an empty string ("").

error_cell_suffix
Optional. Suffix for all cell names written from the errors argument list. This value can
be overridden by the cell_suffix option inside of the errors argument list. Set this
value to an empty string ("") if you do not want a suffix. The default is "ERR_".

apply_suffix
Optional. Specifies the cells in the output library to which the suffix is applied. By default,
the IC Validator tool applies the suffix to the output cell and lower cells.
❍ OUTPUT_CELL. Suffix is applied to the top cell of the design.

❍ LOWER_CELLS. Suffix is applied to cells placed underneath the top cell.

❍ HOLDING_CELL. Suffix is applied to the holding cell.

place_cells
Optional. Places complex fill cells programmatically, instead of layer-by-layer fill, into the
output layout based on a marker layer containing rectangles. A layer consisting of
rectangles is converted into placements of predefined fill cells containing arbitrary
polygons on multiple layers during data output.
The imported cell can be renamed to prevent cell name conflicts. The origin of the
placement is the lower-left corner of the rectangle.
❍ cell. Specifies the handle to the cell that is imported. The handle is created by the
import_gds_cell() or import_oasis_cell() function.

❍ marker_layer. Specifies the layer that has the rectangles which define the fill
placement.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-954
IC Validator Reference Manual Version N-2017.12-SP2

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ layer_map_file. Specifies an OpenAccess layer mapping file that maps layers from
the imported fill cell to the output format. See the layer_mapping_file argument of
the openaccess_options() function for information about the OpenAccess layer
mapping file.
❍ reflection. Optional. Specifies if the pattern is reflected. See Figure 3-210 for an
example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the pattern.

■ false. Does not reflect the pattern.

❍ rotation. Optional. Specifies the rotation of the pattern.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-955
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ shift. Optional. Specifies the shift of the pattern origin from the lower-left corner of
the marker layer rectangle. The default is {0.0, 0.0}; that is, the pattern is not
shifted.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

exclude_from_generated_cell_names
Required. Specifies the list of strings that cannot be included in cell names generated
during multilayer fill compression. This does not apply to cell names generated by single
layer fill compression. Multilayer fill compression still calls single layer fill compression on
the remaining uncompressed data.

hierarchy_output
Optional. Specifies the type of cell to be exploded.
❍ ORIGINAL. Maintains the original hierarchy. This option explodes automatically the
vcells and any cells whose flat reference count is different than the original hierarchy.
❍ INTERNAL. Specifies the hierarchy used in the IC Validator tool. This is the current
behavior.

place_references
Optional. Places references to cells in an OpenAccess output layout without creating the
referenced cell. The referenced cell may or may not exist in the layout. The referenced
cell is described by library, cell, and view name.
❍ library. Specifies the library name of the referenced cell.

❍ cell. Specifies the cell name of the referenced cell.

❍ view. Specifies the view name of the referenced cell.

❍ marker_layer. Specifies the layer that has the rectangles which define the cell
placements. Cells are placed at the lower left corner of each rectangle.
❍ compress. Specifies if cell placements should be compressed. The default is NONE.

■ NONE. Does not compress placements of this cell.

■ AUTO. Compresses placements of this cell.

❍ abort. Lists the error severity for rectangles of different sizes and nonrectangular
shapes on the marker layer. The default is {DIFFERENT_SIZE_RECTANGLES,
NON_RECTANGULAR_SHAPES}.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-956
IC Validator Reference Manual Version N-2017.12-SP2

■ DIFFERENT_SIZE_RECTANGLES. Aborts with an error if there are rectangles of


different sizes on a single marker layer. If this option is not listed, a warning
message is reported. The default is to abort the run if there are rectangles of
different sizes on the marker layer. This condition indicates the possibility of
overlapping or abutting shapes being merged.
■ NON_RECTANGULAR_SHAPES. Aborts with an error if there are nonrectangular
shapes on a single marker layer. If this option is not listed, a warning message is
reported. The default is to abort the run if there are nonrectangular shapes on the
marker layer. This condition indicates the possibility of overlapping shapes being
merged.
❍ reflection. Optional. Specifies if the placement is reflected. See Figure 3-210 for
an example of reflection and rotation.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is false.
■ true. Reflects the placement.

■ false. Does not reflect the placement.

❍ rotation. Optional. Specifies the rotation of the placement.


Note:
Reflection is performed before rotation. Rotation is performed before shifting.
The default is ROTATE_0; that is, no rotation.
■ ROTATE_0.

■ ROTATE_90.

■ ROTATE_180.

■ ROTATE_270.

❍ shift. Optional. Specifies the shift of the placement origin from the lower-left corner
of the marker layer rectangle. The default is {0.0, 0.0}; that is, the placement is not
shifted.
Note:
Reflection is performed before rotation. Rotation is performed before shifting.
Rotation does not affect the placement of the origin; it is always the lower-left
corner of the marker layer rectangle.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-957
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Licenses
This function does not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.

Examples
The following example writes m1 layers from the input layout, including net names, to a new
output database defined by ./out/lib.defs.
o = openaccess_library("./out/lib.defs");
write_openaccess(
output_library=o,
connect_sequence=cdb,
net_id = true,
layers = {
{ L_m1_drawing, {"m1","drawing"}},
{ L_m1_pin, {"m1","pin"}}
}
);

The following example appends layers to the input layout lib.defs.


i = openaccess_library("./lib.defs")
write_openaccess(
output_library = i,
mode = APPEND,
virtual_cells = EXPLODE,
output_hierarchy = false,
layers = {
{m1fill, {"m1", "fill"}}
}
);

The following example writes to the HOUT view.


write_openaccess(
output_library=o,
view = "HOUT",
layers = {
{L_m1_drawing, {"m1","drawing"}},
{L_m1_pin, {"m1","pin"}}
},
errors = {
{myerror, {"myerror","drawing"}}
}
);

See Also
error_options()
get_netlist_connect_database()
openaccess_library()

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-958
IC Validator Reference Manual Version N-2017.12-SP2

openaccess_options()
resolution_options()

Chapter 3: Runset Functions: J - Z


write_openaccess() 3-959
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

write_spice()
The write_spice() function invokes the netlist utility, icv_netlist, to generate a SPICE
netlist. The netlist data is created using the device database output from the
extract_devices() function and the polygon layers specified in the connect() function.
Therefore, call the write_spice() function after these functions.
Note:
The icv_netlist utility is in the IC Validator installation directory.
The write_spice() function constructs SPICE instance names as described in the
following Description section.

Syntax
write_spice(
device_db = device_database,
output_file = spice_netlist_file_handle,
model_name_format = NONE | INSTANCE_NAME | SPICE |
COMMENT, //optional
include_empty_cells = NONE | WITH_PORTS | ALL, //optional
precision = integer, //optional
error_report = BRIEF | VERBOSE, //optional
user_functions_file = "string", //optional
include_placement_data = true | false, //optional
flatten = true | false, //optional
compress_netlist = true | false //optional
);

Returns
void

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

output_file
Required. Specifies the SPICE handle. The handle is defined using the
spice_netlist_file() function.

model_name_format
Optional. Specifies how to write the model name on the device line in a SPICE netlist.
The default is COMMENT.
❍ NONE. The model name is not written.

Chapter 3: Runset Functions: J - Z


write_spice() 3-960
IC Validator Reference Manual Version N-2017.12-SP2

❍ INSTANCE_NAME. The model name is appended to the instance name of the device.

❍ SPICE. The model name is written as the fourth field on the device line, just before the
value.
❍ COMMENT. The model name is written in a comment at the end of the device line in the
format: $.model=modelName.
For example,
NONE: C1 node1 node2 value
INSTANCE_NAME: C1_modelName node1 node2 value
SPICE: C1 node1 node2 modelName value
COMMENT: C1 node1 node2 value $.model=modelName
Note:
This argument applies only to capacitor, inductor, and resistor devices.

include_empty_cells
Optional. Specifies which empty cells are written to the cell.net file. Empty cells do not
have devices or instances. A cell is always written out when it is defined as an
equivalence or black-box cell. The default is NONE.
❍ NONE. Does not write empty cells to the cell.net file.

❍ WITH_PORTS. Writes empty cells that have ports to the cell.net file.

❍ ALL. Writes all empty cells to the cell.net file.

precision
Optional. Specifies the maximum number of significant figures reported in the output
SPICE netlist (cell.sp file) for all device properties. The value can be from 1 through 15.
The default is 6. When the precision argument is <=0, the IC Validator tool treats this
value as the default precision.

error_report
Optional. Specifies the verbosity of the error report. The information is written to
output_file.err. If, however, the output_file argument is not set, the default file name
cell.sp.err is used. The default is BRIEF.
❍ BRIEF. Writes only a summary, which contains the total count of layout names that
cannot be cross-referenced.
❍ VERBOSE. Writes details of cross-referencing errors, such as specific layout names
that cannot be cross-referenced.

Chapter 3: Runset Functions: J - Z


write_spice() 3-961
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

user_functions_file
Optional. Specifies the file that contains the remote functions. See “Flexible Netlisting
Utility Functions” in Chapter 4 for more information about the utility functions you can use
to define a remote function.

include_placement_data
Optional. When set to true, the generated SPICE netlist includes coordinate information
for device instances, and coordinate and rotation information for cell instances. The cell
instance information is output for both the placement origin and the lower-left bounding
box position. The default is false.
The following device instance example shows where $X and $Y are the coordinates at
the center of body polygon:
MM0 1 4 3 3 p L=2e-06 W=1.2e-05 $X=11500 $Y=26500

The following cell instance example shows the $X and $Y lower-left bounding box
coordinates and the $T origin placement data:
$T=field1 field2 field3 field4 $X= field5 $Y= field6
field1 = x-coordinate of placement origin
field2 = y-coordinate of placement origin
field3 = reflection (0, 1)
field4 = rotation (0 90 180 270)
field5 = x-coordinate of lower-left
field6 = y-coordinate of lower-left
#the bounding-box of cell INV is (top=0.150000 bottom=-0.115000
#left=-0.120000 right=0.180000)
X1 A Z VDD VSS INV $T=0.82 -0.27 1 270 $X=0.67 $Y=-0.45

Instance X1 is a placement of master cell INV with bounding box = (-0.12 -0.115, 0.18,
0.15). It is placed on (0.82, -0.27) with reflection of 1 and rotation of 270 degrees. The
lower-left coordinate of the bounding box of X1 in the parent call is (0.67, -0.45).

compress_netlist
Optional. Compresses the output netlist generated using the write_spice() function.
The output file name is not altered from the user-specified name set in the
spice_netlist_file() function. The default is false.

flatten
Optional. Specifies if the netlist is flattened. The default is false. See the following
Description section for more information.
❍ true. Writes a flattened SPICE netlist.
Note:
When flatten is true, the model_name_format and user_functions_file
arguments of the write_spice() function are ignored.

Chapter 3: Runset Functions: J - Z


write_spice() 3-962
IC Validator Reference Manual Version N-2017.12-SP2

❍ false. Writes a SPICE netlist that is not flattened.

Description
The IC Validator tool adds instance name prefixes, known as SPICE cards, to cell and
device names. The form of the prefix depends on the value of the flatten argument.
• flatten = true

❍ A hierarchical path name for a device is constructed using instance names originating
in the cell.net layout netlist generated by the netlist() function. A SPICE card
prefix is added to the hierarchical path name. The SPICE card prefix to be added is
defined by the prefix on the original device instance name in the preflattened netlist.
For example, the prefix for an NMOS device is “M_”.
The slash character (/) delineates hierarchical levels inside the flattened hierarchical
instance name.
• flatten = false

❍ All device instance names identically match names originating in the cell.net layout
netlist generated by the netlist() function. No additional SPICE card is added as a
prefix to the device instance name because the netlist() function already adds a
prefix to each device instance name with the appropriate SPICE card.
❍ An “x” prefix is added to cell instance names that originate in the cell.net layout netlist
generated by the netlist() function.

For example, prefixed names for an NMOS device are shown in Table 3-41.
Table 3-41 SPICE Instance Names With Prefixes for an NMOS Device

Instance name Output from the Output when Output when


netlist() function flatten = true flatten = false

Device instance name M1 M_l1/M1 M1

Cell instance name l1 (not applicable) xl1

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Chapter 3: Runset Functions: J - Z


write_spice() 3-963
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Shared licensing. This function requires the following IC Validator license:


HERCULES_DEVICE and HERCULES_NETLIST.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Examples
See the Examples section of the write_xref_spice() function for more information.

See Also
netlist()
read_layout_netlist()
schematic()
spice_netlist_file()
write_xref_spice()

Chapter 3: Runset Functions: J - Z


write_spice() 3-964
IC Validator Reference Manual Version N-2017.12-SP2

write_xref_spice()
The write_xref_spice() function invokes the netlist utility (icv_netlist) to generate a
cross-referenced SPICE netlist. To generate a cross-referenced SPICE netlist, the
write_xref_spice() function must be called after LVS comparison. The resulting SPICE
netlist has back-annotated schematic device and net names.
Note:
The icv_netlist utility is in the IC Validator installation directory.
The write_xref_spice() function constructs SPICE instance names as described in the
Description section of the write_spice() function.

Syntax
write_xref_spice(
device_db = device_database,
xref_db = xref_database_handle,
output_file = spice_netlist_file_handle,
model_name_format = NONE | INSTANCE_NAME |
SPICE | COMMENT, //optional
include_empty_cells = NONE | WITH_PORTS | ALL, //optional
precision = integer, //optional
error_report = BRIEF | VERBOSE, //optional
xref_cell_delimiter = "string", //optional
xref_netlist_filtered_devices = true | false, //optional
xref_prefixes = {device_prefix = "string",
net_prefix = "string",
instance_prefix = "string"},
//optional
user_functions_file = "string", //optional
include_placement_data = true | false, //optional
flatten = true | false, //optional
compress_netlist = true | false //optional
);

Returns
void

Arguments
device_db
Required. Generates the layout netlist from the specified device database. The
extract_devices() function generates this database.

xref_db
Required. Specifies the handle of the database from which cross-reference information
is generated. The handle must be previously defined by the compare() function.

Chapter 3: Runset Functions: J - Z


write_xref_spice() 3-965
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

output_file
Required. Specifies the SPICE file for output. The file is defined using the
spice_netlist_file() function.

model_name_format
Optional. Specifies how to write the model name on the device line in a SPICE netlist.
The default is COMMENT.
❍ NONE. The model name is not written.

❍ INSTANCE_NAME. The model name is appended to the instance name of the device.

❍ SPICE. The model name is written as the fourth field on the device line, just before the
value.
❍ COMMENT. The model name is written in a comment at the end of the device line in the
format: $.model=modelName.
For example,
NONE: C1 node1 node2 value
INSTANCE_NAME: C1_modelName node1 node2 value
SPICE: C1 node1 node2 modelName value
COMMENT: C1 node1 node2 value $.model=modelName
Note:
This argument applies only to capacitor, inductor, and resistor devices.

include_empty_cells
Optional. Specifies which empty cells are written to the cell.net file. Empty cells do not
have devices or instances. A cell is always written out when it is defined as an
equivalence or black-box cell. The default is NONE.
❍ NONE. Does not write empty cells to the cell.net file.

❍ WITH_PORTS. Writes empty cells that have ports to the cell.net file.

❍ ALL. Writes all empty cells to the cell.net file.

precision
Optional. Specifies the maximum number of significant figures reported in the output
SPICE netlist (cell.sp file) for all device properties. The value can be from 1 through 15.
The default is 6. When the precision argument is <=0, the IC Validator tool treats this
value as the default precision.

Chapter 3: Runset Functions: J - Z


write_xref_spice() 3-966
IC Validator Reference Manual Version N-2017.12-SP2

error_report
Optional. Specifies the verbosity of the error report. The information is written to
output_file.err. If, however, the output_file argument is not set, the default file name
cell.sp.err is used. The default is BRIEF.
❍ BRIEF. Writes only a summary, which contains the total count of layout names that
cannot be cross-referenced.
❍ VERBOSE. Writes details of cross-referencing errors, such as specific layout names
that cannot be cross-referenced.

xref_cell_delimiter
Optional. Specifies the delimiter to use when multiple layout cells are netlisted because
several layout cells are matched to the same schematic cell. The delimiter and an ID
determined by the function are the suffix. The default is "_" (underscore).

xref_netlist_filtered_devices
Optional. Specifies whether devices filtered out during the compare process are
netlisted. The default is true.
❍ true. Netlists the devices filtered out by the compare() function.

❍ false. Does not netlist devices filtered out.

xref_prefixes
Optional. Specifies the prefixes to use when layout and schematic device names, net
names, and cell names cannot be cross-referenced properly.
For example, if a device with the layout name M1 cannot be properly cross-referenced,
the netlisted device name is the device-type letter (M), plus the device_prefix option
and the layout name. If the default device prefix is used, the netlisted device name is
M_ld_M1.
❍ device_prefix. Specifies the prefix to use when a layout device name cannot be
cross-referenced properly to a schematic device name. The default is "ld".
❍ net_prefix. Specifies the prefix to use when a layout net name cannot be
cross-referenced properly to a schematic net name. The default is "ln".
❍ instance_prefix. Specifies the prefix to use when a layout cell-instance name
cannot be cross-referenced properly to a schematic cell-instance name. The default
is "li".

Chapter 3: Runset Functions: J - Z


write_xref_spice() 3-967
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

user_functions_file
Optional. Specifies the file that contains the remote functions. See “Flexible Netlisting
Utility Functions” on page 4-110 for more information about the utility functions you can
use to define a remote function.

include_placement_data
Optional. When set to true, the generated SPICE netlist includes coordinate information
for device instances, and coordinate and rotation information for cell instances. The cell
instance information is output for both the placement origin and the lower-left bounding
box position. The default is false.
See the include_placement_data argument of the write_spice() function for
examples.

compress_netlist
Optional. Compresses the output netlist generated using the write_spice() function.
The output file name is not altered from the user-specified name set in the
spice_netlist_file() function. The default is false.

flatten
Optional. Specifies if the netlist is flattened. The default is false. See the Description
section of the write_spice() function for more information.
❍ true. Writes a flattened SPICE netlist.
Note:
When flatten is true, the model_name_format and user_functions_file
arguments of the write_spice() function are ignored.
❍ false. Writes a SPICE netlist that is not flattened.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_DEVICE and HERCULES_NETLIST.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Chapter 3: Runset Functions: J - Z


write_xref_spice() 3-968
IC Validator Reference Manual Version N-2017.12-SP2

Examples
dev_db = extract_devices (dev_matrix);
. . .

xref = compare(cmp_matrix,sch_db,lay_db,
push_down_pins = true,
write_equiv_netlists = ALL,
remove_dangling_net= NONE
);

spice1 = spice_netlist_file("noxref.sp");

write_spice(
device_db = dev_db,
output_file = spice1
);

spice2 = spice_netlist_file("xref.sp");

write_xref_spice(
device_db = dev_db,
xref_db = xref,
output_file = spice2
);

See Also
netlist()
read_layout_netlist()
schematic()
spice_netlist_file()
write_spice()

Chapter 3: Runset Functions: J - Z


write_xref_spice() 3-969
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xor()
The xor() function creates polygons that represent the unique data from two specified
layers. That is, it subtracts the intersecting data of the two layers from the combined data of
the two layers.

Syntax
xor(
layer1 = polygon_layer,
layer2 = polygon_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
polygon layer or error result

Arguments
layer1
Required. Specifies a polygon layer.

layer2
Required. Specifies a polygon layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


xor() 3-970
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
In Figure 3-213, the unique data of layerA and layerB is found.
Result = layerA xor layerB;

Figure 3-213 xor() Function Example

layerA

layerB

Result

See Also
and()
and_edge()
not()
not_edge()
or()
or_edge()
or_list()
xor_edge()

Chapter 3: Runset Functions: J - Z


xor() 3-971
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xor_edge()
The xor_edge() function creates the edges that represent the difference between the two
input layers. Opposing collinear edges are considered different. See edge in the Glossary
for more information about the direction of edges.

Syntax
xor_edge(
layer1 = edge_layer,
layer2 = edge_layer,
processing_mode = CELL_LEVEL | HIERARCHICAL, //optional
name = "layer_label" //optional
);

Returns
edge layer or error result

Arguments
layer1
Required. Specifies the edge layer.

layer2
Required. Specifies the edge layer.

processing_mode
Optional. Specifies how the hierarchy is processed. The default is HIERARCHICAL.
❍ CELL_LEVEL. Processes data only within the context of each individual cell;
placements are ignored.
❍ HIERARCHICAL. Processes all data within the context of the top cell.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Chapter 3: Runset Functions: J - Z


xor_edge() 3-972
IC Validator Reference Manual Version N-2017.12-SP2

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.
Shared licensing. This function requires the following IC Validator license:
HERCULES_MASK.
See the Licensing and Resource Requirements chapter in the IC Validator User Guide for
more information about licensing.

Example
Figure 3-214 shows an example of the xor_edge() function.
out_layer = xor_edge(in_layer1, in_layer2);

Figure 3-214 xor_edge() Function Example


Input Output

layer1 and layer1 and edges edges


layer2 edges layer2 edges removed remain
in same in opposing separate
direction in_layer1 directions
(edge layer)
in_layer2 out_layer
(edge layer) (edge layer)

See Also
and()
and_edge()
not()
not_edge()
or()
or_edge()
or_list()
xor()

Chapter 3: Runset Functions: J - Z


xor_edge() 3-973
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

xref_to_double_property()
The xref_to_double_property() function collects schematic net names and the
corresponding voltage values from a property file that you provide and creates a polygon
layer annotated with voltage property values for the matching layout nets. To find the layout
nets that match the schematic net names, the xref_to_double_property() function
processes a database of cross-reference information generated by a compare() function.
Note:
Properties on a polygon layer are only recognized by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.

Syntax
xref_to_double_property(
xref_db = xref_database_handle,
property_file = "string",
output_from_layer = polygon_layer,
in_connect_sequence = connect_database,
out_connect_sequence = out_connect_database,
name = "layer_label" //optional
);

Returns
polygon layer

Arguments
xref_db
Required. Specifies the handle of the database from which layout hierarchical net
corresponding to the names defined in the property_file argument is selected. The
handle must be previously defined by the compare() function.

property_file
Required. Specifies the property values and names in the corresponding schematic file.
The file format is
file_description property-name-1 property-name-2 ...
schematic_net-1 value value ...
schematic_net-2 value value ...
// this is a comment
schematic_net-3 value value ...
...

Chapter 3: Runset Functions: J - Z


xref_to_double_property() 3-974
IC Validator Reference Manual Version N-2017.12-SP2

The file description is a comment. The following names on the first line define the
property names attached to the output polygons. A maximum of 16 different properties
are supported. Additional or duplicate property names cause a warning and are ignored.
Starting from the second line in the file, each line defines a schematic net with its property
values. If fewer property values than the number of property names on the first line are
given, the last value on the line is repeated for the remaining values.
Each schematic net is composed by a hierarchical path from top to the leaf-equivalence
cell, I1/I2/I3/NET1. Each instance (I1, I2…), refers to an equivalence point and NET1 is
the local net inside the last equivalence point. The local net indicates that it is not a port
of that equivalence point. For example, if X1/N1 is connected to top-level net NT1, you
must specify the latter one. In addition, nets that do not meet these criteria or are not
found in the cross-reference database are reported in the LAYOUT_ERRORS file.
A line that starts with two slashes (//) is a comment.
An incorrectly formatted file results in empty output and a warning message in the
summary file. The IC Validator tool exits the xref_to_double_property() function but
continues running the downstream functions.
The cell-level net can also be defined, as shown in the following format:
cellname net property-name-1 property-name-2
equiv_cell schematic_net-1 value value
equiv_cell schematic_net-2 value value
equiv_cell schematic_net-3 value value
...

The cellname is a predefined keyword that indicates an additional file format used to
define properties by a cell-level net.
The cell in the first column must be an equiv-cell and matic_net-X must be the non-port
net under the equiv-cell.

output_from_layer
Required. Specifies the layer used to create the output property layer. This layer must be
connected in the connect database specified by the in_connect_sequence argument.
For each net, the xref_to_double_property() function selects an arbitrary polygon,
attaches the properties on it, and writes it to the output polygon layer.

in_connect_sequence
Required. Specifies the connect database in which the output_from_layer layer is
connected.
Note:
This database must be the output of another xref_to_double_property() function
or the get_netlist_connect_database() function.

Chapter 3: Runset Functions: J - Z


xref_to_double_property() 3-975
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

out_connect_sequence
Required. Specifies the output connect database that contains the derived layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Example
xref = compare(state = compare_settings,
schematic = schematic_netlist_db,
layout = layout_netlist_db);
POLY_ID = xref_to_double_property(xref_db = xref,
property_file = "VoltageFile.txt",
output_from_layer = POLY,
in_connect_sequence = cdb_xref,
cdb_xref);
POLY_V = net_polygon_by_property(connect_sequence = cdb_xref,
output_from_layer = POLY,
net_polygon_function = net_function,
layer_groups = {"POLY_ID" => POLY_ID});

See Also
net_polygon_by_property()
text_to_double_property()

Chapter 3: Runset Functions: J - Z


xref_to_double_property() 3-976
IC Validator Reference Manual Version N-2017.12-SP2

xref_to_property()
The xref_to_property() function collects schematic net names and the corresponding
voltage values from a property file that you provide and creates a polygon layer annotated
with voltage property values for the matching layout nets. To find the layout nets that match
the schematic net names, the xref_to_property() function processes a database of
cross-reference information generated by a compare() function.
Note:
Properties on a polygon layer are only recognized by the drc_features(),
net_polygon_by_property(), and select_by_double_property() functions. All
other functions ignore properties on a polygon layer and do not propagate the properties
to their result.

Syntax
xref_to_property(
xref_db = xref_database_handle,
property_file = "string",
output_from_layer = polygon_layer,
in_connect_sequence = connect_database,
out_connect_sequence = out_connect_database,
name = "layer_label," //optional
property_merge_methods = {{property_name = "string",
property_type = DOUBLE | DOUBLE_LIST |
STRING},
merge_method = MAX | MIN | CONCATENATE
AUTO} ...}, //optional
report_conflict = true | false //optional
);

Returns
polygon layer

Arguments
xref_db
Required. Specifies the handle of the database from which layout hierarchical net
corresponding to the names defined in the property_file argument is selected. The
handle must be previously defined by the compare() function.

property_file
Required. Specifies the property values and names in the corresponding schematic file.
The file format is

Chapter 3: Runset Functions: J - Z


xref_to_property() 3-977
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

file_description property-name-1 property-name-2 ...


schematic_net-1 value value ...
schematic_net-2 value value ...
// this is a comment
schematic_net-3 value value ...
...

The file description is a comment. The following names on the first line define the
property names attached to the output polygons. A maximum of 16 different properties
are supported. Additional or duplicate property names cause a warning and are ignored.
Starting from the second line in the file, each line defines a schematic net with its property
values. If fewer property values than the number of property names on the first line are
given, the last value on the line is repeated for the remaining values.
Each schematic net is composed by a hierarchical path from top to the leaf-equivalence
cell, I1/I2/I3/NET1. Each instance (I1, I2…), refers to an equivalence point and NET1 is
the local net inside the last equivalence point. The local net indicates that it is not a port
of that equivalence point. For example, if X1/N1 is connected to top-level net NT1, you
must specify the latter one. In addition, nets that do not meet these criteria or are not
found in the cross-reference database are reported in the LAYOUT_ERRORS file.
A line that starts with two slashes (//) is a comment.
An incorrectly formatted file results in empty output and a warning message in the
summary file. The IC Validator tool exits the xref_to_double_property() function but
continues running the downstream functions.
The cell-level net can also be defined, as shown in the following format:
cellname net property-name-1 property-name-2
equiv_cell schematic_net-1 value value
equiv_cell schematic_net-2 value value
equiv_cell schematic_net-3 value value
...

The cellname is a predefined keyword that indicates an additional file format used to
define properties by a cell-level net.
The cell in the first column must be an equiv-cell and matic_net-X must be the non-port
net under the equiv-cell.

output_from_layer
Required. Specifies the layer used to create the output property layer. This layer must be
connected in the connect database specified by the in_connect_sequence argument.
For each net, the xref_to_double_property() function selects an arbitrary polygon,
attaches the properties on it, and writes it to the output polygon layer.

Chapter 3: Runset Functions: J - Z


xref_to_property() 3-978
IC Validator Reference Manual Version N-2017.12-SP2

in_connect_sequence
Required. Specifies the connect database in which the output_from_layer layer is
connected.
Note:
This database must be the output of another xref_to_property() function or the
get_netlist_connect_database() function.

out_connect_sequence
Required. Specifies the output connect database that contains the derived layer.

name
Optional. Specifies the name used by the IC Validator tool for the output layer. This name
is displayed in various output log files, such as the summary, tree, and distributed
processing log files. It is used only for log files; runset variables are not changed. The
default is the name of the layer being created.

property_merge_methods
Optional. Specifies that all of the property types and merge methods in the property file
must be included when non-empty property merge methods are defined. The
IC Validator tool uses the first entry of a property merge method to account for that
property. For a DOUBLE property, the merge_method=MAX setting is used. If a property is
defined by a property merge method, but does not show up in the property file, a warning
message is reported.
❍ property_name. Required. Specifies the user-defined name of the property.

❍ property_type. Specifies the data type of the property. The default is STRING.

■ DOUBLE. Specifies the data type as double.

■ DOUBLE_LIST. Specifies the data type as a double list.

■ STRING. Specifies the data type as string.

❍ merge_method. Specifies the behavior of the IC Validator tool when two or more
entries point to the same layout net. This occurs when the duplicated entries are
defined in the property file, or two nets belong to the same composited net when
using the short_equivalent_nodes() function. The default is MAX.
■ MIN. Specifies the minimum value of the DOUBLE property.

■ MAX. Specifies the maximum value of the DOUBLE property.

■ CONCATENATE. Specifies the value only for the DOUBLE_LIST property.

■ AUTO. Specifies the value only for the STRING property.

Chapter 3: Runset Functions: J - Z


xref_to_property() 3-979
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The restrictions for using the argument are


■ If property_type is DOUBLE, merge_method can only be set to MAX or MIN.
■ If property_type is DOUBLE_LIST, merge_method can only be set to
CONCATENATE.

■ If property_type is AUTO, merge_method can only be set to AUTO.


❍ report_conflict. Optional. Reports conflicted property values and the
corresponding net name to the LAYOUT_ERRORS file. The default is true.
■ true. Reports an error when there is a property value conflict.

■ false. Suppresses an error when there is a property value conflict.

Function Group
COMMAND. See “Function Order in Runsets” on page A-11 for more information.

Licenses
Native licensing. This function requires the following IC Validator license:
ICValidator2-GeometryEngine.

Example
xref = compare(state = compare_settings,
schematic = schematic_netlist_db,
layout = layout_netlist_db);
POLY_ID = xref_to_property(xref_db = xref,
property_file = "VoltageFile.txt",
output_from_layer = POLY,
in_connect_sequence = cdb_xref,
cdb_xref);
POLY_V = net_polygon_by_property(connect_sequence = cdb_xref,
output_from_layer = POLY,
net_polygon_function = net_function,
layer_groups = {"POLY_ID" => POLY_ID});

See Also
net_polygon_by_property()
text_to_double_property()
xref_to_double_property()

Chapter 3: Runset Functions: J - Z


xref_to_property() 3-980
4
Utility Functions 4

This chapter provides descriptions of the utility functions available with the IC Validator
physical verification tool.

In addition to the documentation conventions shown in the Preface, the following convention
is used in the documentation of the IC Validator syntax.

Convention Description

default Indicates the default, such as


low | medium | high

The table-based functionality is described in the following sections:


• General-Purpose Functions
• File Functions
• Introduction to Remote Functions
• Device Utility Functions
• Flexible Netlisting Utility Functions
• Dynamic Linking Utility Functions

4-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Density Utility Functions


• Fill Pattern Utility Functions
• Net Polygon Select Utility Functions
• Net Select Utility Functions
• Net Property Select Utility Functions
• Net Polygon by Property Utility Functions
• Property to Net Utility Functions
• Polygon Features Utility Functions
• Compare Utility Functions
• Edge Features Edge Utility Functions
• DRC Features Utility Functions
• Unified Fill Utility Functions
• EERC Utility Functions

Chapter 4: Utility Functions


4-2
IC Validator Reference Manual Version N-2017.12-SP2

General-Purpose Functions
The functions defined in this section can be used any place in the runset, including in remote
functions. See “Introduction to Remote Functions” on page 4-32.
These functions do not require any additional IC Validator licenses. See the Licensing and
Resource Requirements chapter in the IC Validator User Guide for more information.
There are five types of general-purpose functions:
• Math Functions
• Matrix Functions
• String Functions
• Diagnostics Functions
• Decimal and Integer Number Conversions

Math Functions
The IC Validator tool provides the math functions described in this section.
These functions are defined in the math.rh library file. When using these functions in a
remote function, you must explicitly include this library file in the remote function. For
example, include math.rh in the remote function specified by the user_functions_file
argument of the compare() function.

Trigonometry Functions
Several trigonometry functions are available.

acos()
Calculates the arc cosine of the specified value.

Syntax
acos(
x = double
);

Returns
double

Chapter 4: Utility Functions


General-Purpose Functions 4-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

asin()
Calculates the arc sine of the specified value.

Syntax
asin(
x = double
);

Returns
double

atan()
Calculates the arc tangent of the specified value.

Syntax
atan(
x = double
);

Returns
double

atan2()
Calculates the arc tangent using two values, atan(y,x).

Syntax
atan2(
y = double
x = double
);

Returns
double

cos()
Calculates the cosine of the specified value.

Syntax
cos(
x = double
);

Chapter 4: Utility Functions


General-Purpose Functions 4-4
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

cosh()
Calculates the hyperbolic cosine of the specified value.

Syntax
cosh(
x = double
);

Returns
double

sin()
Calculates the sine of the specified value.

Syntax
sin(
x = double
);

Returns
double

sinh()
Calculates the hyperbolic sine of the specified value.

Syntax
sinh(
x = double
);

Returns
double

tan()
Calculates the tangent of the specified value.

Chapter 4: Utility Functions


General-Purpose Functions 4-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
tanh(
x = double
);

Returns
double

tanh()
Calculates the hyperbolic tangent of the specified value.

Syntax
tanh(
x = double
);

Returns
double

Equivalence Comparison Functions


The equivalence comparison functions allow you to evaluate the equivalence of two values,
not their equality.
Comparing two doubles with x == y can give undesirable results because of rounding errors
that are inherent when computing and storing double values. Because of this in-exactness
associated with doubles, the equality comparison functions consider two values to be
equivalent if they are close enough. When checking equivalence using these functions, two
values are considered to be equivalent if:
abs(x - y) < epsilon * abs(x) AND abs(x - y) < epsilon * abs(y)

The epsilon value for PXL is 0.000001.


For example, dbleq(1063.000001, 1063.0) returns the value true.

dbleq()
Returns the value true if the two specified values are equivalent; otherwise, returns the value
false.

Syntax
dbleq(
x = double
y = double
);

Chapter 4: Utility Functions


General-Purpose Functions 4-6
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

dblge()
Returns the value true if the first specified value is greater than or equivalent to the second
specified value; otherwise, returns the value false.

Syntax
dblge(
x = double
y = double
);

Returns
Boolean

dblgt()
Returns the value true if the first specified value is greater than the second specified value;
otherwise, returns the value false.

Syntax
dblgt(
x = double
y = double
);

Returns
Boolean

dblle()
Returns the value true if the first specified value is less than or equivalent to the second
specified value; otherwise, returns the value false.

Syntax
dblle(
x = double
y = double
);

Returns
Boolean

Chapter 4: Utility Functions


General-Purpose Functions 4-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dbllt()
Returns the value true if the first specified value is less than the second specified value;
otherwise, returns the value false.

Syntax
dbllt(
x = double
y = double
);

Returns
Boolean

dblne()
Returns the value true if the two specified values are not equivalent; otherwise, returns the
value false.

Syntax
dblne(
x = double
y = double
);

Returns
Boolean

Double Comparison Functions


The equivalent comparison functions can be used to compare two doubles with more control
than with the dbleq() equivalent comparison function. The equivalent comparison functions
compare two doubles and determine whether the two numbers are close enough to be
considered equal based on the values for relative and absolute tolerances, which may be
explicitly specified.
If the two numbers are within either tolerance of one another, they are considered close
enough to be considered equal:
// use the relative tolerance (percentage) to get the actual relative
// tolerance (in absolute terms) for these 2 numbers
double rel_tol = rel_tol * max(abs(x), abs(y));
// determine which of the relative and active tolerances is bigger
double active_tol = max(rel_tol, abs_tol);
// check whether the difference between the 2 numbers is less than or
// equal to the tolerance
bool close = abs(x-y) <= active_tol;

Chapter 4: Utility Functions


General-Purpose Functions 4-8
IC Validator Reference Manual Version N-2017.12-SP2

The preprocessor options, DBL_CMP_REL_TOL and DBL_CMP_ABS_TOL are defined to globally


set the default values for the tolerances.
Setting the absolute tolerance depends on the context of the individual comparison, which
may not be correct for other comparisons or if the default is changed globally. The following
#define statements set the tolerances to their current default values.
#define DBL_CMP_REL_TOL 1e-9
#define DBL_CMP_ABS_TOL 0.0

The type of comparison performed by the dblcmp() and dblcmpd() utility functions can be
any one of these values:
• DBL_EQ

• DBL_NE

• DBL_LT

• DBL_LE

• DBL_GT

• DBL_GE

dblcmp()
Returns the value true if the two specified values satisfy the type of comparison, treating
close doubles as equal; otherwise, returns the value false.

Syntax
dblcmp(
x = double
y = double
mode = {DBL_EQ, DBL_NE, DBL_LT, DBL_LE, DBL_GT, DBL_GE},
rel_tol = double = DBL_CMP_REL_TOL,
abs_tol = double = DBL_CMP_ABS_TOL
);

Returns
Boolean

dblcmpd()
Returns the value 1.0 if the two specified values satisfy the type of comparison, treating
close doubles as equal; otherwise, returns the value 0.0.

Syntax
dblcmpd(

Chapter 4: Utility Functions


General-Purpose Functions 4-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

x = double
y = double
mode = {DBL_EQ, DBL_NE, DBL_LT, DBL_LE, DBL_GT, DBL_GE},
rel_tol = double = DBL_CMP_REL_TOL,
abs_tol = double = DBL_CMP_ABS_TOL
);

Returns
double

double_constraint_overlap()
Returns the value true if the two constraints of double overlap, treating close doubles as
equal; otherwise, returns the value false. If two endpoints are very near each other, but are
exclusive endpoints, they might not overlap as a result. If two endpoints are very near each
other, but are inclusive endpoints, they might overlap as a result. If one endpoint is inclusive
and the other endpoint is exclusive, the traditional floating point comparison is used to
determine overlap.

Syntax
double_constraint_overlap(
x = double
y = double
mode = {DBL_EQ, DBL_NE, DBL_LT, DBL_LE, DBL_GT, DBL_GE},
rel_tol = double = DBL_CMP_REL_TOL,
abs_tol = double = DBL_CMP_ABS_TOL
);

Returns
Boolean

Miscellaneous Functions
Functions are available for various operations, such as finding the absolute value.

abs()
Returns the absolute value of the specified value.

Syntax
abs(
x = double
);

Chapter 4: Utility Functions


General-Purpose Functions 4-10
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

ceil()
Returns the smallest integer that is greater than or equal to the specified value. For
example, ceil(2.3) returns the value 3.

Syntax
ceil(
x = double
);

Returns
double

dtoi()
Truncates the specified value to an integer. For example, dtoi(2.3) returns the value 2.

Syntax
dtoi(
x = double
);

Returns
integer

erf()
Returns the error function of x; defined as erf(x) = 2/sqrt(pi)* integral from 0 to x of
exp(-t*t) dt.

Syntax
erf(
x = double
);

Returns
double

exp()
x
Calculates the exponential of the specified value, e .

Chapter 4: Utility Functions


General-Purpose Functions 4-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
exp(
x = double
);

Returns
double

floor()
Returns the largest integer that is less than or equal to the specified value. For example,
floor(2.3) returns the value 2.

Syntax
floor(
x = double
);

Returns
double

fmod()
Calculates the floating point remainder of x divided by y. For example, fmod(2.7, 1.1)
returns the value 0.5.

Syntax
fmod(
x = double
y = double
);

Returns
double

isinf()
Returns the value true if the double evaluates to positive infinity or negative infinity;
otherwise, returns the value false. See the isnan() function for evaluation to “not a
number”.

Syntax
isinf(
x = double
);

Chapter 4: Utility Functions


General-Purpose Functions 4-12
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

isnan()
Returns the value true if the double evaluates to "not a number" (NaN); otherwise, returns
the value false. See the isinf() function for evaluation to infinity.

Syntax
isnan(
x = double
);

Returns
Boolean

log()
Calculates the natural logarithm of the specified value, loge(x).

Syntax
log(
x = double
);

Returns
double

log10()
Calculates the logarithm with base 10 of the specified value, log10(x).

Syntax
log10(
x = double
);

Returns
double

max()
Returns the greater of the two specified values.

Chapter 4: Utility Functions


General-Purpose Functions 4-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
max(
x = double
y = double
);

Returns
double

min()
Returns the lesser of the two specified values.

Syntax
round(
x = double
y = double
);

Returns
double

round()
Returns the integer value that is nearest to the specified value. For example, round(2.7)
and round(3.2) return the value 3.

Syntax
round(
x = double
);

Returns
double

sqrt()
Calculates the square root of the specified value.

Syntax
sqrt(
x = double
);

Chapter 4: Utility Functions


General-Purpose Functions 4-14
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

Matrix Functions
The IC Validator tool provides the matrix functions described in this section.
These functions translate the vmax and vmin properties.

matrix_max()
Specifies the following three usages:
• matrix_max(matrix1, column1, value). The output value is the maximum element
of the column1-th column of matrix1.
Example:
M1 {{6,2,3}, {1,5,4}}, matrix_max(M1, 2, value) = true and value = 4

• matrix_max(matrix1, column1, value, column2). First, find the row which contains
the maximum element of the column1-th column of matrix1. Second, return the
element of the column2-th column in the found row in matrix1. When the maximum
element of the column1-th column of matrix1 is not unique, the row with the minimum
row index is chosen.
Example 1:
M1 {{6,2,3}, {1,5,4}}, matrix_max(M1, 2, value, 0) = true and
value = 1

Example 2:
M1 {{6,2,4}, {1,5,4}}, matrix_max(M1, 2, value, 0) = true and
value = 6

• matrix_max(matrix1, column1, value, column2, matrix2). First, find the row


which contains the maximum element of the column1-th column of matrix1. Second,
return the element of the column2-th column in the found row in matrix2. When the
maximum element of the column1-th column of matrix1 is not unique, the row with the
minimum row index is chosen.
Example 1:
M1 {{6,2,3}, {1,5,4}} and M2 {{6,7,8}, {9,10,11}},
matrix_max(M1, 2, value, 0, M2) = true and value = 9

Example 2:
M1 {{6,2,4}, {1,5,4}} and M2 {{6,7,8}, {9,10,11}},

Chapter 4: Utility Functions


General-Purpose Functions 4-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

matrix_max(M1, 2, value, 0, M2) = true and value = 6

Limitations:
• column1 should be a nonnegative value, as should column2 when explicitly specified.

• column1 should be less than the column count of matrix1 and column2 must be less
than the column count of matrix1 or matrix2 (when matrix2 is explicitly specified.
• The row count of matrix1 must be equal to that of matrix2 if explicitly specified.

If one of these limitations exists or the specified matrix1 or matrix2 is empty, the
matrix_min() function returns the value false; otherwise, returns true. If the function
returns false, the value is meaningless.

Syntax
matrix_max(
matrix1 = list_of_list_of_double,
column1 = integer,
value = {double, ...},
column2 = integer, //optional
matrix2 = out_double //optional
);

Returns
Boolean

Arguments
matrix1
Required. Specifies a two-dimensional matrix.

column1
Required. Specifies a nonnegative integer i that indicates the ith column of matrix1.

value
Required. Specifies a double data type variable to store the returned double value.

column2
Optional. Specifies a nonnegative integer i that indicates the ith column of matrix1 or
matrix2 (when matrix2 is explicitly specified). The default is a NULL_INTEGER.

matrix2
Optional. Specifies the second two-dimensional matrix. The default value is an empty list
“{}”.

Chapter 4: Utility Functions


General-Purpose Functions 4-16
IC Validator Reference Manual Version N-2017.12-SP2

matrix_min()
Specifies the following three usages:
• matrix_min(matrix1, column1, value). The output value is the minimum element of
the column1-th column of matrix1.
Example:
M1 {{6,2,4}, {1,5,3}}, matrix_min(M1, 2, value) = true and value = 3

• matrix_min(matrix1, column1, value, column2). First, find the row which contains
the minimum element of the column1-th column of matrix1. Second, return the element
of the column2-th column in the found row in matrix1. When the minimum element of
the column1-th column of matrix1 is not unique, the row with the minimum row index is
chosen.
Example 1:
M1 {{6,2,4}, {1,5,3}}, matrix_max(M1, 2, value, 0) = true and
value = 1

Example 2:
M1 {{6,2,4}, {1,5,3}}, matrix_min(M1, 2, value, 0) = true and
value = 6

• matrix_min(matrix1, column1, value, column2, matrix2). First, find the row


which contains the minimum element of the column1-th column of matrix1. Second,
return the element of the column2-th column in the found row in matrix2. When the
minimum element of the column1-th column of matrix1 is not unique, the row with the
minimum row index is chosen.
Example 1:
M1 {{6,2,4}, {1,5,3}} and M2 {{6,7,8}, {9,10,11}},
matrix_min(M1, 2, value, 0, M2) = true and value = 9

Example 2:
M1 {{6,2,4}, {1,5,4}} and M2 {{6,7,8}, {9,10,11}},
matrix_min(M1, 2, value, 0, M2) = true and value = 6

Limitations:
• column1 should be a nonnegative value, as should column_index2 when explicitly
specified.
• column1 should be less than the column count of matrix1 and column2 must be less
than the column count of matrix1 or matrix2 (when matrix2 is explicitly specified.
• The row count of matrix1 must be equal to that of matrix2 if explicitly specified.

Chapter 4: Utility Functions


General-Purpose Functions 4-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
matrix_min(
matrix1 = list_of_list_of_double,
column1 = integer,
value = {double, ...},
column2 = integer, //optional
matrix2 = out_double //optional
);

Returns
Boolean

Arguments
matrix1
Required. Specifies a two-dimensional matrix.

column1
Required. Specifies a nonnegative integer i that indicates the ith column of matrix1.

value
Required. Specifies a double data type variable to store the returned double value.

column2
Optional. Specifies a nonnegative integer i that indicates the ith column of matrix1 or
matrix2 (when matrix2 is explicitly specified). The default is a NULL_INTEGER.

matrix2
Optional. Specifies the second two-dimensional matrix. The default value is an empty list
“{}”.

String Functions
The IC Validator tool provides the string functions described in this section.
These functions are defined in the string.rh library file. When using these functions in a
remote function, you must explicitly include this library file in the remote function.

find()
Searches for the substring needle in the string haystack, beginning at the offset start. The
offset start is the value of the integer argument. The return value is the place it starts at, or
-1 if the substring is not found. The default of the integer argument is 0.

Chapter 4: Utility Functions


General-Purpose Functions 4-18
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
find(
haystack = "string",
needle = "string",
integer = integer
);

Returns
integer

Examples
Here are two examples of the find() function.
This example returns the value 5:
find("Rule M1", "M1", 0)

This example returns the value -1:


find("Rule M1", "M2", 0) returns -1

rfind()
Similar to find(), except that it starts looking from the end.

Syntax
rfind(
haystack = "string",
needle = "string"
);

Returns
integer

split_string()
Splits the input string into a list of token strings. The input string is split whenever one of the
characters in the delimiter string is found in it.
• The delimiters are case-sensitive.
• The delimiters never appear in an output token string.
• When the input string is empty or consists of only delimiters, the output list of token
strings is empty.

Chapter 4: Utility Functions


General-Purpose Functions 4-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• When the input string is not empty and does not contain any of the delimiters, the output
list has a single token string.

Syntax
split_string(
input = "string",
delimiters = "string"
);

Returns
list of string

Examples
Table 4-1 shows examples of the split_string() function.
Table 4-1 Examples of split_string() Function

Input Delimiters Output

“The quick brown fox jumps over the lazy dog.” “ .” “The”, “quick”, “brown”,
(Space followed by “fox”, “jumps”, “over”, “the”,
a period.) “lazy”, “dog”

“/disk/dir/file.ext” “/” “disk”, “dir”, “file.ext”

“/disk/dir/file.ext” “/.” “disk”, “dir”, “file”, “ext”

“TembeddedTtextTwithTanToddTdelimiterT” “T” “embedded”, “text”, “with”,


“an”, “odd”, “delimiter”

Chapter 4: Utility Functions


General-Purpose Functions 4-20
IC Validator Reference Manual Version N-2017.12-SP2

strcasecmp()
Compares two strings, s1 and s2. Returns a negative value if s1 is less than s2, a positive
value if s1 is greater than s2, or 0 (zero) if the strings are equal. This function is similar to
the strcmp() function, but the strcasecmp() function is not case-sensitive.
The strings are compared byte-by-byte from the beginning. One string is considered less
than the other if its first non-matching byte has a lower ASCII value. When one string
matches the prefix of another, longer string, the shorter string is considered less than the
longer string.

Syntax
strcasecmp(
s1 = "string",
s2 = "string"
);

Returns
integer

Examples
Here are five examples of the strcasecmp() function.
This example returns the value 0; the strings are equal:
strcasecmp("abc", "abc");

This example returns the value 0; the function is not case-sensitive:


strcasecmp("ABC", "abc");

This example returns a negative value; numerical characters have a lower value in the
POSIX locale:
strcasecmp("1", "one");

This example returns a positive value; when one string matches the prefix of the other string,
the longer string has a greater value:
strcasecmp("abcd", "abc");

This example returns a positive value; the function is not case-sensitive, and when one
string matches the prefix of the other string, the longer string has a greater value:
strcasecmp("ABCd", "abc");

Chapter 4: Utility Functions


General-Purpose Functions 4-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

strcmp()
Compares two strings, s1 and s2. Returns a negative value if s1 is less than s2, a positive
value if s1 is greater than s2, or 0 (zero) if the strings are equal.
The strings are compared byte-by-byte from the beginning. One string is considered less
than the other if its first non-matching byte has a lower ASCII value. When one string
matches the prefix of another, longer string, the shorter string is considered less than the
longer string.

Syntax
strcmp(
s1 = "string",
s2 = "string"
);

Returns
integer

Examples
Here are five examples of the strcmp() function.
This example returns the value 0; the strings are equal:
strcmp("abc", "abc");

This example returns a negative value; uppercase letters have a lower value than lowercase
letters in the POSIX locale:
strcmp("ABC", "abc");

This example returns a negative value; uppercase letters have a lower value than lowercase
letters in the POSIX locale:
strcmp("ABCd", "abc");

This example returns a negative value; numerical characters have a lower value in the
POSIX locale:
strcmp("1", "one");

This example returns a positive value; when one string matches the prefix of the other string,
the longer string has a greater value:
strcmp("abcd", "abc");

Chapter 4: Utility Functions


General-Purpose Functions 4-22
IC Validator Reference Manual Version N-2017.12-SP2

strcspn()
Reports the length of the matching substring, starting from the beginning of the input, that
contains none of the specified characters.

Syntax
strcspn(
input = "string",
letters = "string"
);

Returns
integer

Examples
Here are two examples of the strcspn() function.
This example returns the value 5:
strcspn("Rule M1", "M1", 0)

This example returns the value 5:


strcspn("Rule M1", "M2", 0)

string_match()
Compares two strings. Returns the value true if the input matches the pattern; otherwise, the
returns the value false.
String matching using metacharacters is allowed:
• * matches 0 or more characters.
• ? matches 1 character.
• [] matches any character specified in the brackets.
• - specifies a range.
• [^] matches any character not specified in the brackets.
Note:
The ! metacharacter is not supported.
When you specify a range using the - metacharacter, the order of the characters is:
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

Chapter 4: Utility Functions


General-Purpose Functions 4-23
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See “String Matching” on page A-11 for more information.

Syntax
string_match(
input = "string",
pattern = "string"
);

Returns
Boolean

Arguments
input
Required. Specifies a string variable.

pattern
Required. Specifies a regular expression pattern.

strncasecmp()
Compares the specified number of characters (num) at the beginning of two strings, s1 and
s2. Returns a negative value if s1 is less than s2, a positive value if s1 is greater than s2, or
0 (zero) if the strings are equal. This function is similar to the strncmp() function, but the
strncasecmp() function is not case-sensitive.

The strings are compared byte-by-byte from the beginning. One string is considered less
than the other if its first non-matching byte has a lower ASCII value. When one string
matches the prefix of another, longer string, the shorter string is considered less than the
longer string. If the first num characters match, then the function returns 0, regardless of any
subsequent characters in the strings.

Syntax
strncasecmp(
s1 = "string",
s2 = "string",
num = integer
);

Returns
integer

Chapter 4: Utility Functions


General-Purpose Functions 4-24
IC Validator Reference Manual Version N-2017.12-SP2

Examples
Here are five examples of the strncasecmp() function.
This example returns the value 0; the function is not case-sensitive:
strncasecmp("ABC", "abc", 3);

This example returns the value 0; the strings are considered equal because only the first
three characters are compared::
strncasecmp("abcd", "abc", 3);

This example returns a positive value; when one string matches the prefix of the other string,
the longer string has a greater value:
strncasecmp("abcd", "abc", 4);

This example returns the value 0; the strings are considered equal because only the first
three characters are compared:
strncasecmp("ABCd", "abc", 3);

This example returns a positive value; the function is not case-sensitive, and when one
string matches the prefix of the other string, the longer string has a greater value:
strncasecmp("ABCd", "abc", 4);

strncmp()
Compares the specified number of characters (num) at the beginning of two strings, s1 and
s2. Returns a negative value if s1 is less than s2, a positive value if s1 is greater than s2, or
0 (zero) if the strings are equal. This function is similar to the strcmp() function, but the
strncmp() function compares only the number of characters at the beginning of the strings
specified by the num argument.
The strings are compared byte-by-byte from the beginning. One string is considered less
than the other if its first non-matching byte has a lower ASCII value. When one string
matches the prefix of another, longer string, the shorter string is considered less than the
longer string. If the first num characters match, then the function returns 0, regardless of any
subsequent characters in the strings.

Syntax
strncmp(
s1 = "string",
s2 = "string",
num = integer
);

Chapter 4: Utility Functions


General-Purpose Functions 4-25
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
integer

Examples
Here are five examples of the strncmp() function.
This example returns the value 0; the strings are equal:
strncmp("abc", "abc", 3);

This example returns a negative value; uppercase letters have a lower value than lowercase
letters in the POSIX locale:
strncmp("ABC", "abc", 3);

This example returns the value 0; the strings are considered equal because only the first
three characters are compared:
strncmp("abcd", "abc", 3);

This example returns a positive value; when one string matches the prefix of the other string,
the longer string has a greater value:
strncmp("abcd", "abc", 4);

This example returns a negative value; numerical characters have a lower value in the
POSIX locale:
strncmp("1", "one", 3);

strspn()
Returns the length of the matching substring, starting from the beginning of the input, that
contains only the specified characters.

Syntax
strspn(
input = "string",
letters = "string"
);

Returns
integer

Chapter 4: Utility Functions


General-Purpose Functions 4-26
IC Validator Reference Manual Version N-2017.12-SP2

Examples
Here are two examples of the strspn() function.
This example returns the value 2:
strspn("Rule M1", "M1", 0)

This example returns the value 1:


strspn("Rule M1", "M2", 0)

strtod()
Converts a string to a double value.

Syntax
strtod(
s = "string"
);

Returns
double

Example
You can use the strtod() function to convert the value of an environment variable to a
corresponding double value.
For example, the environment variable NEWVAL is set on a UNIX command-line before
calling IC Validator in a runset.
% setenv NEWVAL 8734.5

Then, in the runset, you could include this code:


#include <icv.rh>
double_val : double = strtod($NEWVAL); // Sets double_val to 8734.5

strtoi()
Converts a string to an integer value.

Syntax
strtoi(
s = "string"
);

Chapter 4: Utility Functions


General-Purpose Functions 4-27
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
integer

Example
You can use the strtoi() function to convert the value of an environment variable to a
corresponding integer value.
For example, the environment variable NEWVAL is set on a UNIX command-line before
calling IC Validator in a runset.
% setenv NEWVAL 8734.5

Then, in the runset, you could include this code:


#include <icv.rh>
int_val : integer = strtoi($NEWVAL); // Sets int_val to 8734

substr()
Returns the substring that starts at the specified, 0-based, index and that has the length
specified to the end of the input string.

Syntax
substr(
input = "string",
start = integer,
length = integer
);

Returns
string

Examples
Here are two examples of the substr() function.
This example returns the string “M1”:
substr("M1 Rule", 0, 2)

This example returns the string “Rule”:


substr("M1 Rule", 3, 4)

Chapter 4: Utility Functions


General-Purpose Functions 4-28
IC Validator Reference Manual Version N-2017.12-SP2

tolower()
Returns the string with all letters converted to lowercase.

Syntax
tolower(
s = "string"
);

Returns
string

toupper()
Returns the string with all letters converted to uppercase characters.

Syntax
toupper(
s = "string"
);

Returns
string

Diagnostics Functions
The IC Validator tool provides the diagnostic functions described in this section.
These functions are defined in the diagnostics.rh library file. When using these functions in
a remote function, you must explicitly include this library file in the remote function.

error()
Writes the provided message then terminates execution.

Syntax
error(
message = "string"
);

Returns
void

Chapter 4: Utility Functions


General-Purpose Functions 4-29
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fatal()
Writes the provided message then terminates execution.

Syntax
fatal(
message = "string"
);

Returns
void

note()
Writes the provided message but does not terminate execution.

Syntax
note(
message = "string"
);

Returns
void

warning()
Writes the provided message but does not terminate execution.

Syntax
warning(
message = "string"
);

Returns
void

Decimal and Integer Number Conversions


The double_to_integer_coordinate() and integer_coordinate_to_double()
functions are primarily used by the remote functions of the polygon_features() function.
See the Fill Pattern Utility Functions and Polygon Features Utility Functions sections in this
chapter.

Chapter 4: Utility Functions


General-Purpose Functions 4-30
IC Validator Reference Manual Version N-2017.12-SP2

double_to_integer_coordinate()
Converts a double to an integer based on the working resolution. Exact integer
representations based on the working resolution are necessary for making comparisons of
numbers that represent coordinates.

Syntax
double_to_integer_coordinate(
x = double
);

Returns
integer

integer_coordinate_to_double()
Converts an integer coordinate to a double based on the working resolution.

Syntax
integer_coordinate_to_double(
x = integer
);

Returns
double

File Functions
The file function defined in this section can be used for any file name parameter in any
function.

search_include_path()
The search_include_path() function tells IC Validator to search for the specified file in
any include path specified with the -I command-line option. The specified file is searched
for in the current run directory, and then in the include path. See the Command-Line Options
section in the “IC Validator Basics” chapter of the IC Validator User Guide for information
about the -I command-line option. The default include path is the $ICV_HOME_DIR/
include directory.
For example, using
compare(...,

Chapter 4: Utility Functions


File Functions 4-31
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

user_functions_file = search_include_path("lvs_functions.rs"),
...);

when the IC Validator tool is run with the -I includemedir command-line option, sets the
user_functions_file as

• “includemedir/lvs_functions.rs” if the file includemedir/lvs_functions.rs exists


• “lvs_functions.rs”, otherwise

Syntax
search_include_path(
filename = "string"
);

Arguments
filename
Required. Specifies a file name. The full path is not required.

Introduction to Remote Functions


Remote functions, such as the function specified in the property_function argument of
the capacitor() function, are called within runset functions to perform specific actions.
These remote functions are written using IC Validator utility functions that are tailored to
defining the actions you want to perform. Most of these utility functions are specific to the
runset function that calls the remote function. You cannot use these functions elsewhere in
the runset.
Values returned within a remote function are only accessible within the remote function. You
cannot pass a value out of a remote function into the "main" runset scope. Passing data out
of a remote function requires the use of an appropriate save function in the module, such as
the df_save_data() function.
Remote functions are invoked one time for each data object. Therefore, you do not have to
manually iterate through data. The individual data objects are not available in the main
program but layers are not available in the remote functions
Because the utility functions operate on data objects, you use these functions for actions
such as retrieving data to be processed, calculating specific data, and writing data objects.
For example, say you want the density function to verify that a layer meets minimum density
requirements across a 100x100 m subwindow. To do this verification, set up the criteria for
the delta_window argument in a remote function. The criteria could be:
layer_area/window_area > 7%
where layer_area is the area of the input layer within the current subwindow.

Chapter 4: Utility Functions


Introduction to Remote Functions 4-32
IC Validator Reference Manual Version N-2017.12-SP2

The density function sends each subwindow to the remote function. The remote function
operates on data and results are accumulated by the density function.
The remote function is passed to the parent function by name. For example,
polygon_features(
layer = layerA
polygon_function = user_polygon_function // remote function
);

The passed remote function, user_polygon_function, independently operates on each


polygon within layerA.
Utility functions cannot be used in all remote functions. The prefix of the utility function name
indicates in which remote function it can be used. For example,
• pf_polygon_area() – Polygon features. Returns the area of the polygon being
processed.
• den_polygon_area() – Density. Returns the area of all polygons inside the density
window.
The following sections describe the utility functions that you can use when writing remote
functions.
• Device Utility Functions
• Density Utility Functions
• Fill Pattern Utility Functions
• Net Polygon Select Utility Functions
• Net Select Utility Functions
• Net Property Select Utility Functions
• Net Polygon by Property Utility Functions
• Polygon Features Utility Functions
• Compare Utility Functions
• Edge Features Edge Utility Functions
• DRC Features Utility Functions

Chapter 4: Utility Functions


Introduction to Remote Functions 4-33
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Device Utility Functions


Use the device utility functions to define the remote functions for the device configuration
functions. There are two types of utility functions associated with device utility functions:
those functions used by the property_function or device_function arguments, and
those functions used by the spice_netlist_function argument.
• Utility functions that start with the dev prefix can be called in remote functions for any
device type. Device utility functions that do not start with the dev_prefix can be called
only in remote functions of specific device types, as shown in Table 4-2.
Note:
An exception are the device parallel utility functions. These functions can only be
used in the remote functions for MOS devices. See the Device Parallel Functions
section for information about these utility functions.
• Utility functions that start with the flx_ prefix can be called only in
spice_netlist_function remote functions. See “Flexible Netlisting Utility Functions”
on page 4-110.
Table 4-2 Device Utility Functions

Utility function prefix Device configuration See this section


function

dev_ All device Device Body Coordinate Function


configuration functions Device Parallel Functions
Device Error Utility Function
polygon_set Property Functions
polygon_set to polygon_set Property Utility
Functions
Saving Properties Utility Functions
Retrieving polygon_set Utility Functions

cap_ capacitor() Capacitor Utility Functions

ind_ inductor() Inductor Utility Functions

mos_ nmos(), pmos() NMOS and PMOS Utility Functions

diode_ np(), pn() Diode (NP and PN) Utility Functions

bjt_ npn(), pnp() Bipolar Transistor (NPN and PNP) Utility


Functions

Chapter 4: Utility Functions


Device Utility Functions 4-34
IC Validator Reference Manual Version N-2017.12-SP2

Table 4-2 Device Utility Functions (Continued)

Utility function prefix Device configuration See this section


function

res_ resistor() Resistor Utility Functions

In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

Capacitor Utility Functions


These utility functions can be called in the capacitor() remote function. Use these utility
functions to get capacitor geometric parameters. Figure 4-1 and Figure 4-2 are examples of
these functions.
Figure 4-1 Example of Capacitor Utility Function Results: Fringing Edge Example
top view side view

POLY

METAL POLY METAL

fringing region

capacitor region - top view

cap_area()

cap_fringe_edge()

Chapter 4: Utility Functions


Device Utility Functions 4-35
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-2 Example of Capacitor Utility Function Results: Overlap Capacitor Coincident Edge
Example
AA capacitor region AA

METAL
cap_area() METAL

BB CC cap_coincident_edge()
BB CC
POLY
cap_perim()

cap_area()
Returns the area of the capacitor. See Figure 4-1 and Figure 4-2.

Syntax
cap_area();

Returns
double

cap_area_capval()
Returns the capacitance per unit area.

Syntax
cap_area_capval();

Returns
double

cap_area_capval_assigned()
Returns the value true if you have specified a nonzero value for the optional area_capval
argument of the capacitor() function; otherwise returns the value false.

Syntax
cap_area_capval_assigned();

Returns
Boolean

Chapter 4: Utility Functions


Device Utility Functions 4-36
IC Validator Reference Manual Version N-2017.12-SP2

cap_coincident_edge()
Returns the length of the coincident edge where terminal_a is coincident with
terminal_b. See Figure 4-2.

Syntax
cap_coincident_edge();

Returns
double

cap_coinedge_capval()
Returns the capacitance per unit length (in F/m) of the coincident edge where terminal_a
is coincident with terminal_b.

Syntax
cap_coinedge_capval();

Returns
double

cap_coinedge_capval_assigned()
Returns the value true if you have specified a nonzero value for the optional
coinedge_capval argument of the capacitor() function; otherwise, returns the value
false.

Syntax
cap_coinedge_capval_assigned();

Returns
Boolean

cap_fringe_edge()
Returns the length of the capacitor edge of terminal_b overlapped by terminal_a. See
Figure 4-1.

Syntax
cap_fringe_edge();

Chapter 4: Utility Functions


Device Utility Functions 4-37
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

cap_fringe_edge_capval()
Returns the capacitance per unit length (in F/m) of the edge of terminal_b overlapped by
terminal_a.

Syntax
cap_fringe_edge_capval();

Returns
double

cap_fringe_edge_capval_assigned()
Returns the value true if you have specified a nonzero value for the optional
fringe_edge_capval argument of the capacitor() function; otherwise, returns the value
false.

Syntax
cap_fringe_edge_capval_assigned();

Returns
Boolean

cap_length()
Returns the length of the extracted capacitor.

Syntax
cap_length();

Returns
double

cap_perim()
Returns the perimeter of the capacitor. See Figure 4-2.

Syntax
cap_perim();

Chapter 4: Utility Functions


Device Utility Functions 4-38
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

cap_perim_capval()
Returns the capacitance per unit length of capacitor perimeter.

Syntax
cap_perim_capval();

Returns
double

cap_perim_capval_assigned()
Returns the value true if you have specified a nonzero value for the optional perim_capval
argument of the capacitor() function; otherwise, returns the value false.

Syntax
cap_perim_capval_assigned();

Returns
Boolean

cap_width()
Returns the width of the extracted capacitor.

Syntax
cap_width();

Returns
double

Inductor Utility Functions


These utility functions can be called in the inductor() remote function. Use these functions
to get inductor geometric parameters. Figure 4-3 shows the results of these functions.

Chapter 4: Utility Functions


Device Utility Functions 4-39
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-3 Example of Inductor Utility Function Results

ind_area()
ind_width()
ind_bbox_area()

ind_space() ind_bbox_height()

ind_length()

ind_bbox_width()

ind_area()
Returns the area of inductor. See Figure 4-3.

Syntax
ind_area();

Returns
double

ind_bbox_area()
Returns the area of the bounding box. The edges of the bounding box are the outside edges
of the device. See Figure 4-3.

Syntax
ind_bbox_area();

Returns
double

ind_bbox_height()
Returns the height of the bounding box that contains the inductor. The height is the longer
edge length of the bounding box. See Figure 4-3.

Chapter 4: Utility Functions


Device Utility Functions 4-40
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
ind_bbox_height();

Returns
double

ind_bbox_width()
Returns the width of the bounding box that contains the inductor. The width is the shorter
edge length of the bounding box. See Figure 4-3.

Syntax
ind_bbox_width();

Returns
double

ind_edge()
Returns a number that represents the number of edges on a polygon.

Syntax
ind_edge();

Returns
double

ind_length()
Returns the length from one end of the inductor body to the other end. See Figure 4-3.

Syntax
ind_length();

Returns
double

ind_space()
Returns the shortest distance between the turns of a coil. See Figure 4-3.

Chapter 4: Utility Functions


Device Utility Functions 4-41
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
ind_space();

Returns
double

ind_turn()
Turns of the spiral inductor. For example, the inductor shown in Figure 4-4 has 2 turns.
Figure 4-4 Two-Turn Inductor

Syntax
ind_turn();

Returns
double

ind_width()
Returns the width of a coiled wire. See Figure 4-3.

Syntax
ind_width();

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-42
IC Validator Reference Manual Version N-2017.12-SP2

NMOS and PMOS Utility Functions


These utility functions can be called in the nmos() and pmos() and mos_select() remote
functions. Use these functions to get MOSFET geometric parameters. Figure 4-5 and
Figure 4-6 are examples of these functions.
Figure 4-5 Example of MOSFET Utility Function Results

mos_length_2()

mos_width_2()

mos_gate_area()

mos_width_1()
mos_source_area()
mos_drain_area()

mos_width_num_45() = 2
mos_width_num_90() = 2 mos_length_1()

Figure 4-6 MOSFET Bent Gate


S G D

mos_width_bend_1()

mos_width_bend_2()

mos_contact_diffusion_area_list()
Fractures diffusion polygons into regions based on the placement of diffusion contacts, and
returns the area of the diffusion regions that are split by these contacts. The function is
invoked on an individual pairing of a body polygon to a source or drain polygon. This

Chapter 4: Utility Functions


Device Utility Functions 4-43
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

behavior means that separate calls to the function are necessary for source area fracturing
and for drain area fracturing. Also, separate calls to the function are necessary for each gate
polygon that is a member of a multiple finger device.
Note:
Only straight and bent gates with vertical or horizontal orientations are allowed.
Unlike the mos_proximity_list() function, which has a direction argument, the
mos_contact_diffusion_area_list function determines the direction based on the input
polygon sets for body and source_drain, and the touching edge between them.
In the following example, there are two body polygons. The property function of the nmos(),
pmos(), or mos_select() function is executed twice, independently, one time for each body
polygon. The direction determination for each device is independent, too. In this example,
each body polygon has only one touching edge. As shown, the target direction for the lower
body polygon is RIGHT.

body polygons

shared source/drain polygon

contact polygons

touching edge

Syntax
mos_contact_diffusion_area_list(
body = polygon_set,
source_drain = polygon_set,
contact = polygon_set,
area = {out_double, ...},
width = {out_double, ...},
count = out_integer
);

Returns
void

Chapter 4: Utility Functions


Device Utility Functions 4-44
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
body
Required. Specifies a gate layer.

source_drain
Required. Specifies a diffusion layer representing either the source or the drain polygon,
but not both. A diffusion layer cannot touch the body more than one time.

contact
Required. Specifies a contact layer specified in the processing_layer_hash argument
of the nmos() or pmos() function and returned by a call to the
dev_processing_layer() function. The underlying source_drain polygon is fractured
according to the placement of contact in two ways:
❍ The source_drain polygon is fractured along lines perpendicular to the body edge
that run between the body edge and the center point of each contact layer polygon.
❍ The source_drain polygon is fractured along lines running exactly midway between
and parallel to fracture lines created by contact polygon center points.
The center point of a contact layer is calculated based on the contact layer bounding box.
That is, where lt is left top and rb is right bottom:
center_x = (lt.x + rb.x) / 2
center_y = (lt.y + rb.y) / 2

A contact is involved in the source_drain polygon fracturing only when its center point
is inside the source_drain polygon.
Figure 4-7 shows an example of contact center point fracture lines.

Chapter 4: Utility Functions


Device Utility Functions 4-45
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-7 Contact Center Point Fracture Lines

area
Required. Specifies the variables where the area of each region is stored.
Note:
List elements follow this order:
1. From top to bottom for vertical MOS.
2. From right to left for horizontal MOS.

width
Required. Specifies the variables where the width of each region is stored.
Note:
The element order is the same as for area.

count
Required. Specifies the variable where the number of fracture regions is stored. This
variable represents the size of the area and width list of doubles. If there is no contact
between a body polygon and a source_drain polygon, count is 0 (zero).

Chapter 4: Utility Functions


Device Utility Functions 4-46
IC Validator Reference Manual Version N-2017.12-SP2

Example
Figure 4-8 shows an example of the areas and widths into which diffusion is fractured. The
count is 11; a partial overlap is not counted when the center point of the contact is outside
the src_drn_layer.
Figure 4-8 Area and Widths of Fractured Regions

mos_drain_area()
Returns the area of the drain. See Figure 4-5.

Syntax
mos_drain_area();

Returns
double

mos_drain_perim()
Returns the perimeter of the drain minus the width of the gate that touches the drain.

Chapter 4: Utility Functions


Device Utility Functions 4-47
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
mos_drain_perim();

Returns
double

mos_gate_area()
Returns the area of the gate. See Figure 4-5.

Syntax
mos_gate_area();

Returns
double

mos_gate_perim()
Returns the perimeter of the gate.

Syntax
mos_gate_perim();

Returns
double

mos_get_dfm_double()
Returns a value, based on the input values, from a user provided table. The file containing
the table must be specified using the dfm_files argument of the init_device_matrix()
function.
See Appendix 9, Table-Based Lookup Functionality” in the IC Validator LVS User Guide for
more information.

Syntax
mos_get_dfm_double(
table = "string",
index = {double, ...}
);

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-48
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
table
Required. Specifies the table that contains data from which a value is returned.

index
Required. Specifies the input variables used to determine the return value.

mos_length_1()
Returns the length of the gate between the source and drain at one end. See Figure 4-5.

Syntax
mos_length_1();

Returns
double

mos_length_2()
Returns the length of the gate between the source and drain at the other end. See
Figure 4-5.

Syntax
mos_length_2();

Returns
double

mos_length_avg()
Returns the length of the center line from one terminal to the other.

Syntax
mos_length_avg();

Returns
double

mos_length_max()
Returns the maximum length of a gate.

Chapter 4: Utility Functions


Device Utility Functions 4-49
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
mos_length_max();

Returns
double

mos_length_min()
Returns the minimum length of a gate.

Syntax
mos_length_min();

Returns
double

mos_length_num_45()
Returns the number of 45-degree bends along the length of the gate.

Syntax
mos_length_num_45();

Returns
double

mos_length_num_90()
Returns the number of 90-degree bends along the length of the gate.

Syntax
mos_length_num_90();

Returns
double

mos_nrd()
Returns the number of squares of drain resistance.

Syntax
mos_nrd();

Chapter 4: Utility Functions


Device Utility Functions 4-50
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

mos_nrs()
Returns the number of squares of source resistance.

Syntax
mos_nrs();

Returns
double

mos_proximity_corner_list()
The mos_proximity_corner_list() function measures the Well Proximity Effect (WPE)
corner effect values by extracting projection distances between body vertices and corners of
the projection_polygons. The function calculates two lists of measurements representing
the horizontal and vertical distances between the specified body (gate) corner and each
pointed concave projection_polygons (well) corner. The projection_polygons should
enclose the body for the gate-to-well corner projection of interest.
This function can be called multiple times within the remote function called by the
mos_select(), nmos(), and pmos() functions.

Syntax
mos_proximity_corner_list(
body = polygon_set,
projection_polygons = polygon_set,
perpendicular_projection_lengths = {out_double, ...},
parallel_projection_lengths = {out_double, ...},
direction = LEFT_TOP | LEFT_BOTTOM |
RIGHT_TOP | RIGHT_BOTTOM,
count = out_integer
);

Returns
void

Arguments
body
Required. Specifies the base polygon set from which projections are measured, for
example, the gate. The polygon set can be returned and manipulated using all standard
polygon_set utility functions. See “polygon_set Property Functions” on page 4-79.

Chapter 4: Utility Functions


Device Utility Functions 4-51
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

projection_polygons
Required. Specifies the polygon set to the projection that is measured from the body, for
example, NWELL. This polygon set should enclose the body polygon set.
If the input polygon set is returned directly from the dev_processing_layer() function,
the nonnegative range value specified in the processing_layer_hash argument of the
mos_select(), nmos(), and pmos() functions is used to minimize polygon searching in
the mos_proximity_corner_list() function. Otherwise, if the polygon set is from a
processing layer with a negative range value or is derived from other polygon sets, all
polygons are processed. Using a range value minimizes any hierarchical flattening that
would otherwise occur when searching for interacting processing layer polygons out to
an unbounded distance.

perpendicular_projection_lengths
Required. Specifies the variables where projection distances are stored from the
extracted projection_polygons corner to the vertex of the body, in the direction that is
perpendicular to the body width.

parallel_projection_lengths
Required. Specifies the variables where projection distances are stored from the
extracted projection_polygons corner to the vertex of the body, in the direction that is
parallel to the body width.
Figure 4-9 shows projection determination.
Figure 4-9 Projection Determination

perpendicular parallel
Diffusion
parallel perpendicular

Gate
Diffusion Gate Diffusion Diffusion

parallel = parallel_projection_lengths
perpendicular = perpendicular_projection_lengths

direction
Required. Determines the corner of body from which the projection length is calculated
to the corresponding projection_polygons polygon_set: LEFT_TOP, LEFT_BOTTOM,
RIGHT_TOP, or RIGHT_BOTTOM.

Chapter 4: Utility Functions


Device Utility Functions 4-52
IC Validator Reference Manual Version N-2017.12-SP2

Figure 4-10 shows direction determination.


Figure 4-10 Direction Determination
LEFT_TOP RIGHT_TOP

LEFT_BOTTOM Diffusion LEFT_TOP

Diffusion Gate Diffusion


Gate

Diffusion
RIGHT_BOTTOM RIGHT_TOP
LEFT_BOTTOM RIGHT_BOTTOM

count
Required. Specifies the variable where the number of measured corner projections is
stored,. This number is the size of the perpendicular_projection_lengths and
parallel_projection_lengths lists. (Both the lists are the same length.)

Example
See the mos_proximity_list() function for an example of using the
mos_proximity_corner_list() function.

Figure 4-11 is an example of polygon selection. The selected pointed concave corners are
marked with solid blue circles in this example. The concave corner marked with the dotted
blue circle is not selected because it is not pointed.
Figure 4-11 Example of Polygon Selection
LEFT_TOP RIGHT_TOP
Gate

LEFT_BOTTOM RIGHT_BOTTOM

Chapter 4: Utility Functions


Device Utility Functions 4-53
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

See Also
mos_proximity_list()

mos_proximity_list()
The mos_proximity_list() function measures projection distances from a specified body
polygon set to one or more designated projection_data polygon sets. This function
consolidates measuring capabilities associated with all of the following physical parameters:
• The LOD (Length of Oxide Definition) values, which represent the distances from a gate
polygon to the LOD layer edge.
• The strained silicon effects parameters, which represent the distances projecting from
the gate width and length to nearby layers, including polysilicon, diffusion, or wells. The
nearby layers do not have interaction requirements with the gate layer.
• The WPE (Well Proximity Effect) values, which represent the distances projecting from
the gate width and length to an enclosing well layer edge.

In all cases, the function measures projections to a specified projection layer and in a given
direction relative to the body layer. Measurements to multiple projection layers can be made
using a single call to the function.
The function also returns a list of body layer region widths corresponding to each measured
projection. This list represents the manner in which a body layer polygon must be fractured
to measure multiple projections along its width. When the mos_proximity_list() function
is called with multiple projection_data list members, a common superset of body layer
fracture points is derived to enable simultaneous measurements of projection to all
members of the projection_data list. See the Example section for more information.
The mos_proximity_list() function can be called multiple times within the remote
function called by the mos_select(), nmos() and pmos() functions.

Syntax
mos_proximity_list(
body = polygon_set,
projection_data = {{polygon_set = polygon_set,
order = integer,
interaction = ENTERING | LEAVING |
ENTERING_LEAVING,
range = double,
projection_length = {out_double, ...}},
...},
direction = TOP | BOTTOM | LEFT | RIGHT,
width = {out_double, ...},
count = out_integer,
orientation = RELATIVE | ABSOLUTE
);

Chapter 4: Utility Functions


Device Utility Functions 4-54
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Arguments
body
Required. Specifies the base polygon set from which projections are measured, for
example, gate. This polygon set must interact with the gate polygon for each MOS
instance on which the mos_proximity_list() function is invoked. The polygon set can
be returned and manipulated using all standard polygon_set utility functions. See
“polygon_set Property Functions” on page 4-79.

projection_data
Required. Specifies the polygon sets and accompanying parameters that contain all
information used to simultaneously compute and store projections to the layers.
Note:
A maximum of seven polygon sets and accompanying information can be listed.
❍ polygon_set. Required. Projection is measured to this polygon set. The polygon
set is returned using the dev_processing_layer() function to select from the
processing_layer_hash layers specified in the mos_select(), nmos(), and
pmos() functions.

❍ order. Required. Determines which nearby polygon set can project on the body. The
value is a number from 0 to 50.
■ 0. Turns off measurement of projections to the corresponding polygon set.

■ 1. Selects the member of the polygon set that is closest to the body polygon,
within the range specified for the corresponding projection_data polygon_set.
■ 2. Selects the first two members of the polygon set that are closest to the body
polygon, within the range specified for the corresponding projection_data
polygon_set.
■ 3 through 50. Selects the first nth members of the polygon set that are closest to
the body polygon, within the range specified for the corresponding
projection_data polygon_set.

❍ interaction. Required. Determines the projection type to be measured between the


body polygon and the projection_data polygon_set polygon.

■ ENTERING. Measures projections from base that are entering a projection_data


polygon_set polygon.
■ LEAVING. Measures projections from base that are leaving a projection_data
polygon_set polygon.

Chapter 4: Utility Functions


Device Utility Functions 4-55
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

■ ENTERING_LEAVING. Measures projections from base that are either entering or


leaving a projection_data polygon_set polygon.
❍ range. Required. Sets the maximum reported projection length.

■ When the range argument is <=0, polygon_set polygons in the


projection_data argument are prefiltered to select only polygons that interact
with the body argument. The actual projection lengths between the body
argument and these prefiltered polygon_set polygons in the projection_data
argument are stored in the projection_length list member of the
projection_data argument. The range value is stored if no projection is found.

■ When the range argument is >0, the actual projection length between the body
argument and polygon_set polygons in the projection_data argument is
stored in the projection_length list member of the projection_data
argument, up to the maximum range value. If the actual projection length is
greater than the maximum range value, the range value is stored. The range
value is also stored if no projection is found.
❍ projection_length. Optional. Specifies the variable where the calculated projection
lengths are stored.

direction
Required. Determines the direction from the base polygon set in which the projection
length is calculated for the corresponding projection_data polygon_set: TOP, BOTTOM,
LEFT, or RIGHT.

width
Required. Specifies the variable where the body region widths corresponding to the
extracted distance projections are stored.

count
Required. Specifies the variable where the number of extracted divided body regions
calculated by the mos_proximity_list() function is stored.

orientation
Optional. Controls the orientation of the measurements. The default is RELATIVE.
❍ RELATIVE. Orientation is relative to the source and drain layers of the gate.

❍ ABSOLUTE. Orientation is relative to the body within the coordinate space of the cell.
Note:
A warning is reported if data is hierarchical and the orientation argument is
ABSOLUTE.

Chapter 4: Utility Functions


Device Utility Functions 4-56
IC Validator Reference Manual Version N-2017.12-SP2

Example
Figure 4-12 shows extracting stress effect properties for an NMOS device. The NMOS
device is calculated in Example 4-1. The output array order is clockwise relative to the body
polygon, as shown in Figure 4-13.
Figure 4-12 Extracting Stress Effect Properties
pw_t0

se_t1

se_t0

sp_l0
pw_l0 se_l0 sp_r0
se_l1 pw_r0
se_r0
sp_l1
se_l2 se_r1

pw_l1 se_l3
sp_r1
sp_l2 se_r2 pw_r1
pw_l2 se_l4 se_r3
se_l5

se_b0
PWEL
se_b1
NWEL
poly
diff
pw_b0

Chapter 4: Utility Functions


Device Utility Functions 4-57
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-13 Output Array Order

Example 4-1 Extracting Stress Effect Properties for an NMOS Device


my_func : function (void) returning void
{
body_layer1 : polygon_set = dev_body();
body_layer2 : polygon_set = dev_size_polygon( body_layer1, 0.001 );
processing_layer_poly : polygon_set = dev_processing_layer("POLY");
processing_layer_well : polygon_set = dev_processing_layer("NW");

// stress extraction
projections : list of projection_data_s = {
{processing_layer_poly, 3, ENTERING,
dev_processing_range("POLY")},
{processing_layer_well, 3, ENTERING_LEAVING,
dev_processing_range("NW")}
};

// top stress projection


num: integer = 0;
pw_t : list of double = {};

mos_proximity_list(body_layer1, projections, TOP, pw_t, num);


sp_t = projections[0].projection_length;
se_t = projections[1].projection_length;

// bottom stress projection


pw_b : list of double = {};

mos_proximity_list(body_layer1, projections, BOTTOM, pw_b, num);


sp_b = projections[0].projection_length;
se_b = projections[1].projection_length;

// left stress projection


pw_l : list of double = {};

mos_proximity_list(body_layer1, projections, LEFT, pw_l, num);


sp_l = projections[0].projection_length;

Chapter 4: Utility Functions


Device Utility Functions 4-58
IC Validator Reference Manual Version N-2017.12-SP2

se_l = projections[1].projection_length;

// right stress projection


pw_r : list of double = {};

mos_proximity_list(body_layer1, projections, RIGHT, pw_r, num);


sp_r = projections[0].projection_length;
se_r = projections[1].projection_length;

// WPE corner extraction


perpendicular_lt : list of double = {};
parallel_lt : list of double = {};
count_lt : integer;

perpendicular_lb : list of double = {};


parallel_lb : list of double = {};
count_lb : integer;

perpendicular_rt : list of double = {};


parallel_rt : list of double = {};
count_rt : integer;

perpendicular_rb : list of double = {};


parallel_rb : list of double = {};
count_rb : integer;

mos_proximity_corner_list(body_layer2, proximity_layer_well,
perpendicular_lt, parallel_lt, LEFT_TOP, count_lt
);

mos_proximity_corner_list(body_layer2, proximity_layer_well,
perpendicular_lb, parallel_lb, LEFT_BOTTOM, count_lb
);

mos_proximity_corner_list(body_layer2, proximity_layer_well,
perpendicular_rt, parallel_rt, RIGHT_TOP, count_rt
);

mos_proximity_corner_list(body_layer2, proximity_layer_well,
perpendicular_rb, parallel_rb, RIGHT_BOTTOM, count_rb
);

dev_save_double_list_properties(
{{"sp_l", sp_l},
{"sp_r", sp_r},
{"sp_t", sp_t},
{"sp_b", sp_b},
{"se_l", se_l},
{"se_r", se_r},
{"se_t", se_t},
{"se_b", se_b},
{"parallel_lt", parallel_lt},
{"parallel_lb", parallel_lb},

Chapter 4: Utility Functions


Device Utility Functions 4-59
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

{"parallel_rt", parallel_rt},
{"parallel_rb", parallel_rb}
}
);
}

nwel_copy = copy(NWELL);

nmos(
matrix = my_devices,
device_name = "nch",
drain = nsd,
gate = ngate,
source = nsd,
optional_pins = {{psub}},
property_function = my_func,
properties = {
{"sp_r", DOUBLE_LIST},
{"sp_l", DOUBLE_LIST},
{"sp_t", DOUBLE_LIST},
{"sp_b", DOUBLE_LIST},
{"se_r", DOUBLE_LIST},
{"se_l", DOUBLE_LIST},
{"se_t", DOUBLE_LIST},
{"se_b", DOUBLE_LIST},
{"parallel_lt", DOUBLE_LIST},
{"parallel_lb", DOUBLE_LIST},
{"parallel_rt", DOUBLE_LIST},
{"parallel_rb", DOUBLE_LIST}
},
processing_layer_hash = {
"POLY" => {layer1=POLY, range=5.0},
"NW" => {layer1=nwel_copy, range=5.0}
}
);

See Also
dev_recognition_layer()
mos_proximity_corner_list()

mos_source_area()
Returns the area of the source. See Figure 4-5.

Syntax
mos_source_area();

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-60
IC Validator Reference Manual Version N-2017.12-SP2

mos_source_perim()
Returns the perimeter of the source minus the width of the gate that touches the source.

Syntax
mos_source_perim();

Returns
double

mos_width_1()
Returns the width of the gate touching the source. See Figure 4-5.

Syntax
mos_width_1();

Returns
double

mos_width_2()
Returns the width of the gate touching the drain. See Figure 4-5.

Syntax
mos_width_2();

Returns
double

mos_width_avg()
Returns the average width, which is calculated as mos_gate_area/mos_length_avg.

Syntax
mos_width_avg();

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-61
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

mos_width_bend_1()
Returns the width of a single bent gate touching the source. If the gate polygon does not
have a bend or more than one bend, the result is 0. See Figure 4-6.

Syntax
mos_width_bend_1();

Returns
double

mos_width_bend_2()
Returns the width of a single bent gate touching the drain. If the gate polygon does not have
a bend or more than one bend, the result is 0. See Figure 4-6.

Syntax
mos_width_bend_2();

Returns
double

mos_width_max()
Returns the maximum width of a gate.

Syntax
mos_width_max();

Returns
double

mos_width_min()
Returns the minimum width of a gate.

Syntax
mos_width_min();

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-62
IC Validator Reference Manual Version N-2017.12-SP2

mos_width_num_45()
Returns the number of 45-degree bends along the width of the gate. See Figure 4-5.

Syntax
mos_width_num_45();

Returns
double

mos_width_num_90()
Returns the number of 90-degree bends along the width of the gate. See Figure 4-5.

Syntax
mos_width_num_90();

Returns
double

Diode (NP and PN) Utility Functions


These utility functions can be called in the np() and pn() remote functions. Use these
functions to get diode geometric parameters.

diode_area()
Returns the area of the diode.

Syntax
diode_area();

Returns
double

diode_perim()
Returns the perimeter of the diode.

Syntax
diode_perim();

Chapter 4: Utility Functions


Device Utility Functions 4-63
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Bipolar Transistor (NPN and PNP) Utility Functions


These utility functions can be called in the npn() and pnp() remote functions. Use these
functions to get bipolar transistor geometric parameters. Figure 4-14 and Figure 4-15 are
examples of these functions.
Figure 4-14 Example of Bipolar Transistor (Vertical) Utility Function Results

bjt_base_area()
bjt_base_perim()
bjt_emitter_area()
bjt_collector_area() bjt_emitter_perim()
bjt_collector_perim()

Figure 4-15 Example of Bipolar Transistor (LATERAL) Utility Function Results

bjt_collector_perim() bjt_emitter_area()

bjt_collector_area() bjt_emitter_perim()

bjt_base_perim() bjt_base_area()

bjt_base_area()
Returns the area of the bipolar base. See Figure 4-14 and Figure 4-15.

Syntax
bjt_base_area();

Returns
double

bjt_base_perim()
Returns the perimeter of the bipolar base. See Figure 4-14 and Figure 4-15.

Chapter 4: Utility Functions


Device Utility Functions 4-64
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
bjt_base_perim();

Returns
double

bjt_body_position()
Returns the user-specified setting of EMITTER, BASE, or COLLECTOR from the
body_position argument of the npn() or pnp() function.

Syntax
bjt_body_position();

Returns
bjt_body_position_result

bjt_collector_area()
Returns the area of the bipolar collector. See Figure 4-14 and Figure 4-15.

Syntax
bjt_collector_area();

Returns
double

bjt_collector_perim()
Returns the perimeter of the bipolar collector. See Figure 4-14 and Figure 4-15.

Syntax
bjt_collector_perim();

Returns
double

bjt_emitter_area()
Returns the area of the bipolar emitter. See Figure 4-14 and Figure 4-15.

Chapter 4: Utility Functions


Device Utility Functions 4-65
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
bjt_emitter_area();

Returns
double

bjt_emitter_perim()
Returns the perimeter of the bipolar emitter. See Figure 4-14 and Figure 4-15.

Syntax
bjt_emitter_perim();

Returns
double

Resistor Utility Functions


These utility functions can be called in the resistor() remote function. Use these functions
to get resistor geometric parameters. Figure 4-16 is an example of these functions.
Figure 4-16 Example of Resistor Utility Function Results
res_length_1()
res_area()

res_width_term_a() res_width_
term_b()

res_perim()
resistor material

res_length_2()
res_length_num_45() = 2
res_length_num_90() = 8 resistor recognition layer

res_area()
Returns the area of resistor. See Figure 4-16.

Syntax
res_area();

Chapter 4: Utility Functions


Device Utility Functions 4-66
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

res_length_1()
Returns the length along one edge that connects one terminal to another. See Figure 4-16.

Syntax
res_length_1();

Returns
double

res_length_2()
Returns the length along the opposite edge that connects one terminal to another. See
Figure 4-16.

Syntax
res_length_2();

Returns
double

res_length_avg()
Returns the length of the center line from one terminal to the other.

Syntax
res_length_avg();

Returns
double

res_length_max()
Returns the maximum length of a resistor.

Syntax
res_length_max();

Chapter 4: Utility Functions


Device Utility Functions 4-67
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

res_length_min()
Returns the minimum length of a resistor.

Syntax
res_length_min();

Returns
double

res_length_num_45()
Returns the number of 45-degree bends along the length of the resistor. See Figure 4-16.

Syntax
res_length_num_45();

Returns
double

res_length_num_90()
Returns the number of 90-degree bends along the length of the resistor. See Figure 4-16.

Syntax
res_length_num_90();

Returns
double

res_perim()
Returns the perimeter of the resistor. See Figure 4-16.

Syntax
res_perim();

Chapter 4: Utility Functions


Device Utility Functions 4-68
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

res_resval()
Returns the resistance, in ohms per square, specified in the resistor_value argument of
the resistor() function.

Syntax
res_resval();

Returns
double

res_resval_assigned()
Returns the value true if you have specified a nonzero value for the resistor_value
argument of the resistor() function; otherwise, returns the value false.

Syntax
res_resval_assigned();

Returns
Boolean

res_width_avg()
Returns the average width, which is calculated as res_area/res_length_avg.

Syntax
res_width_avg();

Returns
double

res_width_max()
Returns the maximum of the values as calculated by the res_width_term_a() and
res_width_term_b() functions.

Syntax
res_width_max();

Chapter 4: Utility Functions


Device Utility Functions 4-69
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

res_width_min()
Returns the minimum of the values as calculated by the res_width_term_a() and
res_width_term_b() functions.

Syntax
res_width_min();

Returns
double

res_width_num_45()
Returns the number of 45-degree bends along the width of the resistor.
The calculation is made in two steps:
1. Select either the terminal A edge or the terminal B edge coincident with the body
polygon, based on the edge having the larger number of bends of any angle.
2. Count the number of 45-degree bends along that edge.

Bends at the corner of the resistor where a width edge meets a length edge are not counted.

Syntax
res_width_num_45();

Returns
double

Examples
Figure 4-17 shows some examples of returned values for the res_width_num_45()
function.

Chapter 4: Utility Functions


Device Utility Functions 4-70
IC Validator Reference Manual Version N-2017.12-SP2

Figure 4-17 res_width_num_45() Function Examples


Note:
res_width_num_45() == 4 The circles indicate a
45-degree width bend.

res_width_num_45() == 2

res_width_num_45() == 4 resistor body

resistor terminal
res_width_num_45() == 1

res_width_num_90()
Returns the number of 90-degree bends along the width of the resistor.
The calculation is made in two steps:
1. Select either the terminal A edge or the terminal B edge coincident with the body
polygon, based on the edge having the larger number of bends of any angle.
2. Count the number of 90-degree bends along that edge.

Bends at the corner of the resistor where a width edge meets a length edge are not counted.

Syntax
res_width_num_90();

Returns
double

Examples
Figure 4-18 shows some examples of returned values for the res_width_num_90()
function.

Chapter 4: Utility Functions


Device Utility Functions 4-71
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-18 res_width_num_90() Function Examples


Note:
res_width_num_90() == 4 The circles indicate a
90-degree width bend.

res_width_num_90() == 2

res_width_num_90() == 4 resistor body

resistor terminal
res_width_num_90() == 2

res_width_term_a()
Returns the edge length of the “terminal a” polygon that is outside coincident with the body
polygon. See Figure 4-16.

Syntax
res_width_term_a();

Returns
double

res_width_term_b()
Returns the edge length of the “terminal b” polygon that is outside coincident with the body
polygon. See Figure 4-16.

Syntax
res_width_term_b();

Returns
double

Device Body Coordinate Function


These utility functions can be called in the remote functions for all device configuration
functions.

Chapter 4: Utility Functions


Device Utility Functions 4-72
IC Validator Reference Manual Version N-2017.12-SP2

dev_body_coordinate_list()
Returns a list of coordinate pairs representing the center xy coordinates of a device. If a
device is a merged device, the function returns all center xy coordinate pairs of all physical
device members.

Syntax
dev_body_coordinate_list();

Returns
dev_body_coordinate_list_result

Device Parallel Functions


Devices that share the same gate, source, drain, and bulk pins can be identified as parallel
connected. Use the device_parallel_*() functions, which are described in this section,
to determine how many devices parallel connect to the current device and to determine
parameters of each parallel connected device.
Limitation:
The device parallel functions support all device functions with the following exceptions:
❍ The mos_select() and res_select() functions must use the connect_sequence
argument when using the device parallel functions.
❍ Only the MOS device functions —mos_select(), nmos(), and pmos()—can use
these device parallel functions:
■ dev_parallel_device_area()

■ dev_parallel_device_length()

■ dev_parallel_device_width()

All parallel connected device relationships are formed at the cell level. If you want to
consider the global connected relationship through the hierarchy, add an extra processing
layer created by the cell_extent() function and use this layer to flatten the layout hierarchy
during device extraction.
The following example shows using the device parallel utility functions.
my_func: published function (void) returning void
{
Count = dev_parallel_device_count();
a = mos_gate_area();

same_area_devices =0;

Chapter 4: Utility Functions


Device Utility Functions 4-73
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

for (i = 0 to Count - 1)
{
Dev_a = dev_parallel_device_area(i);
if (Dev_a == a) same_area_devices++;
}
}

dev_parallel_device_area()
Returns the gate area of the ith parallel connected device. The area is calculated as by the
mos_gate_area() function. See Figure 4-5 for more information.

Syntax
dev_parallel_device_area(
index = integer
);

Returns
double

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

dev_parallel_device_body()
Returns a polygon_set that consists of the body layer polygons of the ith parallel connected
device.

Syntax
dev_parallel_device_body(
index = integer
);

Returns
polygon_set

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

Chapter 4: Utility Functions


Device Utility Functions 4-74
IC Validator Reference Manual Version N-2017.12-SP2

dev_parallel_device_count()
Returns the number of devices connected in parallel with the current device. You can include
options to count only the devices on the same layer or with the same properties. The count
includes the current device.

Syntax
dev_parallel_device_count(
same_polygon = "string", # optional
save_properties = {"string", ...} # optional
);

Returns
integer

Arguments
same_polygon
Optional. Specifies a processing layer defined by the processing_layer_hash
argument of a device configuration function. The IC Validator tool uses this layer to
determine whether two devices in parallel have the same polygon layer processing ID.
The default is an empty string ("").

same_properties
Optional. Specifies the properties that the IC Validator tool compares to determine the
return value. The tool can compare a maximum of 10 properties. The default is an empty
list, which disables the property comparison.
The properties must be created by the drc_features(), gendev_select(),
mos_select(), or res_select() function and attached to the device body layer by the
dev_save_polygon_double_property() function.

dev_parallel_device_length()
Returns the gate length of the ith parallel connected device. The length is calculated as
(2*mos_gate_area())/ (mos_width_1() + mos_width_2()). See Figure 4-5 for more
information.

Syntax
dev_parallel_device_length(
index = integer
);

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-75
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

dev_parallel_device_pin()
Returns a polygon_set consisting of the specified terminal layer polygons of the ith parallel
connected device. The required terminals of standard devices have pin names generated by
the IC Validator tool. For an optional pin, the default name is “BULK”; you can redefine it.
See the device configuration functions for more details (capacitor(), gendev(),
inductor(), nmos() and pmos(), np() and pn(), npn() and pnp(), and resistor()).

Syntax
dev_parallel_device_pin(
index = integer,
pinname = "string"
);

Returns
polygon_set

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

pinname
Required. Specifies the name of the required pin.

dev_parallel_device_polygon_count()
Returns the polygon count of the specified layer that touch the ith parallel connected device
body. The count is calculated by:
p = dev_processing_layer("layer")
b = dev_body();
p1 = dev_touching(p, b);
count = dev_count_polygons(p1);

Syntax
dev_parallel_device_polygon_count(
index = integer,
layer_name = "string"
);

Chapter 4: Utility Functions


Device Utility Functions 4-76
IC Validator Reference Manual Version N-2017.12-SP2

Returns
integer

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

layer_name
Required. Specifies the layer.

dev_parallel_device_processing_layer_polygon_id()
Returns the ID of the processing layer polygon that the ith parallel connected device of the
current device gate touches. The return value is -1 if the device body does not touch any
processing layer polygon or if it touches more than one processing layer polygon. See
Figure 4-22 for an example of polygon IDs.

Syntax
dev_parallel_device_processing_layer_polygon_id(
index = integer,
layer_name = "string"
);

Returns
integer

Arguments
index
Required. Specifies the index (i) of the parallel connected device.

layer_name
Required. Specifies the processing layer.

dev_parallel_device_sum_double_property()
Scans each group containing devices connected in parallel and calculates the
corresponding multifinger device properties. By default, the return value is the number of
devices connected in parallel with the values of the specified properties from the processing
layer on the specified polygon.

Chapter 4: Utility Functions


Device Utility Functions 4-77
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

If you specify an optional property, the return value is the sum of the property values from
the devices connected in parallel with the values of the specified properties from the
processing layer on the specified polygon.

Syntax
dev_parallel_device_sum_double_property(
same_polygon = "string", # optional
same_properties = {"string", ...} # optional
property = "string", # optional
);

Returns
double

Arguments
same_polygon
Optional. Specifies a processing layer defined by the processing_layer_hash
argument of a device configuration function. The IC Validator tool uses this layer to
determine whether two devices in parallel have the same polygon layer processing ID.
The default is an empty string ("").

same_properties
Optional. Specifies the properties that the IC Validator tool compares to determine the
return value. The tool can compare a maximum of 10 properties. The default is an empty
list, which disables the property comparison.
The properties must be created by the drc_features(), gendev_select(),
mos_select(), or res_select() function and attached to the device body layer by the
dev_save_polygon_double_property() function.

property
Optional. Specifies a property used to calculate the return value. The property must be
created by the drc_features(), gendev_select(), mos_select(), or res_select()
function and attached to the device body layer by the
dev_save_polygon_double_property() function. The default is an empty string ("").
If the IC Validator tool cannot find the attached properties, it assumes the property value
is 1. The tool reports a warning message if the property is not defined in one of the
property creation functions.

dev_parallel_device_width()
Returns the gate width of the ith parallel connected device. The width is calculated by
(mos_width_1() + mos_width_2())/2. See Figure 4-5 for more information.

Chapter 4: Utility Functions


Device Utility Functions 4-78
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dev_parallel_device_width(
index = integer
);

Returns
double

Arguments
index
Required. Specifies the index (i) of the parallel connected devices.

Device Error Utility Function


These utility functions can be called in the remote functions for all device configuration
functions.

dev_set_error()
When this function is called, the device is not extracted and an error message is output.

Syntax
dev_set_error(
message = "string"
);

Returns
void

polygon_set Property Functions


These utility functions can be called in the remote functions for all device configuration
functions.

dev_box_length()
Returns the length of the longer side of the polygon bounding box.

Syntax
dev_box_length(
polygon_set = polygon_set
);

Chapter 4: Utility Functions


Device Utility Functions 4-79
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

dev_box_width()
Returns the length of the shorter side of the polygon bounding box.

Syntax
dev_box_width(
polygon_set = polygon_set
);

Returns
double

dev_coil_space()
Returns the space between sections of a looped polygon. This value is useful in calculating
the inductor space property. Typically, it is applied to the inductor body layer.

Syntax
dev_coil_space(
polygon_set = polygon_set
);

Returns
double

dev_coil_turns()
Returns the number of turns a layer makes. This value is useful in calculating the inductor
turns property. Typically, it is applied to the inductor body layer.

Syntax
dev_coil_turns(
polygon_set = polygon_set
);

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-80
IC Validator Reference Manual Version N-2017.12-SP2

dev_coil_width()
Returns the width of a coiled wire.

Syntax
dev_coil_width(
polygon_set = polygon_set
);

Returns
double

dev_count_devices()
Returns the number of devices that share the specified polygon set. If parallel merging
occurs during device extraction, the function reports the number of merged device groups
sharing the specified polygon set. For the example shown in Figure 4-19, the
dev_count_devices() function returns the value of 2 because there are two groups.

Figure 4-19 dev_count_devices() Utility Function Example


merged device group 1 merged device group 2

input polygon set

Syntax
dev_count_devices(
polygon_set = polygon_set
);

Returns
integer

Chapter 4: Utility Functions


Device Utility Functions 4-81
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_count_polygon_coordinates()
Returns the number of vertices on the specified polygon.

Syntax
dev_count_polygon_coordinates(
polygon_set = polygon_set,
polygon_index = integer
);

Returns
integer

Example
See the dev_polygon_coordinates() function.

dev_count_polygons()
Returns the number of polygons contained in the polygon set.

Syntax
dev_count_polygons(
polygon_set = polygon_set
);

Returns
integer

Example
See the dev_polygon_coordinates() function.

dev_generate_compound_device_id()
Generates a compound device property ID for a device. Devices within the same recognition
layer polygon have the same compound device property ID.
• Each ID assigned to device bodies in each recognition layer is unique with respect to the
IDs assigned to device bodies in all other recognition layers.
• If the dev_generate_compound_device_id() function is called more than one time in a
remote function, the same ID is generated for each call. This behavior is because the ID
is associated with the current recognition polygon.

Chapter 4: Utility Functions


Device Utility Functions 4-82
IC Validator Reference Manual Version N-2017.12-SP2

• If the IC Validator tool determines that devices could never merge because they are of
different types, the IDs might not be unique.
• Devices of the same type must have globally unique IDs across different cells in the
hierarchy. In other words, ID values are not recycled for the same device types in
different cells.

This ID can be written and read in the same way as other properties. For example, the
compound device property ID can be used to identify devices to be merged in parallel. The
value 0 (zero) is never generated by the dev_generate_compound_device_id() function,
but you can use this value.

Syntax
dev_generate_compound_device_id();

Returns
integer

dev_get_polygon_double_property()
Retrieves the value of a double property for the specified polygon. Returns the value true if
the property is found; otherwise, returns the value false.
Limitation:
The input polygon set can only come from the dev_pin(), dev_body(),
dev_processing_layer(), or dev_recognition_layer() utility functions. If the
polygon set is from any other utility function, such as the dev_and() or dev_or()
function, the call of the dev_get_polygon_double_property() function can fail due to
missing property values.

Syntax
dev_get_polygon_double_property(
polygon_set = polygon_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

Chapter 4: Utility Functions


Device Utility Functions 4-83
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith polygon of the
polygon set is stored. The value is 0 (zero) if the property is not present or the index is
out of bounds.

dev_get_polygon_list_of_list_of_double_property()
Retrieves the value of an attached two-dimensional matrix for the specified polygon. If the
input polygon set is empty, the property is not present, the index is out of bounds, or a row
in the retrieved two-dimensional matrix has a different number of columns than the other
rows, the return value is false and the two-dimensional matrix is an empty list; otherwise,
returns the value true.

Syntax
dev_get_polygon_list_of_list_of_double_property(
polygon_set = polygon_set,
index = integer,
name = "string",
value = out_list_of_list_of_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the matrix property name. Cannot be a null string and cannot start
with an underscore character (_).

Chapter 4: Utility Functions


Device Utility Functions 4-84
IC Validator Reference Manual Version N-2017.12-SP2

value
Required. Specifies the variable where the value of the list of list of double data for the
ith polygon of the polygon set is stored.

dev_get_polygon_matrix_property()
Retrieves the value of an attached matrix for the specified polygon. If the property is not
present or the index is out of bounds, the return value is false and the matrix is an empty list.
Limitation:
The input polygon set can come only from the dev_pin(), dev_body(),
dev_processing_layer(), or dev_recognition_layer() utility functions. If the
polygon set is from any other utility function, such as the dev_and() or dev_or()
function, the call of the dev_get_polygon_matrix_property() function can fail due to
missing property values.
The output value is a PXL list of list of double (a two-dimensional array) used for further
indexing. Each element (sublist) of the output is a list of the same length.

Syntax
dev_get_polygon_matrix_property(
polygon_set = polygon_set,
index = integer,
name = ”string”,
value = {{out_double, ...}, ...}
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the matrix property name.

value
Required. Specifies the variable where the value of the matrix property for the ith polygon
of the polygon set is stored.

Chapter 4: Utility Functions


Device Utility Functions 4-85
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_get_polygon_string_property()
Retrieves the value of a string property for the specified polygon. Returns the value true if
the property is found; otherwise, returns the value false.
Limitation:
The input polygon set can only come from the dev_pin(), dev_body(),
dev_processing_layer(), or dev_recognition_layer() utility functions. If the
polygon set is from any other utility function, such as the dev_and() or dev_or()
function, the call of the dev_get_polygon_double_property() function can fail due to
missing property values.

Syntax
dev_get_polygon_string_property(
polygon_set = polygon_set,
index = integer,
name = "string",
value = out_string
);

Returns
dev_get_polygon_string_property_result

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith polygon of the
polygon set is stored. The value is an empty string (“”) if the property is not present or
the index is out of bounds.

dev_grow_polygon()
Returns the sized polygon set. This utility function grows the polygon based on the top,
bottom, left, and right arguments. The value of each direction argument must be greater
than or equal to 0. The default of each direction argument is 0.0.

Chapter 4: Utility Functions


Device Utility Functions 4-86
IC Validator Reference Manual Version N-2017.12-SP2

The directions are based on the MOS device orientation. The left and right arguments
refer to the source/drain sides; the top and bottom arguments refer to the other two sides.
Therefore, the directions depend on MOS device orientation, horizontal or vertical. For a
horizontal MOS device, the source and drain are located on the left and right sides; for a
vertical MOS device, the source and drain are located on the top and bottom sides. The
directions are shown in Table 4-3.
Table 4-3 Directions of Arguments for the dev_grow_polygon() Function

Argument Horizontal MOS device Vertical MOS device


directions directions

top top right

bottom bottom left

left left top

right right bottom

For non-MOS devices, the direction at the cell level is used.

Syntax
dev_grow_polygon(
polygon_set = polygon_set,
top = double, //optional
bottom = double, //optional
left = double, //optional
right = double //optional
);

Returns
polygon_set

dev_polygon_area()
Returns the area for a specified polygon.

Syntax
dev_polygon_area(
polygon_set = polygon_set
);

Returns
double

Chapter 4: Utility Functions


Device Utility Functions 4-87
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_polygon_bends()
Returns the number of bends for a polygon specified in the polygon set. The angle
argument must be 0, 45, 90 or 135.

Syntax
dev_polygon_bends(
polygon_set = polygon_set,
polygon_index = integer,
angle = integer
);

Returns
double

dev_polygon_coordinates()
Returns coordinates of a specified vertex.
Along with the dev_polygon_coordinates() function, you need to use the
dev_count_polygons() function to determine the number of polygons in a the polygon
set and the dev_count_polygon_coordinates() function to determine the number of
coordinates in a polygon. See the Example section.

Syntax
dev_polygon_coordinates(
polygon_set = polygon_set,
polygon_index = integer,
coordinate_index = integer
);

Returns
dev_polygon_coordinates_result

Example
The following example shows how you can return the coordinates of gates. Before executing
the dev_polygon_coordinates() function, you must get the total number of polygons
forming the gate using the dev_count_polygons() function and the total number of
coordinates per polygon using the dev_count_polygon_coordinates() function.
gate_coord_list: list of coordinate_s = {};
gate = dev_body();
for (i = 0 to dev_count_polygons(gate) - 1) {
for (j = 0 to dev_count_polygon_coordinates (gate, i) - 1) {
gate_coord_list.push_back ( dev_polygon_coordinates (
polygon_set = gate,

Chapter 4: Utility Functions


Device Utility Functions 4-88
IC Validator Reference Manual Version N-2017.12-SP2

polygon_index = i,
coordinate_index = j )
);
}
}

dev_polygon_perim()
Returns the perimeter for a specified polygon.

Syntax
dev_polygon_perim(
polygon_set = polygon_set
);

Returns
double

dev_single_polygon_set()
Returns the specified single polygon.

Syntax
dev_single_polygon_set(
polygon_set = polygon_set,
index = integer
);

Returns
polygon_set

dev_size_polygon()
Returns the sized polygon set. Based on the size_value argument, this utility function
either grows or shrinks the polygons.

Syntax
dev_size_polygon(
polygon_set = polygon_set,
size_value = double
);

Returns
polygon_set

Chapter 4: Utility Functions


Device Utility Functions 4-89
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_top_polygon_coordinate_list()
Returns a list of the coordinates of polygons from the specified polygon set that correspond
to the top cell. Each coordinate corresponds to a polygon in the polygon set; that is, if the
polygon set contains N polygons, this function returns a coordinate list whose size is also N.
Important:
The dev_top_polygon_coordinate_list() function should only be used with specific
guidance from Synopsys. Preferably, you should use the top_simulation_properties
argument of the gendev() function instead.

Syntax
dev_top_polygon_coordinate_list(
polygon_set = polygon_set
);

Returns
dev_top_polygon_coordinate_list_result

Arguments
polygon_set
Required. Specifies a polygon set from dev_body(), dev_pin(),
dev_processing_layer(), or any other device utility function that creates a derived
polygon set.

See Also
gendev()

polygon_set to polygon_set Property Utility Functions


These utility functions can be called in the remote functions for all device configuration
functions, except where limitations are noted.

dev_and()
Returns a polygon set that is the intersection of two polygon sets.

Syntax
dev_and(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Chapter 4: Utility Functions


Device Utility Functions 4-90
IC Validator Reference Manual Version N-2017.12-SP2

Returns
polygon_set

dev_coil_path_length()
Note:
This function is valid only for the gendev() and inductor() functions because it
requires the connectivity argument.
Calculates the path length from polygon_set1 layer to polygon_set2 layer. This function
can calculate path lengths across different layers.
Radial edges of a path are not supported. The current dev_coil_path_length()
arguments require input from a path composed of parallel edges.

Syntax
dev_coil_path_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

dev_count_coincident_edges()
Calculates the number of edges of polygon_set1 coincident with polygon_set2.

Syntax
dev_count_coincident_edges(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
integer

dev_count_inside()
Returns the number of polygons of polygon_set1 fully inside of polygon_set2.

Syntax
dev_count_inside(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set

Chapter 4: Utility Functions


Device Utility Functions 4-91
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

Returns
integer

dev_count_outside()
Returns the number of polygons of polygon_set1 fully outside of polygon_set2.

Syntax
dev_count_outside(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
integer

dev_cutting()
Returns a polygon_set containing all polygons of polygon_set1 that cut the polygons of
polygon_set2.

Syntax
dev_cutting(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
polygon_set

dev_inside()
Returns a polygon set containing all polygons of polygon_set1 that fit completely inside the
polygons of polygon_set2.

Syntax
dev_inside(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Chapter 4: Utility Functions


Device Utility Functions 4-92
IC Validator Reference Manual Version N-2017.12-SP2

Returns
polygon_set

dev_inside_area()
Returns the area of polygon_set1 edge inside polygon_set2.

Syntax
dev_inside_area(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

dev_inside_length()
Returns the length of edges of polygon_set1 that are contained inside polygon_set2
polygons, excluding coincident edges.

Syntax
dev_inside_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

Example
This example shows the edges that are measured.

layer from polygon_set1

layer from polygon_set2

measured edges

Chapter 4: Utility Functions


Device Utility Functions 4-93
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_inside_touch_length()
Returns the length of the edges of polygon_set1 that are inside coincident to the edges of
polygon_set2.

Syntax
dev_inside_touch_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

Example
This example shows the edges that are measured.

layer from polygon_set1

layer from polygon_set2

measured edges

dev_interacting()
Returns the polygon sets that interact with each other.

Syntax
dev_interacting(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
polygon_set

dev_not()
Returns a polygon set that is the material not in common between two polygon sets.

Chapter 4: Utility Functions


Device Utility Functions 4-94
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dev_not(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
polygon_set

dev_or()
Returns a polygon set that is the union of two polygon sets.

Syntax
dev_or(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
polygon_set

dev_outside_area()
Returns the area of polygon_set1 edge outside polygon_set2.

Syntax
dev_outside_area(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

dev_outside_length()
Returns the length of polygon_set1 outside of polygon_set2, excluding coincident edges.

Syntax
dev_outside_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Chapter 4: Utility Functions


Device Utility Functions 4-95
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Example
In the following example, magenta is polygon_set1, red is polygon_set2, and green
shows the measured edges.

Input Measured edges

dev_outside_touch_length()
Returns the length of the edges of polygon_set1 that are outside coincident to the edges
of polygon_set2.

Syntax
dev_outside_touch_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
double

Example
In the following example, magenta is polygon_set1, red is polygon_set2, and green
shows the measured edges.

Chapter 4: Utility Functions


Device Utility Functions 4-96
IC Validator Reference Manual Version N-2017.12-SP2

Input Output

dev_proximity_list()
The dev_proximity_list() function measures projection distances from a specified body
polygon set to one or more designated projection_data polygon sets. This function
consolidates measuring capabilities associated with all of the following physical parameters:
• The Length of Oxide Definition (LOD) values, which represent the distances from a gate
polygon to the LOD layer edge.
• The strained silicon effects parameters, which represent the distances projecting from
the gate width and length to nearby layers, including polysilicon, diffusion, or wells. The
nearby layers do not have interaction requirements with the gate layer.
• The Well Proximity Effect (WPE) values, which represent the distances projecting from
the gate width and length to an enclosing well layer edge.

In all cases, the function measures projections to a specified projection layer and in a given
direction relative to the body layer. Measurements to multiple projection layers can be made
using a single call to the function.
The function also returns a list of body layer region widths corresponding to each measured
projection. This list represents the manner in which a body layer polygon must be fractured
to measure multiple projections along its width. When the dev_proximity_list() function
is called with multiple projection_data list members, a common superset of body layer
fracture points is derived to enable simultaneous measurements of projection to all
members of the projection_data list.
The dev_proximity_list() function is similar to the mos_proximity_list() function;
however, dev_proximity_list() measures the projections of two sides simultaneously
relative to a horizontal or vertical direction. The checking direction (horizontal or vertical) is
determined by the projection_reference and projection_direction arguments.
The dev_proximity_list() function can be called multiple times within the remote
function called by the nmos() and pmos(), gendev(), resistor(), capacitor(),
inductor(), np() and pn(), and npn() and pnp() functions.

Chapter 4: Utility Functions


Device Utility Functions 4-97
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
dev_proximity_list(
body = polygon_set,
projection_reference = polygon_set,
projection_data = {{polygon_set = polygon_set,
order = integer,
interaction = ENTERING | LEAVING |
ENTERING_LEAVING,
range = double,
projection_length_a = {out_double, ...}},
projection_length_b = {out_double, ...}},
...},
projection_direction = PARALLEL | PERPENDICULAR,
width = {out_double, ...},
count = out_integer
);

Returns
void

Arguments
body
Required. Specifies the base polygon set from which projections are measured, for
example, gate. This polygon set must interact with the gate polygon for each instance on
which the dev_proximity_list() function is invoked. The polygon set can be returned
and manipulated using all standard polygon_set utility functions. See “polygon_set
Property Functions” on page 4-79.

projection_reference
Required. Defines the checking direction for the projection distance. This polygon set
must contain a single polygon. The bounding box of this polygon should have an outside
edge that is coincident with the bounding box of the body layer. If the polygon does not
have a coincident edge with the body layer or has both horizontal and vertical coincident
edges, IC Validator issues a warning and returns an empty result.

projection_data
Required. Specifies the polygon sets and accompanying parameters that contain all
information used to simultaneously compute and store projections to the layers.
Note:
A maximum of seven polygon sets and accompanying information can be listed.
❍ polygon_set. Required. Projection is measured to this polygon set. The polygon
set is returned using the dev_processing_layer() function to select from the
processing_layer_hash layers specified in the mos_select(), nmos(), and
pmos() functions.

Chapter 4: Utility Functions


Device Utility Functions 4-98
IC Validator Reference Manual Version N-2017.12-SP2

❍ order. Required. Determines which nearby polygon set can project on the body. The
value is a number from 0 to 50.
■ 0. Turns off measurement of projections to the corresponding polygon set.

■ 1. Selects the member of the polygon set that is closest to the body polygon,
within the range specified for the corresponding projection_data polygon_set.
■ 2. Selects the first two members of the polygon set that are closest to the body
polygon, within the range specified for the corresponding projection_data
polygon_set.
■ 3 through 50. Selects the first nth members of the polygon set that are closest to
the body polygon, within the range specified for the corresponding
projection_data polygon_set.

❍ interaction. Required. Determines the projection type to be measured between the


body polygon and the projection_data polygon_set polygon.

■ ENTERING. Measures projections from base that are entering a projection_data


polygon_set polygon.
■ LEAVING. Measures projections from base that are leaving a projection_data
polygon_set polygon.
■ ENTERING_LEAVING. Measures projections from base that are either entering or
leaving a projection_data polygon_set polygon.
❍ range. Required. Sets the maximum reported projection length.

■ When the range argument is <=0, polygon set polygons in the


projection_data argument are prefiltered to select only polygons that interact
with the body argument. The actual projection lengths between the body
argument and these prefiltered polygon_set polygons in the projection_data
argument are stored in the projection_length list member of the
projection_data argument. The range value is stored if no projection is found.

■ When the range argument is >0, the actual projection length between the body
argument and polygon_set polygons in the projection_data argument is
stored in the projection_length list member of the projection_data
argument, up to the maximum range value. If the actual projection length is
greater than the maximum range value, the range value is stored. The range
value is also stored if no projection is found.
❍ projection_length_a. Optional. Indicates the left-side projection when the
distances are calculated horizontally and the top projection when the distances are
calculated vertically.

Chapter 4: Utility Functions


Device Utility Functions 4-99
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ projection_length_b. Optional. Indicates the right-side projection when the


distances are calculated horizontally and the bottom projection when the distances
are calculated vertically.

projection_direction
Required. Determines the direction from the base polygon set in which the projection
length is calculated for the corresponding projection_data polygon_set: PARALLEL or
PERPENDICULAR.
Figure 4-20 shows how to use the projection_reference and
projection_direction arguments to define the direction of the projection distance.

Figure 4-20 Parallel and Perpendicular Projections Directions

width
Required. Specifies the variable where the body region widths corresponding to the
extracted distance projections are stored.

count
Required. Specifies the variable where the number of extracted divided body regions
calculated by the dev_proximity_list() function is stored.

Example
The following example shows how the projection_data and width arguments work
together. For horizontal projection checking, the order of the width and projection length
arrays is top to bottom. For vertical projection checking, the order is left to right.
G = dev_pin("GATE");

Chapter 4: Utility Functions


Device Utility Functions 4-100
IC Validator Reference Manual Version N-2017.12-SP2

D = dev_pin("DRN");

proj_data : list of projection_data_two_side_s = {{d1, 1, ENTERING, 10}};


dev_proximity_list(G, D, proj_data, PERPENDICULAR, width, count);
// access width, proj_data[0].projection_length_a/ proj_data[0].projection_length_b…//

Figure 4-21 illustrates this example.


Figure 4-21 Example of Projections Data and Width

PERPENDICULAR, order = 1, ENTERING

width = {w1, w2, w3}


projection_length_a = {a1, a2, a2}
projection_length_b = {b1, b1, b2}

See Also
dev_recognition_layer()
mos_proximity_list()
mos_proximity_corner_list()

dev_touch_length()
Returns the length of edges of polygon_set1 that are coincident, either inside or outside, to
the edges of polygon_set2.

Syntax
dev_touch_length(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Chapter 4: Utility Functions


Device Utility Functions 4-101
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Example
In the following example, magenta is polygon_set1, red is polygon_set2, and green
shows the measured edges.

Input Measured edges

dev_touching()
Returns a polygon set containing all polygons of polygon_set1 that touch the polygons of
polygon_set2.

Syntax
dev_touching(
polygon_set1 = polygon_set,
polygon_set2 = polygon_set
);

Returns
polygon_set

Saving Properties Utility Functions


These utility functions can be called in the remote functions for all device configuration
functions.

dev_device_name()
Returns the name of the device being extracted.

Chapter 4: Utility Functions


Device Utility Functions 4-102
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dev_device_name();

Returns
string

dev_is_property()
Verifies if the specified property is declared in the device configuration function. Returns the
value true if the property is declared; otherwise, returns the value false.

Syntax
dev_is_property(
property = "string"
);

Returns
Boolean

dev_pin_net_name()
Retrieves the net name for the specified pin name. Returns the value true if a net name is
successfully returned; otherwise, returns the value false.

Syntax
dev_pin_net_name(
pin_name = "string",
net_name = out_string
);

Returns
Boolean

dev_save_double_list_properties()
Saves the specified double list properties so that they can be netlisted. The value list is
limited to 10 values.

Syntax
dev_save_double_list_properties(
property_list = {{name = "string",
value = {double, ...}}, ...}
);

Chapter 4: Utility Functions


Device Utility Functions 4-103
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
void

dev_save_double_properties()
Saves the specified double properties so that they can be netlisted.

Syntax
dev_save_double_properties(
property_list = {{name = "string",
value = double}, ...}
);

Returns
void

dev_save_polygon_double_property()
Saves the specified double properties to the output polygon layer. This utility function is
available only for the user functions of mos_select(), res_select(), and
gendev_select() that return polygon layers. It does not work for device extraction
functions, such as nmos(), pmos(), resistor(), or gendev().

Syntax
dev_save_polygon_double_property(
name = "string",
value = double
);

Returns
void

Arguments
name
Required. Specifies the property name.
Note:
The property name cannot be an empty string or begin with an underscore (_).

value
Required. Specifies the property value to be saved.

Chapter 4: Utility Functions


Device Utility Functions 4-104
IC Validator Reference Manual Version N-2017.12-SP2

dev_save_string_properties()
Saves the specified string properties so that they can be netlisted.

Syntax
dev_save_string_properties(
property_list = {{name = "string",
value = "string"}, ...}
);

Returns
void

dev_set_pin_coordinates()
Relocates pins to the specified locations. Use this function for parasitic extraction, such as
for the StarRC tool.
The new pin coordinates that are written out using this function replace the original pin
coordinates in the Milkyway XTR view database. The XTR view database can be consumed
by the StarRC tool. If the function is applied to the body terminal of the device, the new
user-defined coordinates are applied to the body coordinates written to the extracted netlist.
For example, if the default coordinates are listed as
{COORD x=0.4000 y=1.4000}

then calling
dev_set_pin_coordinates({{"GATE", 1.4, 2.4}});

modifies the netlist to


{COORD x=1.4000 y=2.4000}

Syntax
dev_set_pin_coordinates(
coordinate_list = {{pin_name = "string", x = double, y = double,
polygon_index = integer}, ...}
);

Returns
void

Arguments
coordinate_list
Required. Lists the pins and specified locations.

Chapter 4: Utility Functions


Device Utility Functions 4-105
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ pin_name. Required. The designated pin name for the device from which the remote
function is called. For example, if the dev_set_pin_coordinates() function is used
in remote function called from the nmos() function, pin_name must be GATE, SRC,
or DRN.
❍ x, y. Required. Coordinates set by this function The coordinates must be inside the
polygon for the pin.
❍ polygon_index. Optional. Index of the pin polygon that is used to calculate the new
pin coordinates. The default is 0.

Example
my_mos_func : function( void ) returning void {

m : integer = dev_count_polygons(src_pin);
half_pillar : double = 0.055;

gate_x : double;
gate_y : double;
src_x : double;
src_y : double;

ur_gate : coordinate_s = dev_polygon_coordinates(gate_pin,0,0);


gate_x = ur_gate.x - (m*half_pillar);
gate_y = ur_gate.y - half_pillar;
src_x = ur_gate.x - (m*half_pillar) - half_pillar;
src_y = ur_gate.y - half_pillar;

dev_set_pin_coordinates({{"GATE", gate_x, gate_y}});


dev_set_pin_coordinates({{"SRC", src_x, src_y}});
dev_set_pin_coordinates({{"DRN", gate_x, gate_y }});
dev_set_pin_coordinates({{"BULK", gate_x, gate_y }});

};

nmos(
matrix = matrix,
device_name = "my_nmos",
drain = nsd
gate = ngate
source = nsd
property_function = my_mos_func
);

dev_unique_identifier()
Returns the string specified by the device configuration function unique_identifier
argument. If unique_identifier is not set in the device configuration function, an empty
string is returned.

Chapter 4: Utility Functions


Device Utility Functions 4-106
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dev_unique_identifier();

Returns
string

Retrieving polygon_set Utility Functions


These utility functions can be called in the remote functions for all device configuration
functions.

dev_body()
Returns the body polygon of the current device.

Syntax
dev_body();

Returns
polygon_set

dev_pin()
Returns polygons that define the specified pin. The required terminals of standard devices
have pin names generated by the IC Validator tool. For an optional pin, the default name is
“BULK”; you can redefine it.
Note:
The dev_pin() function gathers polygons on a cell-level basis unless the pin name is
listed in a pin_map argument. For more information, including descriptions of how
processing_layer_hash polygons and terminal layer polygons are handled by
dual-hierarchy extraction, see the processing_layer_hash_map and pin_map options
of the properties argument in a device extraction function, such as nmos() or pmos().

Syntax
dev_pin(
pinname = "string"
);

Returns
polygon_set

Chapter 4: Utility Functions


Device Utility Functions 4-107
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dev_processing_layer()
Returns a polygon set corresponding to the processing layer referenced by the layer_name
hash key, for use inside a remote function called by a device configuration or ERC function.

Syntax
dev_processing_layer(
layer_name = "string"
);

Returns
polygon_set

Example
See the Example section of the dev_processing_range() function.

dev_processing_layer_polygon_id()
Returns the ID of the processing layer polygon that the current device gate touches. This is
the polygon ID. The return value is -1 if the device body does not touch any processing layer
polygon or if it touches more than one processing layer polygon. Figure 4-22 shows an
example of polygon IDs:
Figure 4-22 Example of Polygon IDs

polygon ID = 1

G1 polygon ID = 1 ID = 3
G4

ID = 1 G2
polygon ID = -1
ID = 4

polygon ID = 2

G3 ID = 2

device body processing layer

Chapter 4: Utility Functions


Device Utility Functions 4-108
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dev_processing_layer_polygon_id(
layer_name = "string"
);

Returns
integer

Arguments
layer_name
Required. Specifies the processing layer.

dev_processing_range()
Returns the range value corresponding to the processing layer referenced by the hash key
layer_name, for use inside a remote function called by a device configuration or ERC
function.

Syntax
dev_processing_range(
layer_name = "string"
);

Returns
double

Example
The dev_processing_range() function
• Helps keep range values synchronized between the range used in
mos_proximity_list(projection_data) and the range specified in the
processing_layer_hash argument of the device configuration or ERC functions.

• Allows you to change the range value in the mos_proximity_list() function between
multiple calls to the nmos() or pmos() function when using the same property function.
// layer1_range returns the double value of 5.
mos_stress_function : function (void) returning void {
layer1 : polygon_set = dev_processing_layer("NW");
layer1_range: double = dev_processing_range("NW");}

nmos(
matrix = my_devices,
device_name = "NF_DEVICE",
gate = nf_device,

Chapter 4: Utility Functions


Device Utility Functions 4-109
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

source = src_drn,
drain = src_drn,
processing_layer_hash = { "NW"=>{NW, 5}, "PC"=>{PC,2} },
properties = mos_properties,
property_function = mos_stress_function,
merge_parallel = true
);

See Also
mos_proximity_corner_list()
mos_proximity_list()

dev_recognition_layer()
Returns the recognition layer.

Syntax
dev_recognition_layer();

Returns
polygon_set

Flexible Netlisting Utility Functions


These utility functions can be used by the remote function called by the
spice_netlist_function argument of the device configuration functions to create SPICE
netlists.
To do flexible netlisting, you need to
1. Define a flexible netlisting function in a user file. This function is called in the
spice_netlist_function of the device configuration function.
Note:
You must call the flx_write_to_spice_netlist() function to get the output from
this function.
For example, in netlist.rs
#include <icv_netlist.rh>

print_spice_nmos : entrypoint function (void) returning void {

drn_net: string;
gate_net: string;
src_net: string;
l_value: double;

Chapter 4: Utility Functions


Flexible Netlisting Utility Functions 4-110
IC Validator Reference Manual Version N-2017.12-SP2

w_value: double;
status = flx_pin_net_name("DRN",drn_net);
status = flx_pin_net_name("GATE",gate_net);
status = flx_pin_net_name("SRC",src_net);
status = flx_get_double_property("l",l_value);
status = flx_get_double_property("w",w_value);

device_string = flx_instance_name()
+ " "
+ drn_net
+ " "
+ gate_net
+ " "
+ src_net
+ " "
+ flx_device_name()
+ " w="
+ w_value
+ " l="
+ l_value;

flx_write_to_spice_netlist(device_string);
}

2. In the runset, specify the user file in the write_spice() or write_xref_spice()


functions. For example,
write_spice(user_functions_file="netlist.rs");

3. Call the flexible netlisting function from inside the device configuration function. For
example,
nmos(dev_matrix,"NmosDev1",
NmosTerm1, NmosGate1,NmosTerm1,
processing_mode = HIERARCHICAL,
spice_netlist_function = "print_spice_nmos"
);

flx_device_name()
Returns the device name.

Syntax
flx_device_name();

Returns
string

Chapter 4: Utility Functions


Flexible Netlisting Utility Functions 4-111
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

flx_device_type()
Returns the device type.

Syntax
flx_device_type();

Returns
flx_device_type_result

flx_get_double_property()
Retrieves a double value for the specified property. Returns the value true if the function
successfully returns a double value; otherwise, returns the value false.

Syntax
flx_get_double_property(
property_name = "string",
value = out_double
);

Returns
Boolean

flx_get_string_property()
Retrieves the string value for the specified property. Returns the value true if the function
successfully returns the string value for the specified property; otherwise, returns the value
false.

Syntax
flx_get_string_property(
property_name = "string",
value = out_string
);

Returns
Boolean

Chapter 4: Utility Functions


Flexible Netlisting Utility Functions 4-112
IC Validator Reference Manual Version N-2017.12-SP2

flx_instance_name()
Returns the instance name.

Syntax
flx_instance_name();

Returns
string

flx_is_shorted()
Returns the value true if the device is shorted; otherwise, returns the value false.

Syntax
flx_is_shorted();

Returns
Boolean

flx_pin_net_name()
Returns the value true if a net name is successfully returned in the net_name argument for
the specified pin_name; otherwise, returns the value false.

Syntax
flx_pin_net_name(
pin_name = "string",
net_name = string
);

Returns
Boolean

flx_write_to_spice_netlist()
Writes the specified string to the SPICE netlist.

Syntax
flx_write_to_spice_netlist(

Chapter 4: Utility Functions


Flexible Netlisting Utility Functions 4-113
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

line = "string"
);

Returns
void

Dynamic Linking Utility Functions


The dynamic-link functions described in this section can be called in the remote functions of
all device configuration functions to calculate the measurement data using the specified
dynamic-link library, which is a C library.
In addition to the following utility functions, you can use the general purpose functions, such
as the note() function to write a message in the summary file and to the screen when you
use the -verbose option. See “General-Purpose Functions” on page 4-3 for more
information.

dev_dlink()
The dev_dlink() function passes measurement data to C libraries external to the
IC Validator runset, and then returns the results from C libraries back to the IC Validator tool.
The C library must be a shared (dynamic) library.

Syntax
dev_dlink(
dlink_library = dev_dlink_library_handle,
function_name = "string",
double_arguments = {double, ...},
string_arguments = {"string", ...},
double_results = {out_double, ...}
);

Returns
void

Arguments
dlink_library
Required. Specifies the handle of the dynamic-link library that contains the external
C Function specified by the function_name argument. It must be opened using the
dev_dlink_library_open() function before it is specified here.

Chapter 4: Utility Functions


Dynamic Linking Utility Functions 4-114
IC Validator Reference Manual Version N-2017.12-SP2

function_name
Required. Specifies the external C function that processes the measurement data from
the IC Validator tool.

double_arguments
Required. Specifies data that is encoded into a 1-dimensional array of doubles. This data
is passed to the C libraries.

string_arguments
Required. Specifies customized strings. This data is passed to the C libraries. Passing
string identifiers is useful so that different internal routines can be selected in the wrapper
function.

double_results
Required. Specifies the variable where the results generated by the C libraries are
stored. After the C functions compute and analyze the data, the generated results are
available for use in the runset.

dev_dlink_library()
The dev_dlink_library() function selects a library handle to pass to the dev_dlink()
function to specify where the C function is located.

Syntax
dev_dlink_library(
index = integer
);

Returns
dev_dlink_library_handle

Arguments
index
Required. Specifies the library handle from the list in the dlink_libraries argument of
the device configuration functions. The index starts from 0, which specifies the first
library handle.

Chapter 4: Utility Functions


Dynamic Linking Utility Functions 4-115
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Density Utility Functions


The utility functions described in this section can be called in the remote functions called by
the density functions:
• density()

• gradient_density()

In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

Layout Density Utility Functions


These utility functions can be called in the density() remote function.
The body of the density remote function is typically organized like as shown here:
1. Begin with calls to the den_polygon_area() function to calculate the area values of the
desired layers in the current delta_window subwindow.
2. Perform mathematical operations on the area values.
3. Call the den_save_window() function to write the current error subwindow and density
statistics.
4. End with a call to the den_generate_next_step() function to move the subwindow to
the next potential error location.

den_generate_next_step()
Moves the delta_window subwindow to the next potential error location based on
• The current ratio value or area value.
• The target ratio constraint or area constraint.
• The step basis.

Syntax
den_generate_next_step(
current_value = double,
target_value = doubleconstraint,
step_basis = AREA | RATIO | AREA_COMPLEMENT | RATIO_COMPLEMENT
);

Chapter 4: Utility Functions


Density Utility Functions 4-116
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Arguments
current_value
Required. Specifies the ratio variable or area variable set in the density equation.

target_value
Required. Specifies the target ratio constraint or area constraint from the density rule.

step_basis
Required. Specifies the type of density check on which the delta window movement is
based.
❍ AREA. Specifies that the density rule checks the area. The delta window movement is
based on an area computation using the current area value and the target area
constraint.
❍ RATIO. Specifies that the density rule checks the ratio. The delta window movement
is based on a ratio computation using the current ratio value and the target ratio
constraint.
❍ AREA_COMPLEMENT. Specifies that the density rule checks the area. The delta window
movement is based on an area computation using the current area value and the
target area constraint represented with a constraint complement.
❍ RATIO_COMPLEMENT. Specifies that the density rule checks the ratio. The delta
window movement is based on a ratio computation using the current ratio value and
the target ratio constraint represented with a constraint complement.
Table 4-4 illustrates each constraint and its complement:

Table 4-4 step_basis Constraints and Complements

Constraint Complement

<a >= a

<= a >a

==a !=a

!=a ==a

>a <=a

Chapter 4: Utility Functions


Density Utility Functions 4-117
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 4-4 step_basis Constraints and Complements

Constraint Complement

>=a <a

[a,b] <a || >b

[a,b) <a || >=b

(a,b] <=a || >b

(a,b) <=a || >=b

Examples
The following AREA example shows the current area value in a density function and the
target area constraint in a density rule.
• The current area value is stored in the user-defined variable that is named areaL.
• The target area constraint is specified as less than 12500.
• The step basis is AREA.

The current area variable, target area constraint, and step basis are highlighted in the
example.
den_area_func : function (void) returning void {
areaL : double = den_polygon_area("metal");
areaWL : double = den_polygon_area("window_layer");
ratio : double = areaL / areaWL;

if (dbllt(areaL, 12500))
{
den_save_window(error_names = {"metal_area", "window_area",
"ratio"},
values = {areaL, areaWL, ratio});
}
den_generate_next_step(areaL, < 12500, AREA);
}

The following RATIO example shows the current ratio value in a density function and the
target ratio constraint in a density rule.
• The current ratio value is stored in the user-defined variable that is named ratio.
• The target ratio constraint is specified as less than 0.20.
• The step basis is RATIO.

Chapter 4: Utility Functions


Density Utility Functions 4-118
IC Validator Reference Manual Version N-2017.12-SP2

The current ratio variable, target ratio constraint, and step basis are highlighted in the
example.
den_ratio_func : function (void) returning void {
areaL : double = den_polygon_area("metal");
areaWL : double = den_polygon_area("window_layer");
ratio : double = areaL / areaWL;

if (dbllt(ratio, 0.20))
{
den_save_window(error_names = {"metal_area", "window_area",
"ratio"},
values = {areaL, areaWL, ratio});
}
den_generate_next_step(ratio, < 0.20, RATIO);
}

The following AREA_COMPLEMENT example shows the current area value in a density function
and the target area constraint in a density rule.
• The current area value is stored in the user-defined variable that is named areaL.
• The target area constraint is specified as less than 12500 or greater than 15500, which
is represented as the complement of the range [12500,15500].
• The step basis is AREA_COMPLEMENT.

The current area variable, target area constraint, and step basis are highlighted in the
example.
den_area_func : function (void) returning void {
areaL : double = den_polygon_area("metal");
areaWL : double = den_polygon_area("window_layer");
ratio : double = areaL / areaWL;

if (dbllt(areaL, 12500) || dblgt(areaL, 15500))


{
den_save_window(error_names = {"metal_area", "window_area",
"ratio"},
values = {areaL, areaWL, ratio});
}
den_generate_next_step(areaL, [12500,15500], AREA_COMPLEMENT);
}

The following RATIO_COMPLEMENT example shows the current ratio value in a density
function and the target ratio constraint in a density rule.
• The current ratio value is stored in the user-defined variable that is named ratio.
• The target ratio constraint is specified as less than 0.20 or greater than 0.80, which is
represented as the complement of the range [0.20,0.80].

Chapter 4: Utility Functions


Density Utility Functions 4-119
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• The step basis is RATIO_COMPLEMENT.

The current ratio variable, target ratio constraint, and step basis are highlighted in the
example.
den_ratio_func : function (void) returning void {
areaL : double = den_polygon_area("metal");
areaWL : double = den_polygon_area("window_layer");
ratio : double = areaL / areaWL;

if (dbllt(ratio, 0.20) || dblgt(ratio, 0.80))


{
den_save_window(error_names = {"metal_area", "window_area",
"ratio"},
values = {areaL, areaWL, ratio});
}
den_generate_next_step(ratio, [0.20,0.80], RATIO_COMPLEMENT);
}

den_layer_empty()
Returns the value true if the considered area does contains material from the specified layer;
otherwise, returns the value false.

Syntax
den_layer_empty(
layer_name = "string",
clip = true | false //optional
);

Returns
Boolean

Arguments
layer_name
Required. Specifies the layer.

clip
Optional. Determines whether or not data polygons inside the delta_window subwindow
are clipped by the window_layer polygons. The default is true.
❍ true. The den_layer_empty() function returns the value true if there is no material
from the specified layer inside the intersection area of the subwindow and the
window_layer polygon.

❍ false. The den_layer_empty() function returns the value true if there is no material
from the specified layer inside the subwindow.

Chapter 4: Utility Functions


Density Utility Functions 4-120
IC Validator Reference Manual Version N-2017.12-SP2

den_polygon_area()
Returns the area of the specified layer within the considered area. Input layers are specified
by their string name from the layer_hash argument. The window_layer is specified by the
string "window_layer".

Syntax
den_polygon_area(
layer_name = "string",
clip = true | false, //optional
size_index = integer
);

Returns
double

Arguments
layer_name
Required. Specifies the layer.

clip
Optional. Determines whether or not data polygons inside the delta_window subwindow
are clipped by the window_layer polygons The default is true.
❍ true. The considered area is the intersection area of the specified layer, the
subwindow, and the window_layer polygon.
❍ false. The considered area is the intersection area of the specified layer and the
subwindow.

size_index
Optional. Index of width and height size values specified in the delta_window_sizes
argument of the density() function. The default is -1.
❍ A value greater than or equal 0 specifies the polygon area within the primary
subwindow plus or minus the size amount specified in the list of values in the
delta_window_sizes argument at this index.

❍ The default of -1 specifies the polygon area within the primary the subwindow.

den_save_sized_window()
Saves a sized delta_window subwindow that is clipped to the extent of the boundary layer.
The size_index argument selects the sized window from the delta_window_sizes
argument of the density() function.

Chapter 4: Utility Functions


Density Utility Functions 4-121
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
The den_save_window() function saves an unclipped sized subwindow.
You can choose to write density statistics to the LAYOUT_ERRORS file if the output of the
density function is to error output. The density statistics consist of a list of error_names and
a list of corresponding values. The density statistics are ignored if the output is to a named
layer.

Syntax
den_save_sized_window(
size_index = integer, //optional
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Arguments
size_index
Optional. Selects the sized window from the delta_window_sizes argument of the
density() function. The first file in the list has an index of 0. The default is 0; that is, the
first file in the list.

error_names
Optional.

values
Optional.

den_save_window()
Saves a sized delta_window subwindow that is not clipped to the extent of the boundary
layer. The unsized subwindow is used for all calculations.
Note:
If an oversized subwindow that is clipped to the extent of the boundary layer is needed,
use the den_save_sized_window() function.
You can also choose to write density statistics to the LAYOUT_ERRORS file if the output of
the density function is to error output. The density statistics consist of a list of error_names
and a list of corresponding values. The density statistics are ignored if the output is to a
named layer.

Chapter 4: Utility Functions


Density Utility Functions 4-122
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
den_save_window(
size = double, //optional
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Arguments
size
Optional. The default is 0.

error_names
Optional.

values
Optional.

den_window_area()
Returns the area of the current delta_window subwindow.

Syntax
den_window_area(
size_index = integer //optional
);

Returns
double

Arguments
size_index
Optional. Specifies the index of width and height size values specified in the
delta_window_sizes argument of the density() function. The default is -1.

❍ A value greater than or equal 0 specifies the area of the primary subwindow plus or
minus the size amount specified in the list of values in the delta_window_sizes
argument at this index.
❍ The default of -1 specifies the area of the primary subwindow.

Chapter 4: Utility Functions


Density Utility Functions 4-123
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

den_window_bottom()
Returns the bottom coordinate of the current delta_window subwindow.

Syntax
den_window_bottom();

Returns
double

den_window_left()
Returns the left coordinate of the current delta_window subwindow.

Syntax
den_window_left();

Returns
double

den_window_right()
Returns the right coordinate of the current delta_window subwindow.

Syntax
den_window_right();

Returns
double

den_window_statistics()
Writes density statistics to the specified file.

Syntax
den_window_statistics(
which_file = integer, //optional
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Chapter 4: Utility Functions


Density Utility Functions 4-124
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
which_file
Optional. Specifies the file where the data is written. The list of files is defined in the
statistics_files argument of the density() function. The first file in the list has an
index of 0. The default is 0; that is, the first file in the list.

error_names
Optional.

values
Optional.

den_window_top()
Returns the top coordinate of the current delta_window subwindow.

Syntax
den_window_top();

Returns
double

Gradient Density Utility Functions


These utility functions can be called in the gradient_density() remote function.
You have access to eight neighboring delta_window subwindows, for each current
subwindow. Neighboring subwindows are specified by offsets relative to the current
subwindow: LOWER_LEFT, DOWN, LOWER_RIGHT, LEFT, RIGHT, UPPER_LEFT, UP,
UPPER_RIGHT. Passing subwindow offset to the various utility functions lets you determine
area information about each neighboring subwindow.
The body of the remote function is typically organized as shown here:
1. Begin with calls to the gden_polygon_area() function to determine the area values of
the desired layers in the current delta_window argument.
2. Loop to process each of the neighboring subwindows. Begin the loop with a call to the
gden_window_valid() function to validate each neighboring subwindow before
processing. For each valid neighboring subwindow, the loop should
❍ Begin with calls to the gden_polygon_area() function to determine the area values
of the desired layers in each neighboring subwindow.

Chapter 4: Utility Functions


Density Utility Functions 4-125
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ Perform mathematical operations on the area values and do gradient calculations.


❍ End with calls to the gden_save_window() function to write the center subwindow to
report each neighboring subwindow in violation with the center subwindow and to
report any density and gradient statistics.

The following is an example of a gradient density remote function:


neighborhood : list of window_offset_e = {
UPPER_LEFT, UP, UPPER_RIGHT,
LEFT, RIGHT,
LOWER_LEFT, DOWN, LOWER_RIGHT
};

user_gradient_func : function(void) returning void


{
areaL_center : double = gden_polygon_area("layer1");
areaW_center : double = gden_window_area();
ratio_center : double = areaL_center / areaW_center;

areaL_neighbor : double;
areaW_neighbor : double;
ratio_neighbor : double;
gradient : double;

num_errors : integer = 0;

foreach (neighbor in neighborhood)


{
if (gden_window_valid(neighbor))
{
areaL_neighbor = gden_polygon_area("layer1", offset = neighbor);
areaW_neighbor = gden_window_area(offset = neighbor);
ratio_neighbor = areaL_neighbor / areaW_neighbor;

gradient = ratio_center - ratio_neighbor;


if (abs(gradient) > 0.300)
{
/* write center window one time */
num_errors = num_errors + 1;
if (num_errors == 1)
gden_save_window(error_names = { "Ratio", "Area" },
values = { ratio_center, areaL_center });

/* report gradient window */


gden_save_window(error_names = { "Signed Gradient" },
values = { gradient },
offset = neighbor);
}
}
}
}

Chapter 4: Utility Functions


Density Utility Functions 4-126
IC Validator Reference Manual Version N-2017.12-SP2

gden_layer_empty()
Returns the value true if the considered area does contains material from the specified layer;
otherwise, returns the value false.

Syntax
gden_layer_empty(
layer_name = "string",
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |
RIGHT | UPPER_LEFT | UP | UPPER_RIGHT, //optional
clip = true | false //optional
);

Returns
Boolean

Arguments
layer_name
Required. Specifies the layer.

offset
Optional. Specifies which of the nine possible delta_window subwindows to consider.
The default is CENTER.

clip
Optional. Limits the considered area to be inside the boundary of a nonrectangular
window_layer polygon. The default is true.

❍ true. The gden_layer_empty() function returns the value true if there is no


material from the specified layer found inside the intersection area of the subwindow
and the window_layer polygon.
❍ false. The gden_layer_empty() function returns the value true if there is no
material from the specified layer found inside the subwindow.

gden_polygon_area()
Returns the area of the specified layer within the considered area; you can specify an offset.
Input layers are specified by their string name from the layer_hash argument. The
window_layer is specified by the string "window_layer".

Syntax
gden_polygon_area(
layer_name = "string",
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |

Chapter 4: Utility Functions


Density Utility Functions 4-127
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

RIGHT | UPPER_LEFT | UP | UPPER_RIGHT, //optional


clip = true | false //optional
);

Returns
double

Arguments
layer_name
Required. Specifies the layer.

offset
Optional. Specifies which of the nine possible delta_window subwindows to consider.
The default is CENTER.

clip
Optional. Limits the returned area to be inside the boundary of a nonrectangular
window_layer polygon. The default is true.

❍ true. The gden_polygon_area() function returns the area of the input layer polygon
and the subwindow and the window_layer polygon.
❍ false. The gden_polygon_area() function returns the area of the input layer
polygon and the subwindow.

gden_save_window()
Saves the current delta_window subwindow to the error database if the output of the
gradient_density() function is to error output, or to a layer if the output of the
gradient_density() function is to a named layer.

If a neighboring subwindow is specified, it is saved to the error database if the output of the
gradient_density() function is to error output. Neighboring subwindows are not output to
a layer if the gradient_density() function is to a named layer.
An optional size parameter allows you to output a sized copy of the current subwindow. The
unsized subwindow is used for all calculations.
You can also choose to write density statistics to the LAYOUT_ERRORS file if the output of
the gradient_density() function is to error output. The density statistics consist of a list of
error_names and a list of corresponding values. The density statistics are ignored if the
output is to a named layer.

Syntax
gden_save_window(

Chapter 4: Utility Functions


Density Utility Functions 4-128
IC Validator Reference Manual Version N-2017.12-SP2

size = double, //optional


error_names = {"string", ...}, //optional
values = {double, ...}, //optional
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |
RIGHT | UPPER_LEFT | UP | UPPER_RIGHT //optional
);

Returns
void

Arguments
size
Optional. The default is 0.

error_names
Optional.

values
Optional.

offset
Optional. The default is CENTER.

gden_window_area()
Returns the area of the current delta_window subwindow, or neighboring subwindow if an
offset is specified.

Syntax
gden_window_area(
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |
RIGHT | UPPER_LEFT | UP | UPPER_RIGHT //optional
);

Returns
double

Arguments
offset
Optional. The default is CENTER.

Chapter 4: Utility Functions


Density Utility Functions 4-129
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

gden_window_bottom()
Returns the bottom coordinate of the current delta_window subwindow.

Syntax
gden_window_bottom();

Returns
double

gden_window_left()
Returns the left coordinate of the current delta_window subwindow.

Syntax
gden_window_left();

Returns
double

gden_window_right()
Returns the right coordinate of the current delta_window subwindow.

Syntax
gden_window_right();

Returns
double

gden_window_statistics()
Writes density statistics for the current delta_window subwindow, or neighboring
subwindow if an offset is specified, to the specified file.

Syntax
gden_window_statistics(
which_file = integer, //optional
error_names = {"string", ...}, //optional
values = {double, ...}, //optional
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |
RIGHT | UPPER_LEFT | UP | UPPER_RIGHT //optional
);

Chapter 4: Utility Functions


Density Utility Functions 4-130
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Arguments
which_file
Optional. Specifies the file where the data is written. The list of files is defined in the
statistics_files argument of the gradient_density() function. The first file in the
list has an index of 0. The default is 0; that is, the first file in the list.

error_names
Optional.

values
Optional.

offset
Optional. The default is CENTER.

gden_window_top()
Returns the top coordinate of the current delta_window subwindow.

Syntax
gden_window_top();

Returns
double

gden_window_valid()
Returns the value true if the delta_window subwindow offset points to a valid subwindow;
otherwise, returns the value false. A subwindow is valid if it is within the boundary of the
current window_layer polygon and contains window_layer material.

Syntax
gden_window_valid(
offset = LOWER_LEFT | DOWN | LOWER_RIGHT | LEFT | CENTER |
RIGHT | UPPER_LEFT | UP | UPPER_RIGHT //optional
);

Returns
Boolean

Chapter 4: Utility Functions


Density Utility Functions 4-131
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
offset
Optional. The default is CENTER.

Fill Pattern Utility Functions


In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

fp_generate_fill()
Generates fill patterns based on the input polygon (layer1) and other arguments specified
in the fill_pattern() function.

Syntax
fp_generate_fill(
polygon = polygon,
width = double,
height = double,
space_x = double,
space_y = double,
stagger_x = double, /optional
stagger_y = double, //optional
grid_shift = {x = double, y = double}, //optional
start_on_grid = true | false, //optional
boundary = {boundary_mode = EXCLUDE | CUT | INCLUDE | ADJUST,
minimum_area = doubleconstraint,
minimum_width = doubleconstraint,
width_bound = double,
height_bound = double,
width_delta = double,
height_delta = double}, //optional
pitch = {x = double, y = double} //optional
);

Returns
void

Arguments
polygon
Required. Specifies the polygon that is filled.

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-132
IC Validator Reference Manual Version N-2017.12-SP2

width
Required. Specifies the width of the fill shape.

height
Required. Specifies the height of the fill shape.

space_x
Required. Specifies the distance between fill shapes in the x-direction.

space_y
Required. Specifies the distance between fill shapes in the y-direction.

stagger_x
Optional. Specifies the stagger distance between fill shapes in the x-direction. A value
less than 0 indicates a stagger distance in the negative x-direction. The default is 0.

stagger_y
Optional. Specifies the stagger distance between fill shapes in the y-direction. As shown
in Figure 4-23, a value less than 0 indicates a stagger distance in the negative
y-direction. The default is 0.
Figure 4-23 Stagger Distance in Negative Y-Direction

space_y space_y

space_x

stagger_y space_x

stagger_y

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-133
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

grid_shift
Optional. Specifies a shift to the starting point of the fill pattern origin based on the value
of the grid_mode argument of the fill_pattern() function. The default is {0.0, 0.0}.
Note:
The grid shift must be the default if you use the pitch argument.

start_on_grid
Optional. Moves the fill pattern origin it to the right-upper grid point if it is not on grid. The
default is true.

boundary
Optional. Controls the generation of a fill polygon when it is not completely within the
input polygon.
❍ boundary_mode. The default is EXCLUDE.

■ EXCLUDE. Fill rectangle is not generated.

■ CUT. Maximum rectangle in the overlapping area of the fill rectangle and the input
polygon is generated. This maximum rectangle is called the postcut fill rectangle
This option uses the minimum_area and minimum_width values.
■ INCLUDE. Fill rectangle is generated.

■ ADJUST. Fill rectangle size is adjusted. Fills can be adjusted by shrinking or


growing the width, the height, or both. Only fills that are closest to the boundary of
a fillable region can be adjusted, as shown in Figure 4-24.
Figure 4-24 ADJUST Option Example

Fill rectangle layer1 Fill rectangle that can be adjusted

Fills cannot be shrunken smaller than a minimum size, nor grown larger than a
maximum size, specified by the width_bound and height_bound arguments. The
shrinking and growing sizes must be multiples of specified delta values,
width_delta and height_delta.

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-134
IC Validator Reference Manual Version N-2017.12-SP2

❍ minimum_area. When boundary = CUT, ignore postcut fill rectangles whose area
does not satisfy the area constraint. The default is >0.
❍ minimum_width. When boundary = CUT, ignore postcut fill rectangles whose width
does not satisfy the width constraint. The default is >0.
❍ width_bound. Specifies the minimum or maximum width that the fill rectangle can
shrink or grow when boundary = ADJUST. If this value is less than the fill width, which
is specified with the width argument, then the adjustable fill is shrunk. Otherwise, the
adjustable fill is grown. The value must be nonnegative. The default is 0.0.
❍ height_bound. Specifies the minimum or maximum height that the fill rectangle can
shrink or grow when boundary = ADJUST. If this value is less than the fill height,
which is specified with the height argument, then the adjustable fill is shrunk.
Otherwise, the adjustable fill is grown. The value must be nonnegative. The default
is 0.0.
❍ width_delta. Specifies how much the fill width can change, that is, shrink or grow,
when boundary = ADJUST. The value must be nonnegative. The default is 0.0.
❍ height_delta. Specifies how much the fill height can change, that is, shrink or grow,
when boundary = ADJUST. The value must be nonnegative. The default is 0.0.

pitch
Optional. Specifies the pitch lines for generated fill. Pitch values are ignored when there
is no context layer. This argument is specified using the context_layer argument of the
fill_pattern() function. The default is {0.0, 0.0}, which means pitch is ignored.
For a finFET pitch rule, use the context_layer argument to specify the finFET
boundary layer. Set the pitch argument with x- and y-pitch grids. Fillable regions inside
a boundary polygon use the same pitch lines.

Examples
The following is an example of shrinking adjustable fill. Figure 4-25 shows the result of this
function:
fp_generate_fill(cur_polygon,
width = 0.18, height = 0.05,
space_x = 0.5, space_y = 0.5,
boundary = {boundary_mode = ADJUST,
width_bound = 0.02, width_delta = 0.03}
);

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-135
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure 4-25 Shrinking Adjustable Fill

Shrink by a multiple of the delta value,


but no smaller than the minimum size.

Result

layer1 Fill rectangle Minimum size Shrinking delta value

The following is an example of growing adjustable fill. Figure 4-26 shows the result of this
function:
fp_generate_fill(layer1,
width = 0.05, height = 0.05,
space_x = 0.05, space_y = 0.05,
boundary = {boundary_mode = ADJUST,
width_bound = 0.14, width_delta = 0.03}
);

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-136
IC Validator Reference Manual Version N-2017.12-SP2

Figure 4-26 Growing Adjustable Fill

Grow by a multiple of the delta value,


but no larger than the maximum size.

Result

layer1 Fill rectangle Maximum size Growing delta value

fp_get_current_polygon()
Returns the current processing polygon from the input layer1.

Syntax
fp_get_current_polygon();

Returns
polygon

fp_new_polygon()
Creates a new empty polygon. Call the fp_set_polygon_coordinate() function to define
the new polygon.

Syntax
fp_new_polygon();

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-137
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
polygon

fp_polygon_area()
Returns the polygon area.

Syntax
fp_polygon_area(
polygon = polygon
);

Returns
double

fp_polygon_center_diamond()
Returns a diamond at the center of the extents of the input polygon.

Syntax
fp_polygon_center_diamond(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required.

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-138
IC Validator Reference Manual Version N-2017.12-SP2

fp_polygon_center_square()
Returns a square at the center of the extents of the input polygon.

Syntax
fp_polygon_center_square(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required. Specifies the polygon.

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The default is DRC_ERROR_BOX, which has a default of 0.1.

fp_polygon_center_triangle()
Returns a triangle at the center of the extents of the input polygon.

Syntax
fp_polygon_center_triangle(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required. Specifies the polygon.

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-139
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The default is DRC_ERROR_BOX, which has a default of 0.1.

fp_polygon_coordinate_x()
Returns the x-value of the ith coordinate of the input polygon.

Syntax
fp_polygon_coordinate_x(
polygon = polygon,
index = integer
);

Returns
double

fp_polygon_coordinate_y()
Returns the y-value of the ith coordinate of the input polygon.

Syntax
fp_polygon_coordinate_y(
polygon = polygon,
index = integer
);

Returns
double

fp_polygon_diagonal_extent()
Returns the smallest 45-degree rectangle that contains the polygon.

Syntax
fp_polygon_diagonal_extent(
polygon = polygon
);

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-140
IC Validator Reference Manual Version N-2017.12-SP2

Returns
polygon

fp_polygon_extent()
Returns the bounding box of the polygon.

Syntax
fp_polygon_extent(
polygon = polygon
);

Returns
polygon

fp_polygon_max_rectangle()
Returns the largest rectangle (by area) that fits within its polygon argument.

Syntax
fp_polygon_max_rectangle(
polygon = polygon
);

Returns
polygon

fp_polygon_max_square()
Returns the largest square that fits within its polygon argument.

Syntax
fp_polygon_max_square(
polygon = polygon
);

Returns
polygon

Chapter 4: Utility Functions


Fill Pattern Utility Functions 4-141
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

fp_polygon_num_coordinates()
Returns the number of coordinates in a polygon.

Syntax
fp_polygon_num_coordinates(
polygon = polygon
);

Returns
integer

fp_set_polygon_coordinate()
Adds a coordinate to a polygon. The polygon must have been returned from a call to the
fp_new_polygon() function. The list of coordinates defines the boundary of the polygon.
The points must be in order around the outside of the polygon, in either clockwise or counter
clockwise direction. A hole is created in a polygon by defining a boundary that abuts itself.

Syntax
fp_set_polygon_coordinate(
polygon = polygon,
x = double,
y = double,
index = integer
);

Returns
void

Net Polygon Select Utility Functions


These utility functions can be called in the net_polygon_select() remote function.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.
The body of the remote function is typically organized as shown here:
1. Begin with calls to utility functions to determine current net or polygon parameters.

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-142
IC Validator Reference Manual Version N-2017.12-SP2

2. Call the nps_read_property() function to get the properties, if present, on the current
polygon.
3. Perform mathematical operations on parameters and properties.
4. Call the nps_save_polygon() function to select the current polygon for output.
5. Call the nps_save_property() function to write properties to the current polygon and
save the current polygon to the output property layer.

nps_get_sum_double_property()
Retrieves the sum of the values of the specified properties for the specified layers in a net.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
nps_get_sum_double_property(
group_name = "string",
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the sum of the values of the property specified for
the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

nps_net_area()
Returns the area of the specified layers on the current net.

Syntax
nps_net_area(

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-143
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose area is requested.

nps_net_data_count()
Returns the polygon count of the specified layers on the current net.

Syntax
nps_net_data_count(
group_name = "string"
);

Returns
integer

Arguments
group_name
Required. Specifies the group whose count is requested.

nps_net_perimeter()
Returns the perimeter of the specified layers on the current net.

Syntax
nps_net_perimeter(
group_name = "string"
);

Returns
double

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-144
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
group_name
Required. Specifies the group whose perimeter is requested.

nps_polygon_area()
Returns the area of the current polygon.

Syntax
nps_polygon_area();

Returns
double

nps_polygon_extent_bottom()
Returns the bottom bounding box coordinate for the polygon.

Syntax
nps_polygon_extent_bottom();

Returns
double

nps_polygon_extent_left()
Returns the left bounding box coordinate for the polygon.

Syntax
nps_polygon_extent_left();

Returns
double

nps_polygon_extent_right()
Returns the right bounding box coordinate for the polygon.

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-145
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
nps_polygon_extent_right();

Returns
double

nps_polygon_extent_top()
Returns the top bounding box coordinate for the polygon.

Syntax
nps_polygon_extent_top();

Returns
double

nps_polygon_perimeter()
Returns the perimeter of the current polygon.

Syntax
nps_polygon_perimeter();

Returns
double

nps_read_property()
Returns the value of the specified property of the current polygon.

Syntax
nps_read_property(
name = "string"
);

Returns
double

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-146
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
name
Required. Specifies the property name.

nps_save_polygon()
Selects the current polygon for output.
If the output for the net_polygon_select() function is to error output, the error_names
and associated values specified in the nps_save_polygon() function are included in the
LAYOUT_ERRORS file. For each value, a string is popped from the error_names list to
accompany the value in the LAYOUT_ERROR file. When the error_names are exhausted,
the values are included without a string. When the values are exhausted, the remaining
strings are ignored. Control characters in the strings are treated as regular text as the format
of the output is fixed.

Syntax
nps_save_polygon(
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Arguments
error_names
Optional. Specifies the strings included in the error report.

values
Optional. Specifies the values included in the error report.

nps_save_properties()
Save property name and value on the in_property_layer.

Syntax
nps_save_properties(
multiple_properties = {{name = "string", value = double},
...}
);

Chapter 4: Utility Functions


Net Polygon Select Utility Functions 4-147
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
void

nps_save_property()
Stores a value to the current polygon, associates it with the specified string, and saves the
polygon to the output property layer.

Syntax
nps_save_property(
name = "string",
value = double
);

Returns
void

Arguments
name
Required. Specifies the property name.

value
Required. Specifies the value that is stored.

Net Select Utility Functions


These utility functions can be called in the net_select() remote function.
In addition to the following utility functions, you can use the general purpose functions, such
as the note() function, to write a message in the summary file, and to the screen when you
use the -verbose option. See “General-Purpose Functions” on page 4-3 for more
information.
The body of the remote function is typically organized as shown here:
1. Begin with calls to utility functions to determine net parameters for specific layers.
2. Perform mathematical operations on the net parameters.
3. End with a call to the ns_save_net() function to select the current net for output.

The default remote function is ns_save_all_nets().

Chapter 4: Utility Functions


Net Select Utility Functions 4-148
IC Validator Reference Manual Version N-2017.12-SP2

ns_coupled_layer_area()
Returns the coupled layer area of each coupled net. The computed area is the polygon area
that establishes the coupling relationship between two nets. (The coupled layer is specified
by the layer of layer_name that is in the hash specified by the coupled_layers argument
of the net_select() function.) Use this function when you are using the coupled_layers
argument of the net_select() function.
Note:
Do not use this function with an error layer.

Syntax
ns_coupled_layer_area(
index = integer,
layer_name = "string"
);

Returns
double

Arguments
index
Required. Specifies the ith net.

layer_name
Required. Specifies the layer.

Example
The following function returns the total gate area on current net that is coupled to net i and
the gate area on coupled net i that is coupled to current net.
coupled_gate_area = ns_coupled_layer_area(index = i, "gate");

ns_coupled_layer_exist()
Returns the value true if the specified coupled layer exists; otherwise, returns the value
false.

Syntax
ns_coupled_layer_exist(
index = integer,
layer_name = "string"
);

Chapter 4: Utility Functions


Net Select Utility Functions 4-149
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
Boolean

Arguments
index
Required. Specifies the ith net.

layer_name
Required. Specifies the layer.

ns_coupled_net_area()
Returns the area of the specified layers on the coupled net. (The layers are specified by the
group_name argument. This argument is in the hash specified by the layer_groups
argument of the net_select() function.) Use this function when you are using the
coupled_layers argument of the net_select() function.

Syntax
ns_coupled_net_area(
index = integer,
group_name = "string"
);

Returns
double

Arguments
index
Required. Specifies the ith net.

group_name
Required. Specifies the group whose area is requested.

Example
The following function returns the Vx area of the coupled net i.
via_rx_area=ns_coupled_net_area(index=i, "Vx");

Chapter 4: Utility Functions


Net Select Utility Functions 4-150
IC Validator Reference Manual Version N-2017.12-SP2

ns_coupled_net_count()
Returns the number of nets that are coupled to the current net. Use this function when you
are using the coupled_layers argument of the net_select() function.

Syntax
ns_coupled_net_count();

Returns
integer

ns_get_coupled_net_double_property()
Retrieves the value of the specified net property from the connect database. Returns the
value true if the property is found; otherwise, returns the value false.

Syntax
ns_get_coupled_net_double_property(
index = integer,
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
index
Required. Specifies the ith net.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the value of the property for the ith net is stored.
The value is 0 (zero) if the property is not present or the index is out of bounds.

Chapter 4: Utility Functions


Net Select Utility Functions 4-151
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ns_get_net_double_property()
Retrieves the value of the specified net property from the connect database. Returns the
value true if the property is found; otherwise, returns the value false.

Syntax
ns_get_net_double_property(
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the value of the property is stored. The value is 0
(zero) if the property is not present.

ns_get_sum_double_property()
Retrieves the sum of the values of the specified properties for the specified layers in a net.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
ns_get_sum_double_property(
group_name = "string",
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

Chapter 4: Utility Functions


Net Select Utility Functions 4-152
IC Validator Reference Manual Version N-2017.12-SP2

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the sum of the values of the property specified for
the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

ns_net_area()
Returns the area of the specified layers on the current net.

Syntax
ns_net_area(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose count is requested.

ns_net_data_count()
Returns the polygon count of the specified layers on the current net.

Syntax
ns_net_data_count(
group_name = "string"
);

Returns
integer

Arguments
group_name
Required. Specifies the group whose count is requested.

Chapter 4: Utility Functions


Net Select Utility Functions 4-153
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ns_net_id()
Returns the net number of the current net.

Syntax
ns_net_id();

Returns
double

ns_net_perimeter()
Returns the perimeter of the specified layers on the current net.

Syntax
ns_net_perimeter(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose perimeter is requested.

ns_net_texted()
Returns the value true if the net is texted; otherwise, returns the value false.

Syntax
ns_net_texted();

Returns
Boolean

Chapter 4: Utility Functions


Net Select Utility Functions 4-154
IC Validator Reference Manual Version N-2017.12-SP2

ns_save_all_nets()
Saves all nets selected by the net_select() function. The ns_save_all_nets() function
is the default function for the remote function specified by the net_function argument of
the net_select() function.

Syntax
ns_save_all_nets();

Returns
void

ns_save_coupled_layer()
Selects the coupled layer for output. Use this function when you are using the
coupled_layers argument of the net_select() function.

If the output for the net_select() function is to error output, the error_names and
associated values are included in the LAYOUT_ERRORS file. Coordinates reported in
LAYOUT_ERROR are the coordinates from the layer names in the
output_from_coupled_layers argument. The error_net_output argument if the
net_select() function controls the number of coupled layers reported per coupled nets.

For example, if multiple layers exist on a pair of coupled nets, then when
error_net_output is ONE only the coordinates of one coupled layer are reported; when
error_net_output is ALL, the coordinates of all layers on a coupled net pair are reported.

For each value, a string is popped from error_names list to accompany the value in the
LAYOUT_ERROR file. When the error_names are exhausted, the values are included
without a string. When values are exhausted, remaining strings are ignored. Control
characters in the strings are treated as regular text as the format of the output is fixed.

Syntax
ns_save_coupled_layer(
index = integer,
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Chapter 4: Utility Functions


Net Select Utility Functions 4-155
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
index
Required. Specifies the net.

error_names
Optional. Specifies the strings included in the error report.

values
Optional. Specifies the values included in the error report.

ns_save_coupled_layer_property()
Saves the specified layer properties on the coupled polygons.
Note:
When this function is called, the output_from_coupled_layers argument of the
net_select() function must be specified by a non-empty list.

Syntax
ns_save_coupled_layer_property(
index = integer,
property_name = "string",
value = double
);

Returns
void

Arguments
index
Required. Specifies the ith net.

property_name
Required. Specifies the property name.
Note:
The property name cannot be an empty string or begin with an underscore (_).

value
Required. Specifies the property value to be saved.

Chapter 4: Utility Functions


Net Select Utility Functions 4-156
IC Validator Reference Manual Version N-2017.12-SP2

ns_save_net()
Selects the current net for output.
If the output for the net_select() function is to error output, the error names and
associated values are included in the LAYOUT_ERRORS file. For each value, a string is
popped from the error_names list to accompany the value in the LAYOUT_ERROR file.
When the error names are exhausted, the values are included without a string. When the
values are exhausted, the remaining strings are ignored. Control characters in the strings
are treated as regular text because the format of the output is fixed.

Syntax
ns_save_net(
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Arguments
error_names
Optional. Specifies the strings included in the error report.

values
Optional. Specifies the values included in the error report.

Net Select Inside of Layer Utility Functions


These utility functions can be called in the net_select_inside_of_layer() remote
function.
In addition to the following utility functions, you can use the general purpose functions, such
as the note() function, to write a message in the summary file, and to the screen when you
use the -verbose option. See “General-Purpose Functions” on page 4-3 for more
information.
The body of the remote function is typically organized as shown here:
1. Begin with calls to utility functions to determine net parameters for specific layers.
2. Perform mathematical operations on the net parameters.
3. End with a call to the nsil_save_net() function to select the current net for output.

Chapter 4: Utility Functions


Net Select Inside of Layer Utility Functions 4-157
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

nsil_net_area()
Returns the net area of the specified layers that is inside the polygon (by default) or the
cluster of polygons with the same net (when mode is set to SAME_NET in the
net_select_inside_of_layer() function) from inside a layer.

Syntax
nsil_net_area(
group_name = "string"
);

Returns
integer

Arguments
group_name
Required. Specifies the group whose count is requested.

nsil_net_data_count()
Returns the polygon count of the current net inside the specified layer.

Syntax
nsil_net_data_count(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose count is requested.

nsil_save_net()
Selects the current net polygons for output. Only the net polygons that are inside the
polygon (by default) or the cluster of polygons with the same net (when mode is set to
SAME_NET in the net_select_inside_of_layer() function) from inside a layer are saved
to the output polygon layer or written to the LAYOUT_ERRORS file.

Chapter 4: Utility Functions


Net Select Inside of Layer Utility Functions 4-158
IC Validator Reference Manual Version N-2017.12-SP2

If the output for the net_select_inside_of_layer() function is to error output, the error
names and associated values are included in the LAYOUT_ERRORS file. For each value, a
string is popped from the error_names list to accompany the value in the LAYOUT_ERROR
file. When the error names are exhausted, the values are included without a string. When
the values are exhausted, the remaining strings are ignored. Control characters in the
strings are treated as regular text because the format of the output is fixed.

Syntax
nsil_save_net(
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Arguments
error_names
Optional. Specifies the strings included in the error report.

values
Optional. Specifies the values included in the error report.

nsil_save_double_property()
Writes the specified property to the net polygons that are inside the polygon (by default) or
the cluster of polygons with the same net (when mode is set to SAME_NET in the
net_select_inside_of_layer() function) from inside a layer. You can call this function
more than one time to save multiple properties. The property value is overwritten if you save
the same property multiple times.
Note:
Any net polygons that are not enclosed by the inside_of_layer polygon specified in
the net_select_inside_of_layer() function are discarded.

Syntax
nsil_save_double_property(
name = "string",
value = double
);

Returns
void

Chapter 4: Utility Functions


Net Select Inside of Layer Utility Functions 4-159
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
name
Required. Specifies the property name.

value
Required. Specifies the property value.

Net Property Select Utility Functions


These utility functions can be called in the net_property_select() remote function.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

nprops_net_area()
Returns the area of the specified layers on the current net.

Syntax
nprops_net_area(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose area is requested.

nprops_net_data_count()
Returns the polygon count of the specified layers on the current net.

Syntax
nprops_net_data_count(
group_name = "string"
);

Chapter 4: Utility Functions


Net Property Select Utility Functions 4-160
IC Validator Reference Manual Version N-2017.12-SP2

Returns
integer

Arguments
group_name
Required. Specifies the group whose count is requested.

nprops_net_id()
Returns the net number of the current net.

Syntax
nprops_net_id();

Returns
double

nprops_net_perimeter()
Returns the perimeter of the specified layers on the current net.

Syntax
nprops_net_perimeter(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Specifies the group whose perimeter is requested.

nprops_net_texted()
Returns the value true if the current net is texted; otherwise, returns the value false.

Syntax
nprops_net_texted();

Chapter 4: Utility Functions


Net Property Select Utility Functions 4-161
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
Boolean

nprops_read_property()
Returns the value of the specified property of the current net.

Syntax
nprops_read_property(
name = "string"
);

Returns
double

Arguments
name
Required. Specifies the property name.

nprops_save_net()
Selects the current net for output.
If the output for the net_property_select() function is to error output, the error_names
and associated values specified in this function are included in the LAYOUT_ERRORS file.
For each value, a string is popped from the error_names list to accompany the value in the
LAYOUT_ERROR file. When the error_names are exhausted, the values are included
without a string. When values are exhausted, remaining strings are ignored. Control
characters in the strings are treated as regular text as the format of the output is fixed.

Syntax
nprops_save_net(
error_names = {"string", ...}, //optional
values = {double, ...} //optional
);

Returns
void

Chapter 4: Utility Functions


Net Property Select Utility Functions 4-162
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
error_names
Optional. Specifies the strings included in the error report.

values
Optional. Specifies the values included in the error report.

nprops_save_property()
Saves the property name and value on the out_property layer.

Syntax
nprops_save_property(
name = "string",
value = double
);

Returns
void

Arguments
name
Required. Specifies the property name.

value
Required. Specifies the property value to be saved.

Net Polygon by Property Utility Functions


These utility functions can be called in the net_polygon_by_property() remote function.
Use these functions to get access to the properties and values associated with the current
net.
In addition to the following utility functions, you can use the general purpose functions, such
as the note() function to write a message in the summary file, and to the screen when you
use the -verbose option. See “General-Purpose Functions” on page 4-3 for more
information.
The body of the remote function is typically organized as shown here:
1. Begin with calls to utility functions to determine net parameters and properties for
specific layers.

Chapter 4: Utility Functions


Net Polygon by Property Utility Functions 4-163
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

2. Perform mathematical operations on the net parameters.


3. End with a call to the npbp_save_properties() function to write the properties.

npbp_get_double_property()
Retrieves the value of the specified property. The property is retrieved directly from the
polygon layer passed to the output_from_layer argument of the corresponding
net_polygon_by_property() function call.

Returns the Boolean value of true if the property is found on a corresponding polygon from
the output_from_layer polygon layer; otherwise, returns the Boolean value of false.

Syntax
npbp_get_double_property(
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the value of the specified property is stored. The
value is 0 if the property is not present.

npbp_get_max_double_property()
Retrieves the maximum value of the specified property for the specified layers. Returns the
value true if the property is found; otherwise, returns the value false.

Syntax
npbp_get_max_double_property(
group_name = "string",
property_name = "string",
value = out_double
);

Chapter 4: Utility Functions


Net Polygon by Property Utility Functions 4-164
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the maximum value of the specified property for
the layer group on the current net is stored. The value is 0 if the property is not present.

npbp_get_min_double_property()
Retrieves the minimum value of the specified property for the specified layers. Returns the
value true if the property is found; otherwise, returns the value false.

Syntax
npbp_get_min_double_property(
group_name = "string",
property_name = "string",
value = out_double
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the minimum value of the specified property for
the layer group on the current net is stored. The value is 0 if the property is not present.

Chapter 4: Utility Functions


Net Polygon by Property Utility Functions 4-165
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

npbp_net_data_area()
Returns the polygon area of the specified layers.

Syntax
npbp_net_data_area(
group_name = "string"
);

Returns
double

Arguments
group_name
Required. Selects the string from the hash of input layers.

npbp_net_data_count()
Returns the polygon count of the specified layers.

Syntax
npbp_net_data_count(
group_name = "string"
);

Returns
integer

Arguments
group_name
Required. Selects the string from the hash of input layers.

npbp_net_data_exist()
Returns the value true if the specified layers exist on the net; otherwise, returns the value
false.

Syntax
npbp_net_data_exist(
group_name = "string"
);

Chapter 4: Utility Functions


Net Polygon by Property Utility Functions 4-166
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

npbp_save_net()
Writes the net ID as a polygon property. Use this function with the df_polygon_same_net()
function.

Syntax
npbp_save_net();

Returns
void

npbp_save_properties()
Writes the specified properties to the current polygons.

Syntax
npbp_save_properties(
double_properties = {{name = "string", value = double} ...}
);

Returns
void

Arguments
double_properties
Required. Specifies the property names and values.
❍ name. Specifies the property name.

❍ value. Specifies the property value.

Chapter 4: Utility Functions


Net Polygon by Property Utility Functions 4-167
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Property to Net Utility Functions


These utility functions can be called in the property_to_net() remote function.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

ptn_get_double_property()
Retrieves the value of the specified property. The net of the polygon is not considered.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
ptn_get_double_property(
property_name = "string",
value = double
);

Returns
Boolean

Arguments
property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the value of the specified property for the layer
group on the current net is stored. The value is 0 (zero) if the property is not present.

ptn_get_list_of_double_property()
Retrieves a list of double properties from the layers defined in the layer_groups argument
and passes them to the connect database. Returns the value false if the property is not
found or it is not a double list of properties; otherwise, returns the value true.

Syntax
ptn_get_list_of_double_property(
group_name = "string",
property_name = "string",
value = double,
);

Chapter 4: Utility Functions


Property to Net Utility Functions 4-168
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the list of double properties where the value of the specified property
for the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

ptn_get_max_double_property()
Retrieves the maximum value of the specified property for the specified layers. Returns the
value true if the property is found; otherwise, returns the value false.

Syntax
ptn_get_max_double_property(
group_name = "string",
property_name = "string",
value = double,
property_at = TOP_OF_NET | ANY_LEVEL //optional
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

Chapter 4: Utility Functions


Property to Net Utility Functions 4-169
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

value
Required. Specifies the variable where the maximum value of the specified property for
the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

property_at
Optional. Specifies whether the ptn_get_max_double_property() function returns the
maximum property values from net polygons within a cell and its descendant cells or just
from net polygons within the cell. The default is ANY_LEVEL.
❍ TOP_OF_NET. Returns the maximum property values from the net polygons within a
cell; property values from net polygons in descendant cells are not included.
❍ ANY_LEVEL. Returns the maximum property values from the net polygons within a cell
and its descendant cells.
Important:
When using this argument, make sure the cell that contains the polygons with
voltages is not exploded in the hierarchy optimization step.
For example, if the input to the property_to_net() function comes directly from a
user_defined_properties option of the assign() function and cell C is exploded,
as shown in Figure 4-27, then properties 1.0 and 1.5 are merged and one of them will
be missed. You must mark the cell no_explode to ensure the expected results.
In this example, if you specify TOP_OF_NET, the function returns 1.5, but if you specify
ANY_LEVEL, the function returns 2.0 (the maximum of 2.0 and 1.5). However, if cell C
is exploded, the result is 2.0 regardless of whether you specify ANY_LEVEL or
TOP_OF_NET because the polygons with property values 2.0 and 1.5 are at the same
hierarchy level (Cell Top).
Figure 4-27 Maximum Property Value at Cell Level Example

2.0
1.5

Cell C
Cell Top

ptn_get_min_double_property()
Retrieves the minimum value of the specified property for the specified layers. Returns the
value true if the property is found; otherwise, returns the value false.

Chapter 4: Utility Functions


Property to Net Utility Functions 4-170
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
ptn_get_min_double_property(
group_name = "string",
property_name = "string",
value = double,
property_at = TOP_OF_NET | ANY_LEVEL //optional
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the minimum value of the specified property for
the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

property_at
Optional. Specifies whether the ptn_get_min_double_property() function returns the
minimum property values from net polygons within a cell and its descendant cells or just
from net polygons within the cell. The default is ANY_LEVEL.
❍ TOP_OF_NET. Returns the minimum property values from the net polygons within a
cell; property values from net polygons in descendant cells are not included.
❍ ANY_LEVEL. Returns the minimum property values from the net polygons within a cell
and its descendant cells.
Warning:
When using this argument, make sure the cell that contains the polygons with
voltages is not exploded in the hierarchy optimization step.
For example, if the input to the property_to_net() function comes directly from a
user_defined_properties option of the assign() function and cell C is exploded,
as shown in Figure 4-28, then properties 1.0 and 1.5 are merged and one of them will
be missed. You must mark the cell no_explode to ensure the expected results.
In this example, if you specify TOP_OF_NET, the function returns 1.5, but if you specify
ANY_LEVEL, the function returns 1.0 (the minimum of 1.0 and 1.5). However, if cell C
is exploded, the result is 1.0 regardless of whether you specify ANY_LEVEL or

Chapter 4: Utility Functions


Property to Net Utility Functions 4-171
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

TOP_OF_NET because the polygons with property values 1.0 and 1.5 are at the same
hierarchy level (Cell Top).
Figure 4-28 Minimum Property Value at Cell Level Example

1.0
1.5

Cell C
Cell Top

ptn_get_string_property()
Writes the specified property to the current net.

Syntax
ptn_save_list_of_double_property(
group_name = "string",
property_name = "string",
value = double
);

Returns
Boolean

Arguments
group_name
Required. Selects the string from the hash of input layers.

property_name
Required. Selects the string for the property name.

value
Required. Specifies the variable where the maximum value of the specified property for
the layer group on the current net is stored. The value is 0 (zero) if the property is not
present.

Chapter 4: Utility Functions


Property to Net Utility Functions 4-172
IC Validator Reference Manual Version N-2017.12-SP2

ptn_net_data_exist()
Returns the value true if the specified layers exist on the net; otherwise, returns the value
false.

Syntax
ptn_net_data_exist(
group_name = "string",
);

Returns
Boolean

Arguments
group_name
Required. Specifies the property name.

ptn_save_double_property()
Writes the specified property to the current net.

Syntax
ptn_save_double_property(
name = "string",
value = double
);

Returns
void

Arguments
name
Required. Specifies the property name.

value
Required. Specifies the property value.

ptn_save_list_of_double_property()
Writes the specified list of double properties to the current net.

Chapter 4: Utility Functions


Property to Net Utility Functions 4-173
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
ptn_save_list_of_double_property(
property_name = "string",
value = double
);

Returns
void

Arguments
property_name
Required. Specifies the list of double property name.

value
Required. Specifies the list of double property value.

ptn_save_string_property()
Writes the specified property to the current net.

Syntax
ptn_save_string_property(
name = "string",
);

Returns
void

Arguments
name
Required. Specifies the property name.

Polygon Features Utility Functions


These utility functions can be called in the remote function of the polygon_function
argument of the polygon_features() function. This function works on each polygon
specified in the layer1 argument of the polygon_features function.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-174
IC Validator Reference Manual Version N-2017.12-SP2

The body of the remote function is typically organized as shown here:


1. Begin with a call to the pf_get_current_polygon() function.
2. Create new polygons from the input polygon.
3. End with a call to the pf_save_polygon() function to write new polygons to the output
layer.

pf_fnote()
Writes data to the specified file.

Syntax
pf_fnote(
file_index = integer, //optional
data = "string" //optional
);

Returns
void

Arguments
file_index
Optional. Selects the ASCII file specified in the files argument of the
polygon_features() function. The first file in the list has an index of 0. The default is 0;
that is, the first file in the list.

data
Optional. Specifies the string to be written.

Example
The following example uses the pf_fnote() function inside of a polygon_features()
remote function that is named myfun:
myfun : function() returning void {
pf_fnote(data = "---------------File 1 Polygon---------------\n");
pf_fnote(0, "AREA=" + pf_polygon_area() + "\n");
pf_fnote(1, "EXTENT=" + pf_polygon_extent() + "\n");
}

f1 = fopen("f1.txt",OVERWRITE);
f2 = fopen("f2.txt",APPEND);

polygon_features(l1, myfun, files={f1,f2});

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-175
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

polygon_features(l2, myfun, files={f1,f2});

The f1.txt file might look like this example:


----------------File 1 Polygon-----------------
AREA=1.0
----------------File 1 Polygon-----------------
AREA=2.0
----------------File 1 Polygon-----------------
AREA=3.0

The f2.txt file might look like this example:


EXTENT={1,2,3,4}
EXTENT={5,6,7,8}
EXTENT={0,1,2,3}

See Also
fopen()
polygon_features()

pf_get_current_polygon()
Returns the current polygon.

Syntax
pf_get_current_polygon();

Returns
polygon

pf_new_polygon()
Creates a new empty polygon. Call the pf_set_polygon_coordinate() function to define
the new polygon.

Syntax
pf_new_polygon();

Returns
polygon

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-176
IC Validator Reference Manual Version N-2017.12-SP2

pf_polygon_area()
Returns the area of its polygon argument.

Syntax
pf_polygon_area(
polygon = polygon
)

Returns
double

pf_polygon_center_diamond()
Returns a diamond at the center of the extents of the input polygon.

Syntax
pf_polygon_center_diamond(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required. Specifies the polygon.

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The internal_resolution argument of the
resolution_options() function sets the internal resolution. The default is
DRC_ERROR_BOX, which has a default of 0.1.

pf_polygon_center_square()
Returns a square at the center of the extents of the input polygon.

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-177
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
pf_polygon_center_square(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required. Specifies the polygon.

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The default is DRC_ERROR_BOX, which has a default of 0.1.

pf_polygon_center_triangle()
Returns a triangle at the center of the extents of the input polygon.

Syntax
pf_polygon_center_triangle(
polygon = polygon,
shape_size = double //optional
);

Returns
polygon

Arguments
polygon
Required. Specifies the polygon.

shape_size
Optional. Specifies the size of the extents of the shape. This value must be positive. It is
rounded to the nearest even multiple of the internal resolution, with a minimum of twice
the internal resolution. The default is DRC_ERROR_BOX, which has a default of 0.1.

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-178
IC Validator Reference Manual Version N-2017.12-SP2

pf_polygon_coordinate_x()
Returns the x-value of the ith coordinate of the input polygon.

Syntax
pf_polygon_coordinate_x(
polygon = polygon,
index = integer
);

Returns
double

pf_polygon_coordinate_y()
Returns the y-value of the ith coordinate of the input polygon.

Syntax
pf_polygon_coordinate_y(
polygon = polygon,
index = integer
);

Returns
double

pf_polygon_diagonal_extent()
Returns the smallest 45-degree rectangle that contains the polygon.

Syntax
pf_polygon_diagonal_extent(
polygon = polygon
);

Returns
polygon

pf_polygon_extent()
Returns the bounding box of the polygon.

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-179
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
pf_polygon_extent(
polygon = polygon
);

Returns
polygon

pf_polygon_max_rectangle()
Returns the largest rectangle (by area) that fits within its polygon argument.

Syntax
pf_polygon_max_rectangle(
polygon = polygon
);

Returns
polygon

pf_polygon_max_square()
Returns the largest square that fits within its polygon argument.

Syntax
pf_polygon_max_square(
polygon = polygon
);

Returns
polygon

pf_polygon_num_coordinates()
Returns the number of coordinates in a polygon.

Syntax
pf_polygon_num_coordinates(
polygon = polygon
);

Chapter 4: Utility Functions


Polygon Features Utility Functions 4-180
IC Validator Reference Manual Version N-2017.12-SP2

Returns
integer

pf_save_polygon()
Writes a polygon to the output layer. If the coordinate list does not form a closed polygon,
the IC Validator tool closes the polygon. Zero area polygons are not written to the output
layer. A warning is given for self-intersecting polygons, and the intersection area is left
empty.

Syntax
pf_save_polygon(
polygon = polygon
);

Returns
void

pf_set_polygon_coordinate()
Adds a coordinate to a polygon. The polygon must have been returned from a call to the
pf_new_polygon() function. The list of coordinates defines the boundary of the polygon.
The points must be in order around the outside of the polygon, in either clockwise or counter
clockwise direction. A hole is created in a polygon by defining a boundary that abuts itself.

Syntax
pf_set_polygon_coordinate(
polygon = polygon,
x = double,
y = double,
index = integer
);

Returns
void

Compare Utility Functions


The compare utility functions are listed by functionality. The special-purpose compare utility
functions can be called only in specific remote functions.

Chapter 4: Utility Functions


Compare Utility Functions 4-181
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.

Writing Compare Remote Functions


For compare, the types of remote functions you can write are
• Filter Remote Functions During Filtering
• Exclude Remote Functions During Merging
• Property Remote Functions During Merging
• Property Remote Functions During Check Property

Filter Remote Functions During Filtering


In the filter remote function, you can define filter conditions not already found in the
predefined filter options. During filtering of both the schematic and layout netlists, the
IC Validator tool applies this remote function for each device found in the netlist.
The body of the remote function is organized as shown here:
• Calls to compare utility functions to query parameters of the device.
• Code to determine if the device should be filtered.
• Call to the lvs_remove_device() function.
For example,
filter(compare_settings, PMOS,{"pm1"},
filter_function = "filter_z1_pmos");

filter_z1_pmos: entrypoint function(void) returning void {


device = lvs_current_device();
net = lvs_get_device_nets_by_pin_name(device,"GATE");
net_name = lvs_net_name(net);
if (net_name == "Z1") { lvs_remove_device(); }
}

Exclude Remote Functions During Merging


In the exclude remote function, you determine which devices should not be merged. During
the merging process, the IC Validator tool applies this remote function for each set of
devices that are candidates for merging.

Chapter 4: Utility Functions


Compare Utility Functions 4-182
IC Validator Reference Manual Version N-2017.12-SP2

The body of the remote function is organized as shown here:


• Determine the number of candidates to be merged using the lvs_count_candidates()
function.
• Find each candidate using the lvs_get_candidate() function.
• Code that determines if a candidate should be excluded.
• Exclude the candidate using the lvs_exclude_from_merge() function.

Property Remote Functions During Merging


In the property remote function, you define merge property calculations. During the merging
process, the IC Validator tool applies this remote function to each set of devices that get
merged.
The body of the remote function is organized as shown here:
• Determine the count of member devices of a merge using the lvs_count_members()
function.
• Find members that were merged together using the lvs_get_member() function.
• Retrieve member properties using the lvs_get_double_property() and
lvs_get_string_property() functions, as needed.

• Calculate the merge value.


• Save the merged value using the lvs_save_double_property() and
lvs_save_string_property() functions, as needed.

Property Remote Functions During Check Property


In the property remote function, you define a check function for comparing properties
instead of using the default compare_properties function. During check properties, the
IC Validator tool iterates over each set of matched schematic/layout devices and applies the
check function for the specified property.
The body of the remote function is organized as shown here:
• Find the schematic device using the lvs_schematic_device() function.
• Find the layout device using the lvs_layout_device() function.
• Retrieve properties for both the schematic and layout devices using the
lvs_get_double_property() and lvs_get_string_property() functions, as
needed.
• Determine if the properties match.

Chapter 4: Utility Functions


Compare Utility Functions 4-183
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• In the case where there is a property error, call the lvs_property_error() function.

Special-Purpose Compare Utility Functions

lvs_count_candidates()
Returns the count of candidate devices considered for merging.
Important:
This function can be called only in the remote function specified in the
exclude_function argument of the merge_parallel() and merge_series()
functions.

Syntax
lvs_count_candidates();

Returns
integer

lvs_current_device()
Returns the ID of the device currently being processed.
Important:
This function can be called only in the remote filter_function argument of the
filter() function, in the remote property_functions argument of the
merge_parallel() and merge_series() functions, and in the remote
property_function argument of the recalculate_property() function.

Syntax
lvs_current_device();

Returns
device

lvs_exclude_from_merge()
Specifies the device candidates that are excluded from merging.
Important:
This function can be called only in the remote exclude_function argument of the
merge_parallel() and merge_series() functions.

Chapter 4: Utility Functions


Compare Utility Functions 4-184
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
lvs_exclude_from_merge(
device = device
);

Returns
void

lvs_get_candidate()
Returns the candidate device specified by the index. Use the lvs_count_candidates()
function to find out the maximum index.
Important:
This function can be called only in the remote exclude_function argument of the
merge_parallel() and merge_series() functions.

Syntax
lvs_get_candidate(
index = integer
);

Returns
device

lvs_layout_device()
Returns the device ID of a layout device.
Important:
This function can be called only in the remote property_function argument of the
check_property() function.

Syntax
lvs_layout_device();

Returns
device

lvs_property_error()
Reports an error message during property comparison. You can use this function to pass the
property error information to the compare flow.

Chapter 4: Utility Functions


Compare Utility Functions 4-185
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Important:
This function can be called only in the remote property_function argument of the
check_property() function.

Syntax
lvs_property_error(
message = "string"
);

Returns
void

Arguments
message
Required. Specifies the message to write to the output file.

lvs_remove_device()
Removes a device from the netlist.
Important:
This function can be called only within the filter() function.

Syntax
lvs_remove_device();

Returns
void

lvs_save_double_property()
Saves the property value in the property_functions argument of the merge_parallel()
and merge_series() functions.
Important:
This function can be called only in the remote property_functions argument of the
merge_parallel()and merge_series() functions or the remote property_function
argument of the recalculate_property() function.

Syntax
lvs_save_double_property(
property_name = "string",
value = double
);

Chapter 4: Utility Functions


Compare Utility Functions 4-186
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

lvs_save_string_property()
Saves the string property value in the property_functions argument of the
merge_parallel() and merge_series() functions.
Important:
This function can be called only in the remote property_functions argument of the
merge_parallel()and merge_series() functions or the remote property_function
argument of the recalculate_property() function.

Syntax
lvs_save_string_property(
property_name = "string",
value = "string"
);

Returns
void

lvs_schematic_device()
Returns the device ID of a schematic device.
Important:
This function can be called only in the remote property_function argument of the
check_property() function.

Syntax
lvs_schematic_device();

Returns
device

General-Purpose Compare Utility Functions

lvs_all_equal()
Returns the value true if all properties of all members of the device are equal; otherwise,
returns the value false.

Chapter 4: Utility Functions


Compare Utility Functions 4-187
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
lvs_all_equal(
device = device
);

Returns
Boolean

lvs_are_nets_identical()
Returns the value true if the nets are connected together (shorted); otherwise, returns the
value false.

Syntax
lvs_are_nets_identical(
net1 = net,
net2 = net
);

Returns
Boolean

lvs_avg()
Calculates the average of all member properties for the specified property of the device
instance. Returns the value true if property was successfully returned; otherwise, returns the
value false and an avg value of NaN.

Syntax
lvs_avg(
device = device,
property_name = "string",
avg = out_double
);

Returns
Boolean

lvs_count_device_pins()
Returns the number of pins on a device.

Syntax
lvs_count_device_pins(

Chapter 4: Utility Functions


Compare Utility Functions 4-188
IC Validator Reference Manual Version N-2017.12-SP2

device = device
);

Returns
integer

lvs_count_devices_on_net()
Returns the number of devices connected to a net.

Syntax
lvs_count_devices_on_net(
net = net
);

Returns
integer

lvs_count_members()
Returns the count of the member devices belonging for the device instance.

Syntax
lvs_count_members(
device = device
);

Returns
integer

lvs_count_pins_on_net()
Returns the number of pins connected to a net.

Syntax
lvs_count_pins_on_net(
net = net
);

Returns
integer

Chapter 4: Utility Functions


Compare Utility Functions 4-189
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_device_name()
Returns the device name as a string.

Syntax
lvs_device_name(
device = device
);

Returns
string

Example
layoutID : device = lvs_layout_device();
devModelName : string = lvs_device_name(layoutID);

lvs_device_type()
Returns the device type as an enumerated type. The possible device types are: NMOS,
PMOS, NPN, PNP, PN, NP, RESISTOR, CAPACITOR, INDUCTOR, and GENERIC.

Syntax
lvs_device_name(
device = device
);

Returns
lvs_device_type_result

Example
layoutID : device = lvs_layout_device();
devType : device_type_e = lvs_device_type(layoutID);

flag : boolean;
wprop : double;
if (devType == NMOS) {
flag = lvs_get_double_property(layoutID, "w", wprop);
}

lvs_get_compare_tolerance()
Retrieves property comparison tolerance and tolerance type values for the given device
identifier and property name. Values are retrieved from the property_tolerances
argument of the check_property() function call corresponding to the
lvs_get_compare_tolerance() function device argument.

Chapter 4: Utility Functions


Compare Utility Functions 4-190
IC Validator Reference Manual Version N-2017.12-SP2

Returns the value true if the property_name argument value is specified in the
property_tolerances argument of the matching check_property() function call;
otherwise, returns the value false.

Syntax
lvs_get_compare_tolerance(
device = device,
property_name = "string",
tolerance = out_constraint_of_double,
tolerance_type = out_tolerance_type
);

Returns
Boolean

Arguments
device
Required. Specifies the device.

property_name
Required. Specifies a property in the property_tolerances argument of the
check_property() function.

tolerance
Specifies the variable where the value of the tolerance specified in the
property_tolerances argument of the check_property() function is stored.

tolerance_type
Specifies the variable where the value of the tolerance type, either relative or absolute,
specified in the property_tolerances argument of the check_property() function is
stored.

Example
schematicID : device = lvs_schematic_device();

wpropTol: constraint of double;


wpropTolType: tolerance_type_e; // ABSOLUTE or RELATIVE
flag : boolean = lvs_get_compare_tolerance(schematicID, "w",
wpropTol, wpropTolType);

if (!flag) {
lvs_property_error("check_property() call does not define property
checking for property w");
}

Chapter 4: Utility Functions


Compare Utility Functions 4-191
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_get_device_nets_by_index()
Returns a net ID from the list of nets connected to the device as specified by the index. Use
the lvs_count_device_pins() function to determine the number of pins on a device.

Syntax
lvs_get_device_nets_by_index(
device = device,
index = integer
);

Returns
net

Arguments
device
Required. Specifies the device ID.

index
Required.

Example
// filter any device having two or more pins connected
devID : device = lvs_current_device();
for (i=0 to lvs_count_device_pins(devID)-2) {
for (j=i+1 to lvs_count_device_pins(devID)-1){

netID : net = lvs_get_device_nets_by_index(devID,i);


netIDNext : net = lvs_get_device_nets_by_index(devID,j);

if (lvs_are_nets_identical(netID, netIDNext)) {
lvs_remove_device();
}
}
}

lvs_get_device_nets_by_pin_name()
Returns a net ID from the list of nets connected to the device as specified by the pin_name.

Syntax
lvs_get_device_nets_by_pin_name(
device = device,
pin_name = "string"
);

Chapter 4: Utility Functions


Compare Utility Functions 4-192
IC Validator Reference Manual Version N-2017.12-SP2

Returns
net

Arguments
device
Required. Specifies the device ID.

pin_name
Required.

lvs_get_device_on_net()
Returns a device instance on the specified net corresponding to the specified index. The
index selects a specific pin connection to the net, and it is bounded by the value returned by
the lvs_count_pins_on_net() function. For a given index, the instance returned by the
lvs_get_device_on_net() function corresponds to the pin name returned by the
lvs_get_pin_name_on_net() function.

Syntax
lvs_get_device_on_net(
net = net,
index = integer
);

Returns
device

Arguments
net
Required. Specifies the net ID.

index
Required. Specifies an integer value in the range of
0 <= index <= lvs_count_pins_on_net() - 1

Example
// Each instance named 'instname' connects to net 'nt'
// by way of a pin named 'pinname'.

for (i=0 to lvs_count_pins_on_net(nt)-1) {


dev = lvs_get_device_on_net(nt,i);
instname = lvs_instance_name(dev);

Chapter 4: Utility Functions


Compare Utility Functions 4-193
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

pinname = lvs_get_pin_name_on_net(nt, i);


...
}

lvs_get_double_property()
Retrieves the property value. Returns the value true if property was successfully returned;
otherwise, returns the value false and a value of NaN if the property does not exist or if the
value is a string.

Syntax
lvs_get_double_property(
device = device,
property_name = "string",
value = out_double
);

Returns
Boolean

lvs_get_exclude_tolerance()
Retrieves property tolerance and tolerance type values for the given property name. Returns
the value true if the property is declared in the remote exclude_function argument of the
merge_parallel() or merge_series() function; otherwise, returns the value false.

Syntax
lvs_get_exclude_tolerance(
property_name = "string",
tolerance = out_constraint_of_double,
tolerance_type = out_tolerance_type
);

Returns
Boolean

Arguments
property_name
Required. Specifies a property in the exclude_tolerances argument of the
merge_parallel() or merge_series() function.

Chapter 4: Utility Functions


Compare Utility Functions 4-194
IC Validator Reference Manual Version N-2017.12-SP2

tolerance
Specifies the variable where the value of the tolerance specified in the
exclude_tolerances argument of the merge_parallel() or merge_series() function
is stored.

tolerance_type
Specifies the variable where the value of the tolerance type, either relative or absolute,
specified in the exclude_tolerances argument of the merge_parallel() or
merge_series() function is stored.

lvs_get_member()
Returns the device ID of a member as specified by the index. Use the
lvs_count_members() function to determine the maximum index.

Syntax
lvs_get_member(
device = device,
index = integer
);

Returns
device

lvs_get_pin_name_on_net()
Returns a pin name on the specified net corresponding to the specified index. The index
selects a specific pin connection to the net; it is bounded by the value returned by the
lvs_count_pins_on_net() function. For a given index, the pin name returned by the
lvs_get_pin_name_on_net() function corresponds to the instance returned by the
lvs_get_device_on_net() function.

Syntax
lvs_get_pin_name_on_net(
net = net,
index = integer
);

Returns
string

Chapter 4: Utility Functions


Compare Utility Functions 4-195
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
net
Required. Specifies the net ID.

index
Required. Specifies an integer value in the range of
0 <= index <= lvs_count_pins_on_net() - 1

Example
See the Example section of the lvs_get_device_on_net() function.

lvs_get_parent_instance_id()
Returns a unique ID of each parent instance that contains the device. Devices in the same
parent instance have the same parent instance ID. The parent instance ID properties are
calculated based on the extracted netlist hierarchy before any flattening of the equivalence
point netlist.
For example, to make the parent instance ID a property that is available for use in device
merging applications during LVS compare, call the lvs_get_parent_instance_id()
function in the remote function of the recalculate_property() function.

Syntax
lvs_get_parent_instance_id(
device = device
);

Returns
integer

Arguments
device
Required. Specifies the device ID.

lvs_get_string_property()
Retrieves the property. Returns the value true if the property was successfully returned;
otherwise, returns the value false and a value of empty string if the property does not exist
or if the value is a double.

Syntax
lvs_get_string_property(

Chapter 4: Utility Functions


Compare Utility Functions 4-196
IC Validator Reference Manual Version N-2017.12-SP2

device = device,
property_name = "string",
value = out_string
);

Returns
Boolean

lvs_instance_name()
Returns the device name as a string. For example, “M1”.

Syntax
lvs_instance_name(
device = device
);

Returns
string

lvs_is_capacitor()
Returns the value true if the instance is a capacitor; otherwise, returns the value false.

Syntax
lvs_is_capacitor(
device = device
);

Returns
Boolean

lvs_is_composite()
Returns the value true if the instance is a composite device; otherwise, returns the value
false if the device is a primitive.

Syntax
lvs_is_composite(
device = device
);

Chapter 4: Utility Functions


Compare Utility Functions 4-197
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
Boolean

lvs_is_generic()
Returns the value true if the instance is a generic device; otherwise, returns the value false.

Syntax
lvs_is_generic(
device = device
);

Returns
Boolean

lvs_is_inductor()
Returns the value true if the instance is an inductor; otherwise, returns the value false.

Syntax
lvs_is_inductor(
device = device
);

Returns
Boolean

lvs_is_layout_device()
Returns the value true if the specified device is a layout device; otherwise, returns the value
false.

Syntax
lvs_is_layout_device(
device = device
);

Returns
Boolean

Chapter 4: Utility Functions


Compare Utility Functions 4-198
IC Validator Reference Manual Version N-2017.12-SP2

lvs_is_member()
Returns the value true if the instance is a member of a merged composite device; otherwise,
returns the value false.

Syntax
lvs_is_member(
device = device
);

Returns
Boolean

lvs_is_net_floating()
Returns the value true if the net is floating; otherwise, returns the value false.

Syntax
lvs_is_net_floating(
net = net
);

Returns
Boolean

lvs_is_net_ground()
Returns the value true if the specified net is connected to ground; otherwise, returns the
value false.

Syntax
lvs_is_net_ground(
net = net
);

Returns
Boolean

lvs_is_net_port()
Returns the value true if the specified net is connected to a port net; otherwise, returns the
value false.

Chapter 4: Utility Functions


Compare Utility Functions 4-199
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
lvs_is_net_port(
net = net
);

Returns
Boolean

lvs_is_net_power()
Returns the value true if the specified net is connected to power; otherwise, returns the
value false.

Syntax
lvs_is_net_power(
net = net
);

Returns
Boolean

lvs_is_nmos()
Returns the value true if the instance is an NMOS device; otherwise, returns the value false.

Syntax
lvs_is_nmos(
device = device
);

Returns
Boolean

lvs_is_np()
Returns the value true if the instance is an NP device; otherwise, returns the value false.

Syntax
lvs_is_np(
device = device
);

Chapter 4: Utility Functions


Compare Utility Functions 4-200
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

lvs_is_npn()
Returns the value true if the instance is an NPN device; otherwise, returns the value false.

Syntax
lvs_is_npn(
device = device
);

Returns
Boolean

lvs_is_parallel()
Returns the value true if the instance is a parallel merged device; otherwise, returns the
value false.

Syntax
lvs_is_parallel(
device = device
);

Returns
Boolean

lvs_is_parallel_chain()
Returns the value true if the instance is a parallel-chain merged device; otherwise, returns
the value false.

Syntax
lvs_is_parallel_chain(
device = device
);

Returns
Boolean

Chapter 4: Utility Functions


Compare Utility Functions 4-201
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_is_pmos()
Returns the value true if the instance is a PMOS device; otherwise, returns the value false.

Syntax
lvs_is_pmos(
device = device
);

Returns
Boolean

lvs_is_pn()
Returns the value true if the instance is a PN device; otherwise, returns the value false.

Syntax
lvs_is_pn(
device = device
);

Returns
Boolean

lvs_is_pnp()
Returns the value true if the instance is a PNP device; otherwise, returns the value false.

Syntax
lvs_is_pnp(
device = device
);

Returns
Boolean

lvs_is_resistor()
Returns the value true if the instance is a resistor; otherwise, returns the value false.

Syntax
lvs_is_resistor(
device = device
);

Chapter 4: Utility Functions


Compare Utility Functions 4-202
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

lvs_is_schematic_device()
Returns the value true if the specified device is a schematic device; otherwise, returns the
value false.

Syntax
lvs_is_schematic_device(
device = device
);

Returns
Boolean

lvs_is_series()
Returns the value true if the instance is a series merged device; otherwise, returns the value
false.

Syntax
lvs_is_series(
device = device
);

Returns
Boolean

lvs_is_top_block()
Returns the value true if the top cell is currently being processed; otherwise, returns the
value false.

Syntax
lvs_is_top_block();

Returns
Boolean

Chapter 4: Utility Functions


Compare Utility Functions 4-203
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_max()
Retrieves the maximum value of all member properties for the specified property of the
device instance. Returns the value true if property was successfully returned; otherwise,
returns the value false and a max value of NaN if the property does not exist.

Syntax
lvs_max(
device = device,
property_name = "string",
max = out_double
);

Returns
Boolean

lvs_min()
Retrieves the minimum value of all member properties for the specified property of the
device instance. Returns the value true if property was successfully returned; otherwise,
returns the value false and a min value of NaN if the property does not exist.

Syntax
lvs_min(
device = device,
property_name = "string",
min = out_double
);

Returns
Boolean

lvs_net_name()
Returns the name of the net.

Syntax
lvs_net_name(
net = net
);

Returns
string

Chapter 4: Utility Functions


Compare Utility Functions 4-204
IC Validator Reference Manual Version N-2017.12-SP2

lvs_product()
Calculates the product of all member properties for the specified property of the device
instance. Returns the value true if the device is a composite device and the calculation was
successful; otherwise, returns the value false and a sum value of NaN.

Syntax
lvs_product(
device = device,
property_name = "string",
product = out_double
);

Returns
Boolean

lvs_same_device()
Returns the value true if the two devices represent the same device; otherwise, returns the
value false.

Syntax
lvs_same_device(
device1 = device,
device2 = device
);

Returns
Boolean

lvs_schematic_layout_net_match()
Checks for matched device pin connections inside a check_property() check_function.
Both the schematic_net and layout_net arguments are net objects returned by net
retrieval functions such as lvs_get_device_nets_by_index() and
lvs_get_device_nets_by_pin_name().

Returns the value true if the schematic net was matched to a layout net; otherwise, returns
the value false.

Syntax
lvs_schematic_layout_net_match(
schematic_net = net,
layout_net = net
);

Chapter 4: Utility Functions


Compare Utility Functions 4-205
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
Boolean

Example
This example detects whether devices were matched with swapped pins to compare
property values that are a function of pin swapping.
schematicID = lvs_schematic_device();
layoutID = lvs_layout_device();

schsrc = lvs_get_device_nets_by_pin_name(schematicID, "SRC");


schdrn = lvs_get_device_nets_by_pin_name(schematicID, "DRN");

laysrc = lvs_get_device_nets_by_pin_name(layoutID, "SRC");


laydrn = lvs_get_device_nets_by_pin_name(layoutID, "DRN");

if(lvs_schematic_layout_net_match(schsrc, laysrc) &&


lvs_schematic_layout_net_match(schdrn, laydrn)) {
swapflag = false;
}

elif(lvs_schematic_layout_net_match(schsrc, laydrn) &&


lvs_schematic_layout_net_match(schdrn, laysrc)) {
swapflag = true;
}

lvs_split_series_chain()
Breaks the series chain at the junction between member1 and member2. The broken chains
can be merged separately in series.

Syntax
lvs_split_series_chain(
member1 = device,
member2 = device
);

Returns
void

lvs_sum()
Calculates the sum of all member properties for the specified property of the device
instance.
Returns the value true if the property was found; otherwise, returns the value false and a sum
value of NaN if the property does not exist.

Chapter 4: Utility Functions


Compare Utility Functions 4-206
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
lvs_sum(
device = device,
property_name = "string",
sum = out_double
);

Returns
Boolean

lvs_sum_of_divisions()
Calculates the sum of the list of (property_name1 / property_name2). Returns the value
true if the calculation was successful; otherwise, returns the value false and a sum value of
NaN if the property of a member does not exist.

Syntax
lvs_sum_of_divisions(
device = device,
property_name1 = "string",
property_name2 = "string",
sum_of_divisions_result = out_double
);

Returns
Boolean

lvs_sum_of_products()
Calculates the sum of the list of (property_name1 X property_name2). Returns the value
true if the calculation was successful; otherwise, returns the value false and a sum value of
NaN if the property of a member does not exist.

Syntax
lvs_sum_of_products(
device = device,
property_name1 = "string",
property_name2 = "string",
sum_of_products_result = out_double
);

Returns
Boolean

Chapter 4: Utility Functions


Compare Utility Functions 4-207
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

lvs_sum_of_reciprocals()
Calculates the sum of the list of (1 / property_name). Returns the value true if the device
is a composite device and the calculation was successful; otherwise, returns the value false
and a sum value of NaN.

Syntax
lvs_sum_of_reciprocals(
device = device,
property_name = "string",
sum_of_products_reciprocals = out_double
);

Returns
Boolean

Edge Features Edge Utility Functions


These utility functions can be called in the edge_features_edge() remote function. This
function works on each edge in the layer1 argument of the edge_features_edge()
function.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.
The body of the remote function is typically organized as shown here:
1. Begin with a call to the efe_get_current_edge() function.
2. Create new edge from the input edge.
3. End with a call to the efe_save_edge() function to write new edges to the output layer.

efe_get_current_edge()
Returns the current edge.

Syntax
efe_get_current_edge();

Returns
edge

Chapter 4: Utility Functions


Edge Features Edge Utility Functions 4-208
IC Validator Reference Manual Version N-2017.12-SP2

efe_new_edge()
Allocates a new edge for storing output.

Syntax
efe_new_edge();

Returns
edge

efe_edge_coordinate_x()
Returns the x-value of the ith coordinate of an edge.

Syntax
efe_edge_coordinate_x(
edge = edge,
index = integer
);

Returns
double

Arguments
edge
Required. Specifies the input edge.

index
Required. Specifies the coordinate index (i).

efe_edge_coordinate_y()
Returns the y-value of the jth coordinate of an edge.

Syntax
efe_edge_coordinate_y(
edge = edge,
index = integer
);

Chapter 4: Utility Functions


Edge Features Edge Utility Functions 4-209
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Arguments
edge
Required. Specifies the input edge.

index
Required. Specifies the coordinate index (j).

efe_save_edge()
Writes an edge to the output layer. Edges with no length are quietly dropped.

Syntax
efe_save_edge(
edge = edge,
);

Returns
void

Arguments
edge
Required. Specifies the edge that is written.

efe_set_edge_coordinate()
Adds a coordinate to an edge. The coordinates are written in the order specified.

Syntax
efe_set_edge_coordinate(
edge = edge,
x = double,
y = double,
index = integer
);

Returns
void

Chapter 4: Utility Functions


Edge Features Edge Utility Functions 4-210
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
edge
Required. Specifies the input edge.
x
Required. Specifies the x-value of the new coordinate.
y
Required. Specifies the y-value of the new coordinate.

index
Required. Specifies the index of the new coordinate. A negative value causes an error.

DRC Features Utility Functions


The functions described in this section can be called in the remote function called from the
DRC features functions (drc_features(), drc_features_edge(),
drc_features_error() and drc_features_marker()) to gain access to the characteristic
values of the data associated with the current primary geometry. There are six input data
types specific to these functions:
• df_data. Polygon, edge, error, or marker from the primary layer.

• df_error_set. Group of one or more errors from an error layer.

• df_edge_set. Group of one or more edges from an edge layer.

• df_marker_set. Group of one or more markers from a marker layer.

• df_polygon_set. Group of one or more polygons from a polygon layer.

• df_matrix. Token for a two-dimensional array that consists of widths and projection
distances from error layers to an edge in the edge layer.
In addition to the following utility functions, you can use the general purpose functions, such
as note() function to write a message in the summary file, and to the screen when you use
the -verbose option. See “General-Purpose Functions” on page 4-3 for more information.
The body of the remote function is typically organized as shown here:
1. Begin with a call to the df_get_current_data() function. Use the various
df_polygon_*(), df_edge_*(), and df_marker_*() functions and the
df_error_layer() function to get the cluster data sets.

2. Perform calculations on data set attributes.


3. End with a call to the df_save_data() function to write selected data to the output layer.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-211
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The following example shows how to use the df_get_polygon_sum_double_property()


utility function. In this example, layers have already been assigned to obtain layer1 and
layer2 data, and the polygon_area property is also assigned.
1. Declare a function; get_sum_double() is defined in this example.
2. Use the df_get_current_data() function to get a polygon of the primary_layer in the
drc_features() function (a polygon in layer1).

3. Use the df_polygon_layer() function with specific layer (layer2) to get a


secondary_layers polygon set that correlates with the polygon of the primary_layer.

4. Use the df_get_polygon_sum_double_property() function to get the sum of values of


the secondary_layer polygons that interact with a polygon of the primary_layer.
5. Save the polygon of the primary_layer that satisfies the specific condition using the
df_save_data() function.

6. Call the remote drc_features() function.

The runset is:


get_sum_double: function (void) returning void
cd = df_get_current_data();
ps = df_polygon_layer(cd, "l2");
sum_parea : double = 0.0;
ret : boolean = df_get_polygon_sum_double_property(ps, "polygon_area",
sum_parea);
if (sum_parea > 0)
df_save_data(cd);
}
t0 = drc_features(primary_layer = layer1, secondary_layer={"l2"=>layer2},
drc_function = get_sum_double, output_from_layer = layer1);

Use the df_get_edge_sum_double_property() and df_error_sum_double_property()


functions in a similar manner.

df_common_double_property_index()
Retrieves the first common key for two lists of double properties and returns the index from
the first property list.

Syntax
df_common_double_property_index(
polygon_set1 = df_polygon_set,
index1 = integer,
name1 = "string",
polygon_set2 = df_polygon_set,
index2 = integer,

Chapter 4: Utility Functions


DRC Features Utility Functions 4-212
IC Validator Reference Manual Version N-2017.12-SP2

name2 = "string"
);

Returns
Boolean

Arguments
polygon_set1
Required. Specifies the first polygon set.

index1
Required. Specifies the index (i) of the first target polygon in the polygon set. A negative
value causes an error.

name1
Required. Specifies the name of the first double property.

polygon_set2
Required. Specifies the second polygon set.

index2
Required. Specifies the index (i) of the second target polygon in the polygon set. A
negative value causes an error.

name2
Required. Specifies the name of the second double property.

df_edge_count()
Returns the number of data objects in the specified edge set.

Syntax
df_edge_count(
edge_set = df_edge_set
);

Returns
integer

Chapter 4: Utility Functions


DRC Features Utility Functions 4-213
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
edge_set
Required. Specifies the edge set.

df_edge_exist()
Returns the value true if the number of data objects in the specified edge set is greater
than 0; otherwise, returns the value false.

Syntax
df_edge_exist(
edge_set = df_edge_set
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

df_edge_length()
Returns the length of the ith edge in the specified edge set. The order of the edges is
arbitrary.

Syntax
df_edge_length(
edge_set = df_edge_set,
index = integer
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-214
IC Validator Reference Manual Version N-2017.12-SP2

index
Required. Specifies the index of the edge set. A negative value causes an error.

df_edge_layer()
Returns the edge set for the specified edge layer that interacts with the primary polygon or
edge.

Syntax
df_edge_layer(
primary_data = df_data,
edge_layer_name = "string"
);

Returns
df_edge_set

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

edge_layer_name
Required. Specifies the edge layer whose characteristics are requested. Use an empty
string to get the primary edge layer.

df_edge_horizontal_length()
Returns the length of the ith edge in the specified edge set if it is horizontal; otherwise,
returns the value 0.

Syntax
df_edge_horizontal_length(
edge_set = df_edge_set,
index = integer
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-215
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

df_edge_max_length()
Returns the maximum of the lengths of all edges in the specified edge set.

Syntax
df_edge_max_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

df_edge_min_length()
Returns the minimum of the lengths of all edges in the specified edge set.

Syntax
df_edge_min_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-216
IC Validator Reference Manual Version N-2017.12-SP2

df_edge_proximity()
Calculates the smallest projection distances of each error set within a specified range,
together with the fracturing region widths on a specified edge in the edge set that
corresponds to each projection. The output is a proximity matrix for the specified edge in the
edge set. A common superset of the fracturing of the specified edge in the edge set is
derived to measure projections on multiple error sets simultaneously.
Returns true if the matrix is successfully formed; otherwise, returns false and the values in
the output proximity are undefined.
Note:
The proximity matrix cannot be formed if the error edges of the error set do not line touch
the specified edge of the edge set or if the input edge set is not orthogonal. The other
edge of the error set can have any angle.

Syntax
df_edge_proximity(
edge_set = df_edge_set,
index = integer
criteria = {{error_set = df_error_set,
ordinal = integer,
range = double},
...},
proximity = df_matrix
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index (i) of the target edge in the edge set. A negative value
causes an error.

criteria
Required. Specifies the error sets and their accompanying parameters.
❍ error_set. Required. Specifies the error sets to be measured simultaneously.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-217
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ ordinal. Required. Specifies the projection distance to be measured. The ordinal


value must be positive. Ordinal 1 means the smallest distance; ordinal n means the
nth smallest distance.
❍ range. Required. Specifies the maximum measured projection distance, which is
typically the same as the distance used to form the corresponding error set. The
range value must be nonnegative. When this value is 0 (zero), only touching errors
in error sets are considered.
The projection distance is not measured beyond the range value and is equal to the
range value if the smallest projection distance is larger than this value or if no result
is found.

proximity
Required. Specifies where the calculated values are stored. The dimension is
(number-of-edge-set-fracturing) x (1 + number-of-input-error-sets)

Column 0 is the common fracturing region widths on the edge set. Column n is the ith
smallest projection distance of the nth error set, where i is the ordinal setting of the nth
error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-218
IC Validator Reference Manual Version N-2017.12-SP2

Examples
Example 1
In this example, the brown line represents the edge set and the colored areas around the
brown line represent the error sets for well_1 and well_2 respectively. The ordinals are both
1, and the ranges are sufficiently large.

The input data is

  L1, 1, R ,
 L2, 1, R  

Chapter 4: Utility Functions


DRC Features Utility Functions 4-219
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The output proximity is

W  0  L1  0  L2  0 
proximity = W  1  L1  1  L2  1 
  
W  7  L1  7  L2  7 

Example 2
In this example, the black line represents the edge set (E), the green data represents the
external error set (L1), and the orange data represents the enclose error set (L2).

To calculate the first three distances of L1 and the closest distance of L2, the input data is

  L1, 1, R ,
 L1, 2, R ,
 L1, 3, R ,
 L2, 1, R  

Chapter 4: Utility Functions


DRC Features Utility Functions 4-220
IC Validator Reference Manual Version N-2017.12-SP2

The output matrix is

W0 x R R R
W1 x R R a
W2 y x R a
proximity =
W3 y x R b
W4 z y x b
W5 z y x R

See Also
dev_proximity_list()

df_edge_sum_horizontal_length()
Returns the sum of the lengths of all horizontal edges in the specified edge set.

Syntax
df_edge_sum_horizontal_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

df_edge_sum_length()
Returns the sum of the lengths of all edges in the specified edge set.

Syntax
df_edge_sum_length(
edge_set = df_edge_set
);

Chapter 4: Utility Functions


DRC Features Utility Functions 4-221
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

df_edge_sum_vertical_length()
Returns the sum of the lengths of all vertical edges in the specified edge set.

Syntax
df_edge_sum_vertical_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

df_edge_sum_x_length()
Returns the sum of the delta x-axis lengths of all edges in the specified edge set.

Syntax
df_edge_sum_x_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-222
IC Validator Reference Manual Version N-2017.12-SP2

df_edge_sum_y_length()
Returns the sum of the delta y-axis lengths of all edges in the specified edge set.

Syntax
df_edge_sum_y_length(
edge_set = df_edge_set
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

df_edge_vertical_length()
Returns the length of the ith edge in the specified edge set if it is vertical; otherwise, returns
the value 0.

Syntax
df_edge_vertical_length(
edge_set = df_edge_set,
index = integer
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

df_edge_x_length()
Returns the delta x-axis length of the ith edge in the specified edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-223
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_edge_x_length(
edge_set = df_edge_set
index = integer
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

df_edge_y_length()
Returns the delta y-axis length of the ith edge in the specified edge set.

Syntax
df_edge_y_length(
edge_set = df_edge_set
index = integer
);

Returns
double

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

df_error_angle()
Returns the angle between two edges of the ith error in the specified error set if the error
consists of two edges; otherwise, returns the value 0. The return value is in the range [0,pi].

Chapter 4: Utility Functions


DRC Features Utility Functions 4-224
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
df_error_angle(
error_set = df_error_set,
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_max_angle()
Returns the maximum angle from the angles of two edges of any errors in the specified error
set if the error consists of two edges; otherwise, returns the value 0 (zero). The return value
is in the range [0,pi].

Syntax
df_error_max_angle(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_min_angle()
Returns the minimum angle from the angles of two edges of any errors in the specified error
set if the error consists of two edges; otherwise, returns the value 0 (zero). The return value
is in the range [0,pi].

Chapter 4: Utility Functions


DRC Features Utility Functions 4-225
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_error_min_angle(
error_set = df_error_set,
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_count()
Returns the number of data objects in the specified error set.

Syntax
df_error_count(
error_set = df_error_set
);

Returns
integer

Arguments
error_set
Required. Specifies the error set.

df_error_distance()
Returns the distance of the ith error in the specified error set. The order of the errors is
arbitrary.

Syntax
df_error_distance(
error_set = df_error_set,
index = integer
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-226
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_exist()
Returns the value true if the number of data objects in the specified error set is greater
than 0; otherwise, returns the value false.

Syntax
df_error_exist(
error_set = df_error_set
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set.

df_error_horizontal_distance()
Returns the distance of the ith error in the specified error set if the distance vector is
horizontal; otherwise, returns the value 0.

Syntax
df_error_horizontal_distance(
error_set = df_error_set,
index = integer
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-227
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_layer()
Returns the error set for the specified error layer that interacts with the primary polygon or
edge.

Syntax
df_error_layer(
primary_data = df_data,
error_layer_name = "string"
);

Returns
df_error_set

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

error_layer_name
Required. Specifies the error layer whose characteristics are requested. Use an empty
string to get the primary error layer.

df_error_max_distance()
Returns the maximum of the distances of all errors in the specified error set.

Syntax
df_error_max_distance(
error_set = df_error_set
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-228
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

df_error_max_projection_length()
Returns the maximum of the projection lengths of all errors in the specified error set.

Syntax
df_error_max_projection_length(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_max_sum_orthogonal_projection_length()
Adds the horizontal projection lengths of all errors in the specified error set, and adds the
vertical projection lengths of all errors in the specified error set, and then returns the
maximum of the two sums.
Note:
This function is intended for situations when both orientations must be processed
separately, but the processing is the same for both orientations.

Syntax
df_error_max_sum_orthogonal_projection_length(
error_set = df_error_set,
merge = true | false
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-229
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

merge
Required. Specifies how to merge the lengths.
❍ true. All horizontal projection lengths are translated to the x-axis and merged before
being added together. All vertical projection lengths are translated to the y-axis and
merged before being added together.
❍ false. The lengths are not merged before being added together.

Example
The following user-defined function is similar to the chk_proj_sum() function shown in the
example for the df_error_sum_vertical_projection_length() function.
chk_proj_sum_simpler: function (void) returning void {
c_data = df_get_current_data();
x1 = df_error_layer(c_data, "err");
if (df_error_max_sum_orthogonal_projection_length(xl,true) > L){
df_save_data(c_data);
}
}

df_error_min_distance()
Returns the minimum of the distances of all errors in the specified error set.

Syntax
df_error_min_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-230
IC Validator Reference Manual Version N-2017.12-SP2

df_error_min_projection_length()
Returns the minimum of the projection lengths of all errors in the specified error set.

Syntax
df_error_min_projection_length(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_min_sum_orthogonal_projection_length()
Adds the horizontal projection lengths of all errors in the specified error set, and adds the
vertical projection lengths of all errors in the specified error set, and then returns the
minimum of the two sums.
Note:
This function is intended for situations when both orientations must be processed
separately, but the processing is the same for both orientations.

Syntax
df_error_min_sum_orthogonal_projection_length(
error_set = df_error_set,
merge = true | false
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

merge
Required. Specifies how to merge the lengths.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-231
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ true. All horizontal projection lengths are translated to the x-axis and merged before
being added together. All vertical projection lengths are translated to the y-axis and
merged before being added together.
❍ false. The lengths are not merged before being added together.

df_error_parallel_distance()
Returns the distance of the ith error in the specified error set if the error consists of two
parallel edges; otherwise, returns the value 0.

Syntax
df_error_parallel_distance(
error_set = df_error_set,
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_projection_length()
Returns the projection length of the ith error in the specified error set. The order of the errors
is arbitrary.

Syntax
df_error_projection_length(
error_set = df_error_set,
index = integer
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-232
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_sum_angle()
Returns the sum of the angles of all errors in the specified error set that consist of two edges.

Syntax
df_error_sum_angle(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_distance()
Returns the sum of the distances of all errors in the specified error set.

Syntax
df_error_sum_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-233
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_error_sum_horizontal_distance()
Returns the sum of the distances of errors in the specified error set in which the distance
vector is horizontal.

Syntax
df_error_sum_horizontal_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_horizontal_projection_length()
Returns the sum of the horizontal projection lengths of all errors in the specified error set.

Syntax
df_error_sum_horizontal_projection_length(
error_set = df_error_set,
merge = true | false
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

merge
Required. Specifies how to merge the lengths.
❍ true. All horizontal projection lengths are translated to the x-axis and merged before
being added together.
❍ false. The lengths are not merged before being added together.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-234
IC Validator Reference Manual Version N-2017.12-SP2

Example
For the two errors shown in Figure 4-29,
• When the merge argument is true, the returned value is 4.
• When the merge argument is false, the returned value is 7.
Figure 4-29 df_error_sum_horizontal_projection_length() Function Example
4

df_error_sum_parallel_distance()
Returns the sum of the distances of errors in the specified error set that consist of two
parallel edges.

Syntax
df_error_sum_parallel_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-235
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_error_sum_projection_length()
Returns the sum of the projection lengths of all errors in the specified error set.

Syntax
df_error_sum_projection_length(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_vertical_distance()
Returns the sum of the distances of errors in the specified error set in which the distance
vector is vertical.

Syntax
df_error_sum_vertical_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_vertical_projection_length()
Returns the sum of the vertical projection lengths of all errors in the specified error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-236
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
df_error_sum_vertical_projection_length(
error_set = df_error_set,
merge = true | false
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

merge
Required. Specifies how to merge the lengths.
❍ true. All vertical projection lengths are translated to the y-axis and merged before
being added together.
❍ false. The lengths are not merged before being added together.

Example
The following example uses the df_error_sum_horizontal_projection_length() and
df_error_sum_vertical_projection_length() functions in a user-defined function.
chk_proj_sum: function (void) returning void {
c_data = df_get_current_data();
x1 = df_error_layer(c_data, "err");
if ((df_error_sum_horizontal_projection_length(x1, true) > L) ||
(df_error_sum_vertical_projection_length(x1, true) > L)) {
df_save_data(c_data);
}
}

M2Wide = wide( M2, > W );

E = external2(M2Wide, M2, <S, extension=NONE, look_thru=NOT_ADJACENT);


X1 = external2_error(M2Wide, M2, <S, extension=NONE,
look_thru=NOT_ADJACENT);
drc_features( E, {"err" => X1}, drc_function=chk_proj_sum,
output_from_layer=E );

df_error_sum_x_distance()
Returns the sum of the delta x-axis distances of all errors in the specified error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-237
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_error_sum_x_distance(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_x_projection_length()
Returns the sum of the x-axis projection lengths of all errors in the specified error set.

Syntax
df_error_sum_x_projection_length(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_sum_y_distance()
Returns the sum of the delta y-axis distances of all errors in the specified error set.

Syntax
df_error_sum_y_distance(
error_set = df_error_set
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-238
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
error_set
Required. Specifies the error set.

df_error_sum_y_projection_length()
Returns the sum of the y-axis projection lengths of all errors in the specified error set.

Syntax
df_error_sum_x_projection_length(
error_set = df_error_set
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

df_error_vertical_distance()
Returns the distance of the ith error in the specified error set if the distance vector is vertical;
otherwise, returns the value 0.

Syntax
df_error_vertical_distance(
error_set = df_error_set,
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-239
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_error_x_distance()
Returns the delta x-axis distance of the ith error in the specified error set.

Syntax
df_error_x_distance(
error_set = df_error_set
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_x_projection_length()
Returns the x-axis projection length of the ith error in the specified error set.

Syntax
df_error_x_projection_length(
error_set = df_error_set
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-240
IC Validator Reference Manual Version N-2017.12-SP2

df_error_y_distance()
Returns the delta y-axis distance of the ith error in the specified error set.

Syntax
df_error_y_distance(
error_set = df_error_set
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

df_error_y_projection_length()
Returns the y-axis projection length of the ith error in the specified error set.

Syntax
df_error_y_projection_length(
error_set = df_error_set
index = integer
);

Returns
double

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-241
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_fnote()
Writes data to the specified ASCII file.

Syntax
df_fnote(
file_index = integer, //optional
data = "string" //optional
);

Returns
void

Arguments
file_index
Optional. Selects the ASCII file specified in the files argument of the runset function,
such as the drc_features() function. The first file in the list has an index of 0. The
default is 0; that is, the first file in the list.

data
Optional. Specifies the string to be written.

Example
The following example uses the df_fnote() function inside of drc_features() remote
functions that are named user_df and get_double:
f1 = fopen("area.txt");

user_df : function (void) returning void


{
tmp = df_get_current_data();
py = df_polygon_layer(tmp, "l1");
cont = df_polygon_count(py) ;
for(i = 1 to cont){
parea = df_polygon_area(py, i-1);
df_fnote(data = "polygon area\t" +
df_polygon_area(py, i-1) +"\t"+i +"\n");
}
}

o1 = drc_features(l1, {"l1"=>l1}, user_df, output_from_layer = l1,


files = {f1});

See Also
fopen()

Chapter 4: Utility Functions


DRC Features Utility Functions 4-242
IC Validator Reference Manual Version N-2017.12-SP2

df_get_current_data()
Returns the current primary layer polygon or edge.

Syntax
df_get_current_data();

Returns
df_data

df_get_edge_double_property()
Retrieves the value of a double property for the specified edge set. The value is 0 (zero) if
the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_edge_double_property(
edge_set = df_edge_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith edge of the
edge set is stored.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-243
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_get_edge_matrix_property()
Retrieves the value of a matrix property for a specified edge in the specified edge set. The
df_matrix value is -1 if the property is not present or the index is out of bounds. Returns
true if the property is found; otherwise, returns false.

Syntax
df_get_edge_matrix_property(
edge_set = df_edge_set,
index = integer,
name = ”string”,
value = df_matrix
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index (i) of the target edge in the edge set. A negative value
causes an error.

name
Required. Specifies the matrix property name.

value
Required. Specifies the variable where the value of the matrix property for the ith edge of
the edge set is stored.

See Also
dev_proximity_list()

df_get_edge_max_double_property()
Retrieves the maximum value of the double properties for the specified edge set. The value
is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-244
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
df_get_edge_max_double_property(
edge_set = df_edge_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the maximum value of the property is stored.

df_get_edge_min_double_property()
Retrieves the minimum value of the double properties for the specified edge set. The value
is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_edge_min_double_property(
edge_set = df_edge_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-245
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Required. Specifies the property name.

value
Required. Specifies the variable where the minimum value of the property is stored.

df_get_edge_net_double_property()
Retrieves the value of a net double property for the specified edge.

Syntax
df_get_edge_net_double_property(
edge_set = df_edge_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

name
Required. Specifies the property name.

index
Required. Specifies the index of the edge set. A negative value causes an error.

value
Required. Specifies the variable where the value of the property is stored.

df_get_edge_net_list_of_double_property()
Retrieves the value of a net list of double property for the specified edge. The value is an
empty list if the property is not present.

Syntax
df_get_edge_net_list_of_double_property(

Chapter 4: Utility Functions


DRC Features Utility Functions 4-246
IC Validator Reference Manual Version N-2017.12-SP2

edge_set = df_edge_set,
index = integer,
name = "string",
value = out_list_of_double
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

name
Required. Specifies the property name.

index
Required. Specifies the index of the edge set. A negative value causes an error.

value
Required. Specifies the variable where the value of the property is stored.

df_get_edge_net_string_property()
Retrieves the value of a net string property for the specified edge.

Syntax
df_get_edge_net_string_property(
edge_set = df_edge_set,
index = integer,
name = "string",
value = out_string,
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-247
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

index
Required. Specifies the index of the edge set. A negative value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property is stored.

df_get_edge_string_property()
Retrieves the value of a string property for the specified edge. The value is an empty string
if the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_edge_string_property(
edge_set = df_edge_set,
index = integer,
name = "string",
value = out_string,
property_index = integer //optional
);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property is stored.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-248
IC Validator Reference Manual Version N-2017.12-SP2

property_index
Optional. Specifies the index (i) number of the string property. A negative value causes
an error.

df_get_edge_string_property_count()
Returns the number of string properties for the property name on the specified edge, or
returns 0 (zero) if the property name does not exist.

Syntax
df_get_edge_string_property_count(
edge_set = df_edge_set,
index = integer,
name = "string"
);

Returns
integer

Arguments
edge_set
Required. Specifies the edge set.

index
Required. Specifies the index of the edge set. A negative value causes an error.

name
Required. Specifies the property name.

df_get_edge_sum_double_property()
Retrieves the sum of the values of the specified property for the specified edge set. The
value is 0 (zero) if the property is not present.
Returns the value true if the property is found; returns the value false if the property is
missing from all data in the specified set.

Syntax
df_get_edge_sum_double_property(
edge_set = df_edge_set,
name = "string",
value = out_double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-249
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

);

Returns
Boolean

Arguments
edge_set
Required. Specifies the edge set. Use the df_edge_layer() function to define the edge
set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the result is stored.

df_get_error_double_property()
Retrieves the value of a double property for the specified error. The value is 0 (zero) if the
property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_error_double_property(
error_set = df_error_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-250
IC Validator Reference Manual Version N-2017.12-SP2

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith error of the
error set is stored.

df_get_error_max_double_property()
Retrieves the maximum value of the double properties for the specified error set. The value
is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_error_max_double_property(
error_set = df_error_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the maximum value of the property is stored.

df_get_error_min_double_property()
Retrieves the minimum value of the double properties for the specified error set. The value
is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-251
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_get_error_min_double_property(
error_set = df_error_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the minimum value of the property is stored.

df_get_error_string_property()
Retrieves the value of a string property for the specified error. The value is an empty string
if the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_error_string_property(
error_set = df_error_set,
index = integer,
name = "string",
value = out_string,
property_index = integer //optional
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-252
IC Validator Reference Manual Version N-2017.12-SP2

index
Required. Specifies the index of the error set. A negative value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith error of the
error set is stored.

property_index
Optional. Specifies the index (i) number of the string property. A negative value causes
an error.

df_get_error_string_property_count()
Returns the number of string properties for the property name on the specified error, or
returns 0 (zero) if the property name does not exist.

Syntax
df_get_error_string_property_count(
error_set = df_error_set,
index = integer,
name = "string"
);

Returns
integer

Arguments
error_set
Required. Specifies the error set.

index
Required. Specifies the index of the error set. A negative value causes an error.

name
Required. Specifies the property name.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-253
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_get_error_sum_double_property()
Retrieves the sum of the values of the specified property for the specified error set. The
value is 0 (zero) if the property is not present.
Returns the value true if the property is found; returns the value false if the property is
missing from all data in the specified set.

Syntax
df_get_error_sum_double_property(
error_set = df_error_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
error_set
Required. Specifies the error set. Use the df_error_layer() function to define the error
set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the result is stored.

df_get_marker_double_property()
Retrieves the value of a double property for the specified marker set. Returns the value true
if the property is found; otherwise, returns the value false.

Syntax
df_get_marker_double_property(
marker_set = df_marker_set,
index = integer,
name = "string",
value = out_string
);

Chapter 4: Utility Functions


DRC Features Utility Functions 4-254
IC Validator Reference Manual Version N-2017.12-SP2

Returns
Boolean

Arguments
marker_set
Required. Specifies the marker set.

index
Required. Specifies the index of the marker set. A negative value causes a fatal error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith marker of the
marker set is stored. The value is 0 (zero) if the property is not present or the index is out
of bounds.

df_get_marker_string_property()
Retrieves the value of a string property for the specified marker set. Returns the value true
if the property is found; otherwise, returns the value false.

Syntax
df_get_marker_string_property(
marker_set = df_marker_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
marker_set
Required. Specifies the marker set.

index
Required. Specifies the index of the marker set. A negative value causes a fatal error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-255
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith marker of the
marker set is stored. The value is 0 (zero) if the property is not present or the index is out
of bounds.

df_get_polygon_double_property()
Retrieves the value of a double property for the specified polygon. The value is 0 (zero) if the
property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_polygon_double_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith polygon of the
polygon set is stored.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-256
IC Validator Reference Manual Version N-2017.12-SP2

df_get_polygon_list_of_list_of_double_property()
Retrieves the value of an attached matrix for the specified polygon. If the input polygon set
is empty, the property is not present, the index is out of bounds, or a row in the retrieved
matrix has a different number of columns than the other rows, the return value is false and
the matrix is an empty list; otherwise, returns the value true.

Syntax
df_get_polygon_list_of_list_of_double_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",
value = out_list_of_list_of_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the matrix property name. Cannot be a null string and cannot start
with an underscore character (_).

value
Required. Specifies the variable where the value of the list of list of double data for the
ith polygon of the polygon set is stored.

df_get_polygon_max_double_property()
Retrieves the maximum value of the double properties for the specified polygon set. The
value is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-257
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_get_polygon_max_double_property(
polygon_set = df_polygon_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the maximum value of the property is stored.

df_get_polygon_min_double_property()
Retrieves the minimum value of the double properties for the specified polygon set. The
value is 0 (zero) if the property is not present.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_polygon_min_double_property(
polygon_set = df_polygon_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-258
IC Validator Reference Manual Version N-2017.12-SP2

name
Required. Specifies the property name.

value
Required. Specifies the variable where the minimum value of the property is stored.

df_get_polygon_net_double_property()
Retrieves the value of a net double property for the specified polygon. The value is 0 (zero)
if the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_polygon_net_double_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith polygon of the
polygon set is stored.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-259
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_get_polygon_net_list_of_double_property()
Retrieves the value of a net list of double property for the specified polygon. The value is an
empty list if the property is not present or the index is out of bounds.

Syntax
df_get_polygon_net_list_of_double_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",
value = {out_list_of_double, ...}
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property for the ith polygon of the
polygon set is stored.

df_get_polygon_net_string_property()
Retrieves the value of a net string property for the specified polygon. The value is an empty
string if the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_polygon_string_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",

Chapter 4: Utility Functions


DRC Features Utility Functions 4-260
IC Validator Reference Manual Version N-2017.12-SP2

value = out_string
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property is stored.

df_get_polygon_string_property()
Retrieves the value of a string property for the specified polygon. The value is an empty
string if the property is not present or the index is out of bounds.
Returns the value true if the property is found; otherwise, returns the value false.

Syntax
df_get_polygon_string_property(
polygon_set = df_polygon_set,
index = integer,
name = "string",
value = out_string,
property_index = integer //optional
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-261
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the value of the property is stored.

property_index
Optional. Specifies the index (i) number of the string property. A negative value causes
an error.

df_get_polygon_string_property_count()
If property name exists, returns an integer value, which is the number of string properties for
the property name on the specified polygon. The value is 0 (zero) if the property is not
present.

Syntax
df_get_polygon_string_property_count(
polygon_set = df_polygon_set,
index = integer,
name = "string"
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index (i) of the target polygon in the polygon set. A negative
value causes an error.

name
Required. Specifies the property name.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-262
IC Validator Reference Manual Version N-2017.12-SP2

df_get_polygon_sum_double_property()
Retrieves the sum of the values of the specified property for the specified polygon set. The
value is 0 (zero) if the property is not present.
Returns the value true if the property is found; returns the value false if the property is
missing from all data in the specified set.

Syntax
df_get_polygon_sum_double_property(
polygon_set = df_polygon_set,
name = "string",
value = out_double
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set. Use the df_polygon_layer() function to define
the polygon set.

name
Required. Specifies the property name.

value
Required. Specifies the variable where the result is stored.

df_marker_count()
Returns the number of data objects in the specified marker set.

Syntax
df_marker_count(
marker_set = df_marker_set
);

Returns
integer

Chapter 4: Utility Functions


DRC Features Utility Functions 4-263
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
marker_set
Required. Specifies the marker set.

df_marker_exist()
Returns the value true if the number of data objects in the specified edge set is greater
than 0; otherwise, returns the value false.

Syntax
df_marker_exist(
marker_set = df_marker_set
);

Returns
Boolean

Arguments
marker_set
Required. Specifies the marker set.

df_marker_layer()
Returns the marker set for the specified marker layer that interacts with the primary polygon
or edge.

Syntax
df_marker_layer(
primary_data = df_data,
marker_layer_name = "string"
);

Returns
df_marker_set

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-264
IC Validator Reference Manual Version N-2017.12-SP2

edge_layer_name
Required. Specifies the marker layer whose characteristics are requested. Use an empty
string to get the primary marker layer.

df_marker_length()
Returns the length of the ith marker in the specified marker set if the marker is a
one-dimensional pattern marker or 0 if the marker is a two-dimensional pattern marker. The
order of the markers is arbitrary.

Syntax
df_marker_length(
marker_set = df_marker_set,
index = integer
);

Returns
double

Arguments
marker_set
Required. Specifies the marker set.

index
Required. Specifies the index of the marker set. A negative value causes a fatal error.

df_polygon_area()
Returns the area of the ith polygon in the specified polygon set. The order of the polygons is
arbitrary.

Syntax
df_polygon_area(
polygon_set = df_polygon_set,
index = integer
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-265
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

df_nets_in_sync()
Returns the value true if the two nets corresponding to the data specified in the sync_net
argument are in sync. Otherwise returns false.

Syntax
df_nets_in_sync(
data_set1 = df_data_set,
index1 = integer
data_set2 = df_data_set,
index2 = integer
);

Returns
Boolean

Arguments
data_set1
Required. Specifies the first data set.

index1
Required. Specifies the index of the first data set. A negative value causes an error.

data_set2
Required. Specifies the second data set.

index2
Required. Specifies the index of the second data set. A negative value causes an error.

df_polygon_count()
Returns the number of data objects in the specified polygon set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-266
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
df_polygon_count(
polygon_set = df_polygon_set
);

Returns
integer

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_exist()
Returns the value true if the number of data objects in the specified polygon set is greater
than 0; otherwise, returns the value false.

Syntax
df_polygon_exist(
polygon_set = df_polygon_set
);

Returns
Boolean

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_horizontal_perimeter()
Returns the sum of the lengths of all horizontal edges of the ith polygon in the specified
polygon set.

Syntax
df_polygon_horizontal_perimeter(
polygon_set = df_polygon_set,
index = integer
);

Chapter 4: Utility Functions


DRC Features Utility Functions 4-267
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

df_polygon_layer()
Returns the polygon set for the specified polygon layer that interacts with the primary
polygon or edge.

Syntax
df_polygon_layer(
primary_data = df_data,
polygon_layer_name = "string"
);

Returns
df_polygon_set

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

polygon_layer_name
Required. Specifies the polygon layer whose characteristics are requested. Use an
empty string to get the primary layer data.

df_polygon_max_area()
Returns the maximum of the areas of all polygons in the specified polygon set.

Syntax
df_polygon_max_area(
polygon_set = df_polygon_set
);

Chapter 4: Utility Functions


DRC Features Utility Functions 4-268
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_max_perimeter()
Returns the maximum of the perimeters of all polygons in the specified polygon set.

Syntax
df_polygon_max_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_min_area()
Returns the minimum of the areas of all polygons in the specified polygon set.

Syntax
df_polygon_min_area(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-269
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_polygon_min_perimeter()
Returns the minimum of the perimeters of all polygons in the specified polygon set.

Syntax
df_polygon_min_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_perimeter()
Returns the perimeter of the ith polygon in the specified polygon set. The order of the
polygons is arbitrary.

Syntax
df_polygon_perimeter(
polygon_set = df_polygon_set,
index = integer
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-270
IC Validator Reference Manual Version N-2017.12-SP2

df_polygon_same_net()
Returns the value true if all the polygons in all the sets have the same net ID; otherwise,
returns the value false if the net ID does not exist for any polygon in the set. See the
npbp_save_net() function for more information.

Syntax
df_polygon_same_net(
polygon_sets = {df_polygon_set, ...}
);

Returns
Boolean

Arguments
polygon_sets
Required. Specifies a list of polygon sets.

df_polygon_sum_area()
Returns the sum of the areas of all polygons in the specified polygon set.

Syntax
df_polygon_sum_area(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_sum_horizontal_perimeter()
Returns the sum of the lengths of all horizontal edges of all polygons in the specified polygon
set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-271
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
df_polygon_sum_horizontal_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_sum_perimeter()
Returns the sum of the perimeters of all polygons in the specified polygon set.

Syntax
df_polygon_sum_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_sum_vertical_perimeter()
Returns the sum of the lengths of all vertical edges of all polygons in the specified polygon
set.

Syntax
df_polygon_sum_vertical_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Chapter 4: Utility Functions


DRC Features Utility Functions 4-272
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_sum_x_perimeter()
Returns the sum of the length of edges projected onto the x-axis for all edges all polygons
in the specified polygon set.

Syntax
df_polygon_sum_x_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

df_polygon_sum_y_perimeter()
Returns the sum of the length of edges projected onto the x-axis for all edges all polygons
in the specified polygon set.

Syntax
df_polygon_sum_y_perimeter(
polygon_set = df_polygon_set
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-273
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

df_polygon_vertical_perimeter()
Returns the sum of the lengths of all vertical edges of the ith polygon in the specified polygon
set.

Syntax
df_polygon_vertical_perimeter(
polygon_set = df_polygon_set,
index = integer
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

df_polygon_x_perimeter()
Returns the sum of the length of edges projected onto the x-axis for the ith polygon in the
specified polygon set.

Syntax
df_polygon_x_perimeter(
polygon_set = df_polygon_set,
index = integer
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-274
IC Validator Reference Manual Version N-2017.12-SP2

df_polygon_y_perimeter()
Returns the sum of the length of edges projected onto the y-axis for the ith polygon in the
specified polygon set.

Syntax
df_polygon_y_perimeter(
polygon_set = df_polygon_set,
index = integer
);

Returns
double

Arguments
polygon_set
Required. Specifies the polygon set.

index
Required. Specifies the index of the polygon set. A negative value causes an error.

df_report_double()
Writes the name and value to the LAYOUT_ERRORS file if the output of the
drc_features() function is to error output and if the df_save_data() function is called
after the df_report_double() function in the remote function.
Note:
If the output of the drc_features() function is to a named layer, this function is ignored.
If the df_report_double() function is called without calling the df_save_data()
function afterwards, the data is not saved.

Syntax
df_report_double(
primary_data = df_data,
name = "string",
value = out_double
);

Returns
void

Chapter 4: Utility Functions


DRC Features Utility Functions 4-275
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
primary_data
Required. Specifies the current primary data.

name
Required. Specifies the name written to the LAYOUT_ERRORS file.

value
Required. Specifies the value written to the LAYOUT_ERRORS file.

Example
The following is an example of using the df_report_double() function in a remote
function:
uf : function (void) returning void {
cd = df_get_current_data();
ps2 = df_polygon_layer(cd, "L2");
c = df_polygon_count(ps2);
if (c>0) {
df_report_double(cd, name = "count", value = c*1.0);
df_report_double(cd, name = "area",
value = df_polygon_sum_area(ps2));
df_save_data(cd);
}
}

drc_features(layer1, {"L2"=>layer2}, drc_function = uf,


output_from_layer = layer1);

df_report_string()
Writes the name and value to the LAYOUT_ERRORS file if the output of the
drc_features() function is to error output and if the df_save_data() function is called
after the df_report_string() function in the remote function.
Note:
If the output of the drc_features() function is to a named layer, this function is ignored.
If the df_report_string() function is called without calling the df_save_data()
function afterwards, the data is not saved.

Syntax
df_report_string(
primary_data = df_data,
name = "string",
value = out_string

Chapter 4: Utility Functions


DRC Features Utility Functions 4-276
IC Validator Reference Manual Version N-2017.12-SP2

);

Returns
void

Arguments
primary_data
Required. Specifies the current primary data.

name
Required. Specifies the name written to the LAYOUT_ERRORS file.

value
Required. Specifies the value written to the LAYOUT_ERRORS file.

Example
The following is an example of using the df_report_string() function in a remote
function:
uf : function (void) returning void {
cd = df_get_current_data();
ps2 = df_polygon_layer(cd, "L2");
c = df_polygon_count(ps2);
if (c>0) {
df_report_string(cd, name = "count", value = "positive");
df_save_data(cd);
}
}

drc_features(layer1, {"L2"=>layer2}, drc_function = uf,


output_from_layer = layer1);

df_save_data()
Returns the current primary layer polygon or edge.

Syntax
df_save_data(
primary_data = df_data
);

Returns
void

Chapter 4: Utility Functions


DRC Features Utility Functions 4-277
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
primary_data
Required. Specifies the current primary polygon, edge, or marker.

df_save_double_property()
Specifies the double properties to be written along with the output data when the
df_save_data() function is called. You cannot save a double property and a string property
with the same name.
Note:
When this function is called, the output_from_layer argument of the drc_features()
function must be set to the primary layer.

Syntax
df_save_double_property(
primary_data = df_data,
name = "string",
value = double
);

Returns
void

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

name
Required. Specifies the property name.

value
Required. Specifies the value that is associated with the property.

df_save_list_of_list_of_double_property()
Specifies the matrix double properties to be written on the primary layer when the
df_save_data() function is called.
Note:
When this function is called, the output_from_layer argument of the drc_features()
function must be set to the primary layer.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-278
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
df_save_list_of_list_of_double_property(
primary_data = df_data,
name = "string",
value = list_of_list_of_double
);

Returns
void

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

name
Required. Specifies the matrix property name. Cannot be a null string and cannot start
with an underscore character (_).

value
Required. Specifies the variable that is associated with the property.

df_save_matrix_property()
Specifies the matrix properties to be attached on the primary layer when the
df_save_data() function is called.
Note:
When this function is called, the output_from_layer argument of the drc_features()
function must be set to the primary layer.

Syntax
df_save_matrix_property(
primary_data = df_data,
name = "string",
value = df_matrix
);

Returns
void

Arguments
primary_data
Required. Specifies the current primary polygon or edge.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-279
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

name
Required. Specifies the matrix property name. Cannot be a null string and cannot start
with an underscore character (_).

value
Required. Specifies the value that is associated with the matrix property.

df_save_properties()
Specifies the properties to be written with the output data when the df_save_data()
function is called.
Note:
When this function is called, the output_from_layer argument of the DRC feature
function must be the primary layer.

Syntax
df_save_properties(
primary_data = df_data,
double_properties = {{name = "string",
value = double}, ...}
);

Returns
void

Arguments
primary_data
Required. Specifies the current primary polygon, edge, or marker.

double_properties
Optional. Specifies a list of properties that are written to the output data. If a property
name is in more than one call to the df_save_properties() function, the last value is
used. A data object can have many properties but only one value associated with any
one property.
❍ name. Specifies the name of the user-defined property.

❍ value. Specifies the value that is associated with the property.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-280
IC Validator Reference Manual Version N-2017.12-SP2

df_save_string_property()
Specifies the string properties to be written along with the output data when the
df_save_data() function is called. You cannot save a string property and a double property
with the same name.
Note:
When this function is called, the output_from_layer argument of the drc_features()
function must be set to the primary layer.

Syntax
df_save_string_property(
primary_data = df_data,
name = "string",
value = "string",
mode = OVERWRITE | APPEND
);

Returns
void

Arguments
primary_data
Required. Specifies the current primary polygon, edge, error, or marker.

name
Required. Specifies the property name.

value
Required. Specifies the value that is associated with the property.

mode
Optional. Specifies the action when df_save_string_property() has been called
previously with the same property name. The default is OVERWRITE.
❍ OVERWRITE. The property keeps only the current value.

❍ APPEND. The current value is appended to the list of string.

Chapter 4: Utility Functions


DRC Features Utility Functions 4-281
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

DFM Features Utility Functions


The functions described in this section can be called in the remote function called from the
dfm_features() function to gain access to the characteristic values of the data associated
with the current primary geometry. All of these utility functions are defined as aggregate
operations; none of them have an index for access to individual data items.
The following types of aggregate values are available:
• Sum
• Minimum
• Maximum
• Product
The following utility functions are available for the aggregate_functions argument of the
dfm_features() runset function:

• dfm_area()

• dfm_distance()

• dfm_get_double_property()

• dfm_length()

• dfm_perimeter()

• dfm_projection_length()
Note:
These functions are not available for the dfm_function argument of the
dfm_features() runset function.

The other utility functions described in this section are available for the dfm_function
argument, but not for the aggregate_functions argument, of the dfm_features() runset
function.

dfm_aggregate()
Returns the aggregate value of the function with the specified hash key.

Syntax
dfm_aggregate(
key = "string"
);

Chapter 4: Utility Functions


DFM Features Utility Functions 4-282
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

Arguments
key
Required. Specifies the hash key.

dfm_area()
Returns the area for the current layer, and is valid only for polygons.

Syntax
dfm_area(
void
);

Returns
double

dfm_count()
Returns the number of polygons, edges, and errors on the specified layer.

Syntax
dfm_count(
layer_id = "string"
);

Returns
Boolean

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_distance()
Returns the spacing distance for the current layer, and is valid only for errors.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-283
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
dfm_distance(
void
);

Returns
double

dfm_exist()
Returns true if dfm_count is greater than 0 (zero); otherwise, returns false.

Syntax
dfm_exist(
layer_id = "string"
);

Returns
Boolean

Arguments
layer_id
Required. Identifies the layer in the input hash.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-284
IC Validator Reference Manual Version N-2017.12-SP2

dfm_fnote()
Writes data to the specified file.

Syntax
dfm_fnote(
file_index = integer //optional
data = "string" //optional
);

Returns
void

Arguments
file_index
Optional. Specifies the index (i) for the files argument of the dfm_features() function.
The default is 0 (zero); that is, the first file in the list.

data
Optional. Specifies the string to be written.

dfm_get_double_property()
Returns the value of the specified property for the current layer, and is valid for all layer
types.

Syntax
dfm_get_double_property(
name = "string"
);

Returns
double

Arguments
name
Required. Specifies the property name.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-285
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_get_max_double_property()
Returns the maximum of the specified property for the specified layer in the current window.

Syntax
dfm_get_max_double_property(
layer_id = "string"
name = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

name
Required. Identifies the property name.

dfm_get_min_double_property()
Returns the minimum of the specified property for the specified layer in the current window.

Syntax
dfm_get_min_double_property(
layer_id = "string"
name = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

name
Required. Identifies the property name.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-286
IC Validator Reference Manual Version N-2017.12-SP2

dfm_get_product_double_property()
Returns the product of the specified property for the specified layer in the current window.

Syntax
dfm_get_product_double_property(
layer_id = "string"
name = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

name
Required. Identifies the property name.

dfm_get_sum_double_property()
Returns the sum of the specified property for the specified layer in the current window.

Syntax
dfm_get_sum_double_property(
layer_id = "string"
name = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

name
Required. Identifies the property name.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-287
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_length()
Returns the length for the current layer, and is valid only for edges.

Syntax
dfm_length(
void
);

Returns
double

dfm_max_area()
Returns the maximum of the area for the specified layer in the current window, and is valid
only for polygons.

Syntax
dfm_max_area(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_max_distance()
Returns the maximum of the spacing distance for the specified layer in the current window,
and is valid only for errors.

Syntax
dfm_max_distance(
layer_id = "string"
);

Returns
double

Chapter 4: Utility Functions


DFM Features Utility Functions 4-288
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_max_length()
Returns the maximum of the length for the specified layer in the current window, and is valid
only for edges.

Syntax
dfm_max_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_max_perimeter()
Returns the maximum of the perimeter for the specified layer in the current window, and is
valid only for polygons.

Syntax
dfm_max_perimeter(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-289
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_max_projection_length()
Returns the maximum of the projection length for the specified layer in the current window,
and is valid only for errors.

Syntax
dfm_max_projection_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_min_area()
Returns the minimum of the area for the specified layer in the current window, and is valid
only for polygons.

Syntax
dfm_min_area(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_min_distance()
Returns the minimum of the spacing distance for the specified layer in the current window,
and is valid only for errors.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-290
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dfm_min_distance(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_min_length()
Returns the minimum of the length for the specified layer in the current window, and is valid
only for edges.

Syntax
dfm_min_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_min_perimeter()
Returns the minimum of the perimeter for the specified layer in the current window, and is
valid only for polygons.

Syntax
dfm_min_perimeter(
layer_id = "string"
);

Returns
double

Chapter 4: Utility Functions


DFM Features Utility Functions 4-291
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_min_projection_length()
Returns the minimum of the projection length for the specified layer in the current window,
and is valid only for errors.

Syntax
dfm_min_projection_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_perimeter()
Returns the perimeter for the current layer, and is valid only for polygons.

Syntax
dfm_perimeter(
void
);

Returns
double

dfm_product_area()
Returns the product of the area for the specified layer in the current window, and is valid only
for polygons.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-292
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dfm_product_area(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_product_distance()
Returns the product of the spacing distance for the specified layer in the current window, and
is valid only for errors.

Syntax
dfm_product_distance(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_product_length()
Returns the product of the length for the specified layer in the current window, and is valid
only for edges.

Syntax
dfm_product_length(
layer_id = "string"
);

Returns
double

Chapter 4: Utility Functions


DFM Features Utility Functions 4-293
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_product_perimeter()
Returns the product of the perimeter for the specified layer in the current window, and is
valid only for polygons.

Syntax
dfm_product_perimeter(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_product_projection_length()
Returns the product of the projection length for the specified layer in the current window, and
is valid only for errors.

Syntax
dfm_product_projection_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-294
IC Validator Reference Manual Version N-2017.12-SP2

dfm_projection_length()
Returns the projection length for the current layer, and is valid only for errors.

Syntax
dfm_projection_length(
void
);

Returns
double

dfm_report_double()
Writes the name and value to the LAYOUT_ERRORS file if the output of the
dfm_features() function is to error output and if the dfm_save_data() function is called
after the dfm_report_double() function in the remote function.
Note:
If the dfm_report_double() function is called without calling the dfm_save_data()
function afterwards, the data is not saved.

Syntax
dfm_report_double(
name = "string"
value = double
);

Returns
void

Arguments
name
Required. Specifies the name written to the LAYOUT_ERRORS file.

value
Required. Specifies the value written to the LAYOUT_ERRORS file.

dfm_save_data()
Saves the current window as output.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-295
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
dfm_save_data(
void
);

Returns
void

dfm_save_double_property()
Specifies the properties to be written along with the output data when the dfm_save_data()
function is called.

Syntax
dfm_save_double_property(
name = "string"
value = double
);

Returns
void

Arguments
name
Required. Identifies the property name.

value
Required. Specifies the calculated value for this window, for use in the target and
gradient check.

dfm_sum_area()
Returns the sum of the area for the specified layer in the current window, and is valid only
for polygons.

Syntax
dfm_sum_area(
layer_id = "string"
);

Chapter 4: Utility Functions


DFM Features Utility Functions 4-296
IC Validator Reference Manual Version N-2017.12-SP2

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_sum_distance()
Returns the sum of the spacing distance for the specified layer in the current window, and is
valid only for errors.

Syntax
dfm_sum_distance(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_sum_length()
Returns the sum of the length for the specified layer in the current window, and is valid only
for edges.

Syntax
dfm_sum_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-297
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

dfm_sum_perimeter()
Returns the sum of the perimeter for the specified layer in the current window, and is valid
only for polygons.

Syntax
dfm_sum_perimeter(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_sum_projection_length()
Returns the sum of the projection length for the specified layer in the current window, and is
valid only for errors.

Syntax
dfm_sum_projection_length(
layer_id = "string"
);

Returns
double

Arguments
layer_id
Required. Identifies the layer in the input hash.

dfm_window_area()
Returns the area of the current window.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-298
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
dfm_window_area(
void
);

Returns
double

dfm_window_bottom()
Returns the bottom coordinate of the current window. Using this function when
context != TOP causes an error.

Syntax
dfm_window_bottom(
void
);

Returns
double

dfm_window_left()
Returns the left coordinate of the current window. Using this function when context != TOP
causes an error.

Syntax
dfm_window_left(
void
);

Returns
double

dfm_window_perimeter()
Returns the perimeter of the current window.

Chapter 4: Utility Functions


DFM Features Utility Functions 4-299
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
dfm_window_perimeter(
void
);

Returns
double

dfm_window_right()
Returns the right coordinate of the current window. Using this function when
context != TOP causes an error.

Syntax
dfm_window_right(
void
);

Returns
double

dfm_window_top()
Returns the top coordinate of the current window. Using this function when
context != TOP causes an error.

Syntax
dfm_window_top(
void
);

Returns
double

Chapter 4: Utility Functions


DFM Features Utility Functions 4-300
IC Validator Reference Manual Version N-2017.12-SP2

Unified Fill Utility Functions


Use the following utility functions when writing a window function to be called from the
window_function in the criteria option of the unified_fill() function. See
“General-Purpose Functions” on page 4-3 for information about additional functions you can
use.

uf_area()
Returns the total area of all the polygons on the specified layer in the current window.

Syntax
uf_area(
hash_type = FILL | DESIGN,
layer_name = "string"
);

Returns
double

Arguments
hash_type
Required. Specifies the hash table that the layer_name argument refers to.
❍ FILL. Specifies that layer_name argument refers to the fill_layer_keys of the
criteria option of the unified_fill() function.

❍ DESIGN. Specifies that layer_name argument refers to a key in the


design_layers_hash of the criteria option of the unified_fill() function.

layer_name
Required. Specifies the hash key.

uf_save_window()
Saves a window value for the current window. The saved value is compared to the target
specified in the criteria option of the unified_fill() function.

Syntax
uf_save_window(
value = double
);

Chapter 4: Utility Functions


Unified Fill Utility Functions 4-301
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
void

Arguments
value
Required. Specifies the calculated value for this window, for use in the target and
gradient check.

uf_window_area()
Returns the area of the current window.

Syntax
uf_window_area();

Returns
double

Chapter 4: Utility Functions


Unified Fill Utility Functions 4-302
IC Validator Reference Manual Version N-2017.12-SP2

EERC Utility Functions


Use the Extended Electrical Rule Checking (EERC) utility functions to define a remote
function, written in Python, in the form of an IC Validator remote code block. The minimum
runset requirements for EERC include reading a netlist, setting it up for EERC, and calling
an EERC analysis function. The Python remote function defines the EERC analysis. Use the
eerc_analyze_netlist() runset function to execute the Python remote function.

These EERC utility functions enable the EERC netlist processing capabilities. Efficient
netlist processing using EERC involves the following high-level steps:
1. Hierarchical netlist search
Hierarchical utility functions preselect and identify netlist objects (such as cell instances,
device instances, and nets) across all hierarchy levels, based on various search criteria.
You can bookmark these objects programmatically by using strings known as tags.
The IC Validator tool can propagate these tags along specified device paths to emulate
path tracing or use them to refine object selections.
2. Netlist object caching
Caching is the mechanism that adds preselected netlist objects to a new flattened netlist
database. You can cache netlist objects by using hierarchical utility functions and convert
the cache to a new flattened netlist.
The IC Validator tool can use this netlist for more detailed netlist processing.
3. Netlist object traversal
Given a netlist database, such as a postcache netlist, you can use utility functions to
iterate through netlist objects such as cell models, cell instances, device instances, and
nets. You can process these objects individually, for example, by setting tags and
checking connectivity.
The IC Validator tool can save the objects that it filters through this process in another
netlist for further processing, save them in a results database for a netlist-aware polygon
analysis, or report them as errors.

The IC Validator tool writes all rule violations, including EERC errors, to the
LAYOUT_ERRORS file in your current working directory.
Note:
Output files generated by a netlist-only IC Validator EERC run, with no GDSII or OASIS
layout, use the BLOCK prefix instead of the original top-level block name inside the
netlist. However, when you use an input layout, the output files have the original top-level
block name instead of the BLOCK prefix.

Chapter 4: Utility Functions


EERC Utility Functions 4-303
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

You can change this behavior by using the -c command-line option. When you use this
option for an EERC netlist-only run, all of the output file names have the specified cell
name as the prefix.
You can view EERC violations by using VUE, the IC Validator error debugging GUI. To view
EERC violations, select the EERC Errors tab. The list of violations appears on the left side.
Select a violation to view the error details. The Descriptions pane shows information about
the error object, and the Netlist Visualization pane renders the selected error in a
schematic-like form.
For more information about Python syntax, see your Python documentation. You can also
find information about Python on the Web.

Finding Functions by Category


The EERC utility functions can be categorized by the netlist objects they query and by their
semantics.
Many of the functions are listed in the category to help you navigate through the functions
based on semantics and input arguments. The categories can also help you to find the utility
functions you need based on your algorithm.
The following sections describe these categories and list the functions they contain. The
function descriptions are provided in alphabetical order following these sections.
• Netlist Setup and Debug Functions
• Hierarchical Netlist Functions
• Iterator Functions
• Netlist Object Functions
• Error Reporting and Layer Generation Functions
• Functions Listed by Input Objects

Netlist Setup and Debug Functions


The netlist setup and debug functions help you to set up netlist processing and generate
debug information.
Netlist processing often involves a preprocessing step that can include
• Assigning attributes to a netlist
• Retrieving power and ground net names
• Setting temporary tags on netlist objects

Chapter 4: Utility Functions


EERC Utility Functions 4-304
IC Validator Reference Manual Version N-2017.12-SP2

• Generating a new netlist with tag information about netlist objects


• Retrieving the top block of a netlist

You can also use these netlist setup functions in an algorithm that involves multiple netlist
processing steps. The main purpose of these functions is to extract information from or
assign information to a netlist and its objects, in order to make the subsequent netlist
processing easier.
The debug functions help you to view tag and cache information about netlist objects by
generating user-defined ASCII files that contain the information. You can also generate
SPICE netlists for debug purposes.
Table 4-5 lists the netlist setup and debug functions.
Table 4-5 EERC Netlist Setup and Debug Utility Functions

Type Name

Setup ndb_cache_to_netlist()
ndb_get_ground_net_names()
ndb_get_netlist()
ndb_get_netlist_attribute()
ndb_get_power_net_names()
ndb_import_tags_from_cache_netlist()
ndb_is_selected_rule()
ndb_netlist_top_cell()
ndb_remove_tags()
ndb_reset_cache()
ndb_save_netlist()
ndb_set_netlist_attribute()

Debug ndb_debug_netlist()
ndb_debug_snapshot()

Hierarchical Netlist Functions


The hierarchical netlist functions are divided into search, propagation, and error reporting
categories based on their semantics.
Hierarchical netlist functions navigate a hierarchical netlist to perform various operations on
netlist objects. These functions can perform netlist processing that accounts for the

Chapter 4: Utility Functions


EERC Utility Functions 4-305
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

hierarchical placement of netlist objects. The functions work as if the objects in the netlist
were flat.
• Use the search functions to preselect and identify netlist objects, such as cell instances,
device instances, and nets, across all hierarchy levels based on various search criteria.
The netlist objects that the functions identify retain their hierarchy-specific properties,
such as device instance names and net names. You can use these functions to
bookmark the objects, by using tags, for use in further netlist processing. You can also
save the device instances and nets in the results database for layer generation.
• Use the propagation functions to propagate or transmit previously applied tags or net
properties throughout the netlist.
You can specify the paths through which the tags and properties are propagated.
Propagation works on a fully-hierarchical netlist, as if all the paths were flat in the netlist.
• Use the error reporting functions to report netlist objects as errors.
These functions search for netlist objects throughout the hierarchy, based on the search
criteria, and report them as errors. All of the objects that are reported as errors are
written to the error database.

Hierarchical netlist functions impart EERC its powerful netlist processing capabilities.
Table 4-6 lists the hierarchical netlist functions.
Table 4-6 EERC Hierarchical Netlist Utility Functions

Type Name

Error reporting ndb_report_device()


ndb_report_instance()
ndb_report_net()

Propagation ndb_propagate_net_property()
ndb_propagate_tags()

Search ndb_find_device()
ndb_find_instance()
ndb_find_net()

Iterator Functions
Depending on the rules and their algorithms that you use, you might want to iterate through
the netlist objects that are present inside a netlist. The iterator functions allow you to iterate
through different types of netlist objects.

Chapter 4: Utility Functions


EERC Utility Functions 4-306
IC Validator Reference Manual Version N-2017.12-SP2

The iterator function names indicate the types of input they require and the object iterators
they return. For example, the ndb_net_device_pins() function takes a net object and
returns an iterator for the corresponding device pins connected to that object.
You can use these functions to iterate through the
• Cells in a netlist
• Pins of device instances or cell instances
• Device and cell instance pins connected to nets
• Ports of a cell
• Netlist objects inside a cell
• Double properties associated with a device instance

The iterator functions take a netlist object and iterate through the netlist members that are
associated with the object.
Note:
When querying a cell object (cell definition or master cell) for its member objects, the IC
Validator tool retrieves only those objects that are present and flat in the cell. The tool
does not iterate through objects that are placed hierarchically.
The iterator functions are classified based on the type of netlist object through which the
function iterates. Table 4-7 lists the iterator functions.
Table 4-7 EERC Iterator Utility Functions

Type Name

Members of cells ndb_devices()


ndb_instances()
ndb_nets()
ndb_ports()

Members of cell instances ndb_instance_pins()

Members of device instances ndb_device_double_properties()


ndb_device_pins()

Members of nets ndb_net_device_pins()


ndb_net_instance_pins()

Members of netlists ndb_cells()

Chapter 4: Utility Functions


EERC Utility Functions 4-307
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Netlist Object Functions


The purpose of the netlist object functions is to
• Set important tags and properties on netlist objects
• Retrieve tag and property information for a netlist object
• Retrieve netlist objects associated with a given netlist object
The information that the functions retrieve depends on the object. The names of netlist
object functions indicate the types of input they require and the objects they return. For
example, the ndb_device_name() function takes a device instance object and returns a
string corresponding to the name of the device instance.
You can use these functions to retrieve
• Cells that are present in a netlist
• Objects that are present and flat in a cell
• Names of cells and devices
• Pins of cell instances and device instances
• Properties on nets and device instances
• Nets associated with pins

You can also use these functions to set tags and properties on netlist objects.
The netlist object functions are divided into the following categories:
• Top cell objects only
These functions work only on objects that are placed flat in the top cell of a netlist.
• Any cell
These functions work on any cell and its objects, including the top cell.
• Netlist input
These functions take a netlist and retrieve cells in the netlist. You can also use these
functions to apply tags on netlist objects by using their hierarchical names.

The top cell functions are generally used inside the cache netlist because it has no
hierarchy.
Note:
When the IC Validator tool queries a cell object (cell definition or master cell) for its
member objects, it retrieves only those objects that are present and flat in the cell. The
tool does not retrieve objects that are placed hierarchically.

Chapter 4: Utility Functions


EERC Utility Functions 4-308
IC Validator Reference Manual Version N-2017.12-SP2

Each of the netlist object function categories can be further divided based on the netlist
objects they take as arguments. Table 4-8 lists the netlist object functions by category and
subcategory.
Table 4-8 EERC Netlist Object Utility Functions

Type Name

Top cell objects Cell instance ndb_set_top_cell_instance_tag()


only ndb_top_cell_instance_tag()

Device ndb_set_top_cell_device_tag()
instance ndb_top_cell_device_tag()

Net ndb_set_top_cell_net_property()
ndb_set_top_cell_net_tag()
ndb_top_cell_net_property()
ndb_top_cell_net_tag()

Chapter 4: Utility Functions


EERC Utility Functions 4-309
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 4-8 EERC Netlist Object Utility Functions (Continued)

Type Name

Any cell objects Cell ndb_cell_device()


ndb_cell_instance()
ndb_cell_name()
ndb_cell_net()

Cell instance ndb_instance_cell()


ndb_instance_name()
ndb_instance_pin()

Device ndb_device_double_property()
instance ndb_device_model_name()
ndb_device_name()
ndb_device_pin()
ndb_device_string_property()
ndb_device_type()
ndb_save_device_property()

Net ndb_is_net_port()
ndb_net_double_property()
ndb_net_name()

Pin ndb_pin_device()
ndb_pin_instance()
ndb_pin_name()
ndb_pin_net()

Netlist input Netlist ndb_netlist_cell()


ndb_netlist_top_cell()
ndb_set_device_tag_by_hierarchical_name()
ndb_set_instance_tag_by_hierarchical_name()
ndb_set_net_tag_by_hierarchical_name()

Chapter 4: Utility Functions


EERC Utility Functions 4-310
IC Validator Reference Manual Version N-2017.12-SP2

Error Reporting and Layer Generation Functions


Use error reporting functions to report device instances, cell instances, and nets as errors.
The IC Validator tool writes all of the netlist objects reported as errors to the error database
(PYDB). You can report objects as errors either by using hierarchical netlist functions or by
using functions that work only on objects that are flat in the top cell of a netlist. Table 4-9 lists
the error reporting functions.
Table 4-9 EERC Error Reporting Utility Functions

Type Name

Hierarchical ndb_report_device()
ndb_report_instance()
ndb_report_net()

Top Cell ndb_report_top_cell_device()


ndb_report_top_cell_instance()
ndb_report_top_cell_net()

Use layer generation functions to save device instances and nets in the results database for
other functions that perform layer generation later in the flow. You can save the objects by
using hierarchical netlist functions or by using functions that work only on objects that are
flat in the top cell of a netlist. Table 4-10 lists the layer generation functions.
Table 4-10 EERC Layer Generation Utility Functions

Type Name

Hierarchical ndb_find_device()
ndb_find_net()

Top Cell ndb_save_top_cell_device()


ndb_save_top_cell_device_list()
ndb_save_top_cell_net()

Chapter 4: Utility Functions


EERC Utility Functions 4-311
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Functions Listed by Input Objects


Table 4-11 lists the functions based only on their input arguments, irrespective of their
semantics.
Table 4-11 EERC Input Object Utility Functions

Input Object Type Function

Cell object ndb_cell_device()


ndb_cell_instance()
ndb_cell_name()
ndb_cell_net()
ndb_devices()
ndb_instances()
ndb_nets()
ndb_ports()
ndb_total_resistance()

Cell instance object ndb_instance_cell()


ndb_instance_name()
ndb_instance_pin()
ndb_instance_pins()
ndb_report_top_cell_instance()
ndb_set_top_cell_instance_tag()
ndb_top_cell_instance_tag()

Chapter 4: Utility Functions


EERC Utility Functions 4-312
IC Validator Reference Manual Version N-2017.12-SP2

Table 4-11 EERC Input Object Utility Functions (Continued)

Input Object Type Function

Device object ndb_device_double_properties()


ndb_device_double_property()
ndb_device_model_name()
ndb_device_name()
ndb_device_pin()
ndb_device_pins()
ndb_device_string_property()
ndb_device_type()
ndb_report_top_cell_device()
ndb_save_device_property()
ndb_save_top_cell_device()
ndb_save_top_cell_device_list()
ndb_set_top_cell_device_tag()
ndb_top_cell_device_tag()

Net object ndb_is_net_port()


ndb_net_device_pins()
ndb_net_double_property()
ndb_net_instance_pins()
ndb_net_name()
ndb_report_top_cell_net()
ndb_save_top_cell_net()
ndb_set_top_cell_net_property()
ndb_set_top_cell_net_tag()
ndb_top_cell_net_property()
ndb_top_cell_net_tag()
ndb_total_resistance()

Chapter 4: Utility Functions


EERC Utility Functions 4-313
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table 4-11 EERC Input Object Utility Functions (Continued)

Input Object Type Function

Netlist ndb_cache_to_netlist()
ndb_cells()
ndb_debug_netlist()
ndb_debug_snapshot()
ndb_find_device()
ndb_find_instance()
ndb_find_net()
ndb_get_ground_net_names()
ndb_get_netlist()
ndb_get_netlist_attribute()
ndb_get_power_net_names()
ndb_import_tags_from_cache_netlist()
ndb_netlist_cell()
ndb_netlist_top_cell()
ndb_propagate_net_property()
ndb_propagate_tags()
ndb_remove_tags()
ndb_report_device()
ndb_report_instance()
ndb_report_net()
ndb_reset_cache()
ndb_save_netlist()
ndb_set_device_tag_by_hierarchical_name()
ndb_set_instance_tag_by_hierarchical_name()
ndb_set_net_tag_by_hierarchical_name()
ndb_set_netlist_attribute()
ndb_sum_device_values()

Pin object ndb_pin_device()


ndb_pin_instance()
ndb_pin_name()
ndb_pin_net()

String ndb_is_selected_rule()

Chapter 4: Utility Functions


EERC Utility Functions 4-314
IC Validator Reference Manual Version N-2017.12-SP2

ndb_cache_to_netlist()
Takes a netlist containing objects marked for caching by the functions like
ndb_find_device(), ndb_find_net(), or ndb_find_instance(), and returns a flat netlist
containing all of the cached objects. These objects retain their hierarchical names and any
associated properties or tags.
This function resets all cache marks in the input netlist, so another
ndb_cache_to_netlist() function following it returns an empty netlist unless new objects
have been marked for caching.

Syntax
ndb_cache_to_netlist(
netlist = ndb_netlist_t
)

Returns
ndb_netlist_t

Example
In this example, the IC Validator tool tags and caches the supply nets and creates the cache
netlist. Then, the tool loops over the nets in the cache netlist and writes their names to the
run_details/BLOCK.sum file.
power_supplies = ["AVDD", "DVDD"]
ground_supplies = ["VSS", "GND"]

ndb_find_net(nldb, name_check=power_supplies, add_tags=["power"],


cache=True)
ndb_find_net(nldb, name_check=ground_supplies, add_tags=["ground"],
cache=True)

cache_netlist = ndb_cache_to_netlist(nldb)
cache_cell = ndb_netlist_top_cell(cache_netlist)

for snet in ndb_nets(cache_cell):


if ndb_top_cell_net_tag(snet, "power"):
print("Power net name = %s" % ndb_net_name(snet))
elif ndb_top_cell_net_tag(snet, "ground"):
print("Ground net name = %s" % ndb_net_name(snet))

ndb_cell_device()
Looks for the specified device in a given cell, and returns a tuple that consists of a Boolean,
indicating whether the device was found, and the device object, if it was found.

Chapter 4: Utility Functions


EERC Utility Functions 4-315
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
This function does not work hierarchically. It retrieves only the devices that are placed flat
inside the given cell. It does not retrieve any devices from child cell instances inside the
cell.

Syntax
ndb_cell_device(
cell = ndb_cell_t,
device_name = "string"
)

Returns
(Boolean, ndb_device_t)

Example
This example looks for a device with the instance name M23 and prints a message if it finds
the device.
(found, edevice) = ndb_cell_device(cell, "M23")
if found:
print("exclude this device from the check.
The name of the device is" ndb_device_name(edevice ))

ndb_cell_instance()
Looks for the specified child cell instance in a given parent cell, and returns a tuple that
consists of a Boolean, indicating whether the instance was found, and the instance object, if
it was found.
Note:
This function does not work hierarchically. It retrieves only the instances that are placed
flat inside the given cell. It does not retrieve any instances from child cell instances inside
the cell.

Syntax
ndb_cell_instance(
cell = ndb_cell_t,
instance_name = "string"
)

Returns
(Boolean, ndb_instance_t)

Chapter 4: Utility Functions


EERC Utility Functions 4-316
IC Validator Reference Manual Version N-2017.12-SP2

Example
This example looks for an instance named X1 and prints a message if it finds the instance.
(found, einst) = ndb_cell_instance(cell, "X1")
if found:
print("exclude this cell instance from the check.
The instance name is" ndb_instance_name(einst))

ndb_cell_name()
Takes a cell object and returns its name as a string. This cell name is the name of the cell
master or definition, not an instance name.

Syntax
ndb_cell_name(
cell = ndb_cell_t
)

Returns
string

Example
This example takes the given cell object and returns its name as a string.
cell_name = ndb_cell_name(cell)

ndb_cell_net()
Looks for the specified net in a given cell, and returns a tuple that consists of a Boolean,
indicating whether the net was found, and the net object, if it was found.
Note:
This function does not work hierarchically. It retrieves only the nets that are placed flat
inside the given cell. It does not retrieve any nets from child cell instances inside the cell.

Syntax
ndb_cell_net(
cell = ndb_cell_t,
net_name = "string"
)

Returns
(Boolean, ndb_net_t)

Chapter 4: Utility Functions


EERC Utility Functions 4-317
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
This example looks for the net named lsf_in and prints a message if it finds the net.
(found, enet) = ndb_cell_net(cell, "lsf_in")
if found:
print("exclude this net from the check.
The net name is " ndb_net_name(enet))

ndb_cells()
Returns an iterator for the cells in the given netlist. The cells are in top down order in the
netlist hierarchy.

Syntax
ndb_cells(
netlist = ndb_netlist_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the cells in the given netlist and print
the name of each cell.
for cell in ndb_cells(nldb):
cname = ndb_cell_name(cell)
print("Cell: %s" % cname)

ndb_debug_netlist()
Writes a SPICE file, representing a given netlist object, in the run_details/eerc_debug
directory.

Syntax
ndb_debug_netlist(
netlist = ndb_netlist_t,
file_name = "string"
)

Returns
void

Chapter 4: Utility Functions


EERC Utility Functions 4-318
IC Validator Reference Manual Version N-2017.12-SP2

Example
In this example, a version of the working netlist in SPICE format is written to run_details/
eerc_debug/debug_netlist.sp.
ndb_debug_netlist(nldb, "debug_netlist.sp")

ndb_debug_snapshot()
Saves a copy of a given netlist to a text file in the run_details/eerc_debug directory for
debugging purposes. This file contains all of the objects that have one or more tags that are
not listed in the exclude_tags argument. The netlist objects are grouped by cell and
annotated with either an N for net or a D for device.

Syntax
ndb_debug_snapshot(
netlist = ndb_netlist_t,
file_name = "string",
exclude_tags = ["string", ...], # optional
print_net_properties = True | False, # optional
print_cached = True | False # optional
)

Returns
void

Arguments
netlist
Required. Specifies the input netlist that you want to debug.

file_name
Required. Specifies the name of the output file containing the netlist objects that the
function saves in the run_details/eerc_debug directory.

exclude_tags
Optional. Specifies the tags to be excluded from the output file. Only netlist objects with
one or more tags that have not been excluded are included in the file. By default, each
object in the file includes all of the tags that are associated with it.

print_net_properties
Optional. Controls whether double properties associated with the nets in the output file
are included in the file. The default is False, which means no net double properties are
included in the file.

Chapter 4: Utility Functions


EERC Utility Functions 4-319
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

print_cached
Optional. Controls whether any netlist object in the output file that has been marked to
cache is annotated to that effect. The default is False.
Note:
When this option is set to True, the ndb_debug_snapshot() function must run before
the ndb_cache_to_netlist() function for the given netlist. Otherwise, the cache
marks are reset and no cache information is available to print.

Example
This example saves a version of the working netlist in run_details/eerc_debug/
debug_snapshot.txt. The “power” and “skip” tags are not annotated on any object in the file.
ndb_debug_snapshot(nldb, "debug_snapshot.txt",
exclude_tags=["power","skip"])

ndb_device_double_properties()
Returns an iterator for the double properties of the given device, where each iterator
represents a tuple containing the property name and a double value. The properties are in
random order.

Syntax
ndb_device_double_properties(
device = ndb_device_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the double properties of the given
device and print the name and value of each property.
for (prop_name, prop_val) in ndb_device_double_properties(device):
print("prop_name = %s, prop_val = %g" % (prop_name, prop_val))

ndb_device_double_property()
Looks for the specified property with a double value in a given device. Returns a tuple that
consists of a Boolean, indicating whether the property was found, and the property value, if
the property was found.

Chapter 4: Utility Functions


EERC Utility Functions 4-320
IC Validator Reference Manual Version N-2017.12-SP2

Note:
The device property is passed to the function as a string argument, not as an IC Validator
enumerated type. The properties of devices can be either present in the input netlist or
assigned to the devices during netlist processing. The properties are not specific to the
IC Validator tool. For example, two netlists can specify the length property of the device
even though one netlist has the device length “L” and the other has “Length.”

Syntax
ndb_device_double_property(
device = ndb_device_t,
property_name = "string"
)

Returns
(Boolean, double)

Example
In the following example, the value of the length property from a MOS device (“L” in the input
netlist) is retrieved if the property is found, or an error is reported if the property is not found.
(rcode, l_val) = ndb_device_double_property(mos_device, "L")
if not rcode:
ndb_report_top_cell_device(mos_device,
comment="device missing length property: %s" %
ndb_device_name(mos_device))

ndb_device_model_name()
Returns the model name of a given device object. For example, suppose a SPICE file
contains the following line:
M23 VDD in out VDD nch L=1um W=2um
In this example, the device model name is nch and the device instance name is M23. The
ndb_device_model_name() function returns device model name, nch.

Syntax
ndb_device_model_name(
device = ndb_device_t
)

Returns
string

Chapter 4: Utility Functions


EERC Utility Functions 4-321
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
The following example shows how to print the model and instance names of the specified
device:
model_name = ndb_device_model_name(mos_dev)
inst_name = ndb_device_name(mos_dev)
print("device instance %s has model name %s" % (inst_name, model_name))

ndb_device_name()
Returns the instance name of the specified device object. For example, suppose a SPICE
file contains the following line:
M23 VDD in out VDD nch L=1um W=2um
In this example, the device instance name is M23 and the device model name is nch. The
ndb_device_name() function returns the device instance name, M23.

Syntax
ndb_device_name(
device = ndb_device_t
)

Returns
string

Example
The following example shows how to print the instance and model names of the specified
device:
model_name = ndb_device_model_name(mos_dev)
inst_name = ndb_device_name(mos_dev)
print("device instance %s has model name %s" % (inst_name, model_name))

ndb_device_pin()
Looks for the specified pin on the given device, and returns a tuple that consists of a
Boolean, indicating whether the pin was found, and the pin object, if it was found.
The pin names can be standard IC Validator pin names for devices that are represented by
standard types in the netlist. If the devices are represented by subcircuits in the netlist and
are mapped to a standard device type, the pin names can be either the netlist names or
standard IC Validator pin names. The IC Validator tool maps the subcircuit pin names to
standard IC Validator pin names based on the pin order for standard devices in SPICE.

Chapter 4: Utility Functions


EERC Utility Functions 4-322
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
ndb_device_pin(
device = ndb_device_t,
pin_name = "string"
)

Returns
(Boolean, ndb_pin_t)

Example
In this example, the IC Validator tool looks for the pin named GATE. If it finds the pin, the tool
gets the net connected to the pin.
(found, gpin) = ndb_device_pin(mos_dev, "GATE")
if found:
gnet = ndb_pin_net(gpin)
else:
exit("MOS device %s is missing the GATE pin!" %
ndb_device_name(mos_dev))

ndb_device_pins()
Returns an iterator for the pins of the given device. The pins are in random order.

Syntax
ndb_device_pins(
device = ndb_device_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the pins of the given device and print
the name of each pin.
for dpin in ndb_device_pins(device):
pname = ndb_pin_name(dpin)
print("Device pin: %s" % pname)

Chapter 4: Utility Functions


EERC Utility Functions 4-323
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_device_string_property()
Looks for the specified property with a string value on a given device. Returns a tuple that
consists of a Boolean, indicating whether the property was found, and the property value, if
the property was found.
Note:
Although a tag is a string, you cannot use this function to retrieve the tag associated with
the device. All device properties are name-value pairs associated with a device. In this
case, the value is a string.

Syntax
ndb_device_string_property(
device = ndb_device_t,
property_name = "string"
)

Returns
(Boolean, string)

Example
This example shows how to retrieve the value of the bulk type property from a resistor
device or report an error if the device is not found.
(rcode, bulk) = ndb_device_string_property(res_device, "btype")
if not rcode:
ndb_report_top_cell_device(res_device,
comment="device missing bulk type property: %s" %
ndb_device_name(res_device))
else:
print("resistor bulk type: %s" % bulk)

ndb_device_type()
Returns the device type code for the specified device. This code represents one of the
following device types: NMOS, PMOS, NPN, PNP, PN, NP, RESISTOR, CAPACITOR, INDUCTOR,
GENERIC, MOSFET, JUNCTION_DIODE, or BIPOLAR_TRANSISTOR. You set device types by
using the device_type_setting or compare_state argument in the eerc_setup()
function in the top-level runset file.

Syntax
ndb_device_type(
device = ndb_device_t
)

Chapter 4: Utility Functions


EERC Utility Functions 4-324
IC Validator Reference Manual Version N-2017.12-SP2

Returns
device type code

Example
This example shows how to cache a set of MOSFET devices, and then loop over them to
count the NMOS-type devices.
The PXL code is in eerc.rs:
orig_netlist_db = eerc_setup (
netlist_source = LAYOUT,
layout_netlist = input_netlist_db,
device_type_setting = {mos = {nmos = nmos_models, pmos =
pmos_models,undefined_implant_type = ABORT}});

The Python code is in check.py:


ndb_find_device(nldb, MOSFET, tag_check="valid_mos", cache=True)

cache_cell = ndb_netlist_top_cell(ndb_cache_to_netlist(nldb))
num_nmos = 0
for tdevice in ndb_devices(cache_cell):
if ndb_device_type(tdevice) == NMOS:
num_nmos += 1

See Also
eerc_setup()

ndb_devices()
Returns an iterator for the devices in the given cell. The devices are in random order.
Note:
This function does not iterate through devices hierarchically. It iterates only those
devices that are placed flat inside the given cell. It does not iterate through any devices
in child cell instances inside the cell.

Syntax
ndb_devices(
cell = ndb_cell_t
)

Returns
iterator

Chapter 4: Utility Functions


EERC Utility Functions 4-325
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
The following example shows how to loop over all of the devices in the given cell and print
the name of each device.
for device in ndb_devices(cell):
dname = ndb_device_name(device)
print("Device: %s" % dname)

ndb_find_device()
The ndb_find_device() function selects devices that meet a set of criteria and performs
one or more tasks with the selected devices. These tasks can include
• Adding one or more tags to the selected devices
• Marking the devices for copying to a cache netlist
• Saving the devices in the results database for layer creation

Use at least one of these tasks in each ndb_find_device() function.


Device selection works on a fully hierarchical netlist, applying the specified selection criteria
to each device in the design as if the netlist were flat. Any instance-specific criteria are
handled automatically without flattening the devices.
The selection criteria include
• The device type and model name
• Previously-applied tags
• Connectivity associated with the device pins
• The cell that contains the device
• The use of a callback function that has access to property and other information related
to the device

Devices are selected that meet all of the specified criteria. In other words, an implicit
Boolean AND exists between all of the selection criteria
For simple cases, the power of the available selection criteria can enable a single
ndb_find_device() function to select all of the desired devices.

In more complex cases, you can use a series of ndb_find_device() and ndb_find_net()
functions to select previously-tagged devices or nets and apply new tags until the desired
set of devices or nets has been identified. Use this method to recognize a set of circuitry by
its topology. The number of ndb_find_device() and ndb_find_net() functions that you
might need to achieve this recognition depends on the complexity of the topology.

Chapter 4: Utility Functions


EERC Utility Functions 4-326
IC Validator Reference Manual Version N-2017.12-SP2

The ndb_find_device() function returns a Boolean indicating whether any devices were
selected. Depending on the arguments that you specify, the action that can result from a
particular ndb_find_device() function call can include assigning new tags, marking the
devices for the cache netlist, and saving the devices for later layer generation.

Syntax
ndb_find_device(
netlist = ndb_netlist_t,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC | MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,
model_names = ["string", ...], # optional
tag_check = "string", # optional
check_function = function, # optional
pins = [
ndb_pin_check(
pin_names = ["string", ...],
condition = ALL | ANY | SAME_NET, # optional
tag_check = "string", # optional
connections = "string" # optional
),
...], # optional
holding_cell =
ndb_holding_cell(
cell_names = ["string", ...], # optional
tag_check = "string", # optional
include_descendant_cells = True | False # optional
), # optional
add_tags = ["string", ...], # optional
cache = True | False, # optional
save = True | False # optional
)

Returns
Boolean

Arguments
netlist
Required. Specifies the input netlist for device selection.

device_type
Required. Specifies the device type of the devices to be checked. For information about
setting device types, see eerc_setup().
❍ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.

Chapter 4: Utility Functions


EERC Utility Functions 4-327
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated with


the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
❍ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.

model_names
Optional. Specifies a list of the device model names to be considered. You can use the *
and ! wildcard characters to specify device names. Selected devices must have one of
these names. By default, devices are selected regardless of their model names. For
information about specifying model names for devices, see eerc_setup().

tag_check
Optional. Specifies a string expression to control device selection. The expression must
evaluate to True for a device to be selected.
The string expression uses previously applied tags to select devices. It can include the
!, ||, and && logic operators and can use ( and ) for grouping. The ! operator has the
highest precedence, after which the || and && operators are evaluated from left to right.

check_function
Optional. Specifies the name of a user-defined Python function for device selection,
which is passed as input to the check_function argument. This function must take a
single argument of type ndb_device_t and return a Boolean. A device can be selected
only when this callback function returns the value True.
This function can call any EERC utility function that takes a device object as an
argument. The function is most often used to check device properties.

pins
Optional. Defines a list of connectivity criteria for device selection by using a list of
ndb_pin_check() methods that specify the criteria. This criteria is related to the nets
associated with the device pins. An implicit Boolean AND between each
ndb_pin_check() method ensures that devices can be selected only when they meet all
of the listed criteria.
The ndb_pin_check() method returns the connectivity criteria data structures used by
the pins argument. Note that ndb_pin_check() is a part of the EERC hierarchical
functions; it is not a utility function.
Each ndb_pin_check() method has the following arguments:
❍ pin_names. Required. Defines the list of device pins. The ndb_find_device()
function checks the nets associated with these pins. You can specify individual pin
names or use the wildcard character (*) to specify all pins. No other wildcard use is
permitted.

Chapter 4: Utility Functions


EERC Utility Functions 4-328
IC Validator Reference Manual Version N-2017.12-SP2

For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard device
type, the pin names can be the netlist names or IC Validator standard pin names. The
IC Validator tool maps the subcircuit pin names to IC Validator standard pin names
based on the pin order for standard devices in SPICE.
❍ condition. Optional. Specifies the type of pin-net connectivity. The value must be
ALL, ANY, or SAME_NET. The default is ANY.

■ ALL. Every net associated with the specified device pins must meet any
tag_check or connections conditions for the device to be selected.

■ ANY. One or more of the nets associated with the specified device pins must meet
any tag_check or connections conditions for the device to be selected.
■ SAME_NET. All of the specified device pins must be connected to the same net and
the net must meet any tag_check or connections conditions for the device to be
selected.
❍ tag_check. Optional. Specifies a string expression to be applied to the nets
associated with the specified pins. The expression must return True for a device to
be selected.
The string expression uses previously applied net tags to select devices. It can
include the !, ||, and && logic operators and can use ( and ) for grouping. The !
operator has the highest precedence, after which the || and && operators are
evaluated from left to right.
❍ connections. Optional. Specifies the numerical constraint applied to the number of
device connections on the specified nets associated with the specified device pins.
For each net, the count includes all device pins of any device type connected to the
net throughout the hierarchy.
The constraint must take one of the following forms: <x, <x>y, >y<x, <=x, <x>=y,
>y<=x, >x, <=x>y, >=y<x, >=x, <=x >=y, >=y<=x, or ==x, where x and y are
nonnegative integers. Note that <0 is not an allowed constraint. A double-ended
constraint, such as <x>y, should be read as “less than x and greater than y.”
When the connections option is not specified, the default constraint is >=0.

holding_cell
Optional. Specifies a set of cells or cell instances in which any selected devices must
exist. The holding_cell argument uses the ndb_holding_cell() method to check for
holding cell criteria.

Chapter 4: Utility Functions


EERC Utility Functions 4-329
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The ndb_holding_cell() method returns the cell or cell instance data structures used
by the holding_cell argument. Note that ndb_holding_cell() is a part of the EERC
hierarchical functions; it is not a utility function.
Each ndb_holding_cell() method has the following arguments:
❍ cell_names. Optional. Defines a list of cell names in which the function looks for
devices. You can use the * and ! wildcard characters to specify cell names. A device
must be in one of these cells to be selected.
❍ tag_check. Optional. Specifies a string expression to be applied to the cell instances
whose master is in the cell_names list. The expression must return True for a device
in that instance to be selected.
The string expression uses previously applied tags to select devices. It can include
the !, ||, and && logic operators and can use ( and ) for grouping.
❍ include_descendant_cells. Optional. Controls which cells a device can be located
in to be selected. The default is False.
True. A device can be selected if it is in a cell or cell instance that meets the specified
conditions, or in any of its child cells.
False. A device can be can be selected only if it is in a specified cell or cell instance.

add_tags
Optional. Defines a list of the tags to be attached to all of the selected devices.

cache
Optional. Controls whether all of the selected devices are marked for copying to the
cache netlist by the next ndb_cache_to_netlist() function call. The default is False.

save
Optional. Controls whether all of the selected devices are copied to the results database
for the eerc_create_device_layer() function, which creates a shape associated with
the devices. The default is False.

Examples
Example 1
This example shows how to select all of the MOS devices where the GATE pin is connected
to a net with only a single connection, tag these devices with floating_gate tags, and
report them as errors.
ndb_find_device(nldb, MOSFET,
pins = [ndb_pin_check(["GATE"], connections="==1")],
add_tags = ["floating_gate"]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-330
IC Validator Reference Manual Version N-2017.12-SP2

ndb_report_device(nldb, MOSFET, tag_check="floating_gate",


comment = "MOS device GATE net is floating"
)

Example 2
This example shows how to select NMOS devices with the following characteristics:
• The SRC pin is connected to a ground net
• The device is not contained in a level-shifter cell
• The GATE pin is in one power domain and the device itself is in another domain

The selected devices are marked to be cached. The tool assumes that all of the supply nets
have been tagged with their name and either power or ground and the supply names have
been propagated through the netlist. The tool also assumes that there is only one level
shifter cell, named “Level_Shifter.”
# define the supply domains
domain1 = ["VDD","VSS"]
domain2 = ["AVDD","GND"]

# use the Python join() function to create the logical expressions


# needed to define the domain constraints
# for example, '&&'.join(domain1) produces the string "VDD && VSS"
ndb_find_device(nldb, NMOS,
tag_check = '&&'.join(domain2),
pins = [
ndb_pin_check(["SRC","DRN"], tag_check="ground"),
ndb_pin_check(["GATE"], tag_check='&&'.join(domain1))
],
holding_cell =
ndb_holding_cell(["!Level_Shifter"],
include_descendant_cells=True),
cache = True
)

Note that for most netlists, the source and drain pins on MOS devices are swappable. In
such cases, it is important that you allow for this when using connections to those pins as
selection criteria. In this example, when checking that the SRC pin is connected to ground,
both the SRC and DRN pins are specified and the default condition, ANY, is used.
Example 3
This example shows how to find all of the NMOS devices where the BULK pin is not tied to
a ground net and all of the PMOS devices where the BULK pin is not tied to a power net.
# assume all power nets have been tagged with "power"
# find PMOS devices whose BULK terminal is not connected to power
ndb_find_device(nldb, PMOS,
pins = [ndb_pin_check(["BULK"], tag_check="!power")],

Chapter 4: Utility Functions


EERC Utility Functions 4-331
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

add_tags=["bad_pmos"]
)

# report these devices as errors


ndb_report_device(nldb, PMOS, tag_check="bad_pmos",
comment = "PMOS bulk not tied to power"
)

# assume all ground nets have been tagged with "ground"


# find NMOS devices whose BULK terminal is not connected to ground
ndb_find_device(nldb, NMOS,
pins = [ndb_pin_check(["BULK"], tag_check="!ground")],
add_tags=["bad_nmos"]
)

# report these devices as errors


ndb_report_device(nldb, NMOS, tag_check="bad_nmos",
comment = "NMOS bulk not tied to ground"
)

Figure 4-30 and Figure 4-31 show what the results might look like in the IC Validator VUE
tool.
Figure 4-30 NMOS Device With BULK Pin Tied to Power

The BULK pin of NMOS instance x1/x52/M1 is tied to a power net instead of a ground net.

Chapter 4: Utility Functions


EERC Utility Functions 4-332
IC Validator Reference Manual Version N-2017.12-SP2

Figure 4-31 PMOS Device With BULK Pin Tied to Ground

The BULK pin of PMOS instance x1/x52/M2 is tied to a ground net instead of a power net.
Example 4
This example shows how to recognize PMOS differential pair circuits.
Figure 4-32 shows a PMOS differential pair circuit.
Figure 4-32 PMOS Differential Pair Circuit

In this example, the remote block code recognizes and tags the differential pair devices, the
driver device, and the common net. When the devices have been recognized and tagged,
they can undergo further checks.
# assume the power nets have been tagged with "power"
# assume the ground nets have been tagged with "ground"

# find nets which could be the differential pair common node


# the common node will ONLY connect to PMOS sources and drains
ndb_find_net(
nldb,
tag_check = "!power && !ground",

Chapter 4: Utility Functions


EERC Utility Functions 4-333
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device_pins = [
ndb_device_pin_check(PMOS, ["SRC","DRN"], ANY),
ndb_device_pin_check(PMOS, ["GATE","BULK"], NONE),
ndb_device_pin_check(NMOS, ["SRC","GATE","DRN","BULK"], NONE),
ndb_device_pin_check(NPN, ["COLL","BASE","EMIT"], NONE),
ndb_device_pin_check(PNP, ["COLL","BASE","EMIT"], NONE),
ndb_device_pin_check(RESISTOR, ["A","B"], NONE),
ndb_device_pin_check(CAPACITOR, ["A","B"], NONE),
ndb_device_pin_check(INDUCTOR, ["A","B"], NONE),
ndb_device_pin_check(JUNCTION_DIODE, ["ANODE","CATHODE"], NONE),
ndb_device_pin_check(BIPOLAR_TRANSISTOR, ["COLL","BASE","EMIT"],
NONE)
],
add_tags = ["possible_common_net"]
)

# now find PMOS devices with a src/drn on power and the other
# on a possible common net
ndb_find_device(
nldb,
PMOS,
pins = [
ndb_pin_check(["SRC","DRN"], ANY, tag_check="power"),
ndb_pin_check(["SRC","DRN"], ANY, tag_check="possible_common_net")
],
add_tags = ["possible_driver"]
)

# tag possible driver nets ... they connect at least to a diode ANODE
# and a PMOS GATE
ndb_find_net(
nldb,
tag_check = "!power && !ground",
device_pins = [
ndb_device_pin_check(PMOS, ["GATE"]),
ndb_device_pin_check(JUNCTION_DIODE, ["ANODE"])
],
add_tags = ["possible_signal_net"]
)

# tag devices with a src/drn on a possible common net and the


# other side of the device is not power and the gate is connected
# to a possible signal net
ndb_find_device(
nldb,
PMOS,
pins = [
ndb_pin_check(["SRC","DRN"], ALL, tag_check="!power"),
ndb_pin_check(["SRC","DRN"], ANY, tag_check="possible_common_net"),
ndb_pin_check(["GATE"], tag_check="possible_signal_net")
],
add_tags = ["diff_pair"]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-334
IC Validator Reference Manual Version N-2017.12-SP2

# now we can positively identify the common nets


ndb_find_net(
nldb,
tag_check = "possible_common_net",
device_pins = [
ndb_device_pin_check(PMOS, ["SRC","DRN"], tag_check="diff_pair")
],
add_tags = ["common_net"]
)

# and we can positively identify the driver PMOS devices


ndb_find_device(
nldb,
tag_check = "possible_driver",
pins = [ndb_pin_check(["SRC","DRN"], tag_check="common_net")],
add_tags = ["driver_device"]
)

See Also
eerc_create_device_layer()
eerc_create_device_list_layer()
eerc_setup()
ndb_find_instance()
ndb_find_net()
ndb_report_instance()

ndb_find_instance()
The ndb_find_instance() function selects cell instances that meet a set of criteria and
performs one or more tasks with the selected instances. Those tasks can include
• Adding one or more tags to the selected instances
• Marking the selected instances for copying to a cache netlist

Use at least one of these tasks in each ndb_find_instance() function.


Instance selection works on a fully hierarchical netlist, applying the specified selection
criteria to each cell instance in the design as if the netlist were flat. Any instance-specific
criteria are handled automatically without flattening the circuitry.
The selection criteria include
• Cell names
• Previously applied tags
• Nets connected to cell instance pins

Chapter 4: Utility Functions


EERC Utility Functions 4-335
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Holding cells

Instances are selected that meet all of the specified criteria. In other words, an implicit
Boolean AND exists between all of the selection criteria.
The ndb_find_instance() function returns a Boolean indicating whether any devices were
selected. Depending on the arguments that you specify, the action that results from a
particular ndb_find_instance() function call can include assigning new tags and marking
the instances for the cache netlist.

Syntax
ndb_find_instance(
netlist = ndb_netlist_t,
cell_names = ["string", ...],
tag_check = "string", # optional
pins = [
ndb_pin_check(
pin_names = ["string", ...],
condition = ALL | ANY | SAME_NET, # optional
tag_check = "string", # optional
connections = "string" # optional
),
...], # optional
holding_cell =
ndb_holding_cell(
cell_names = ["string", ...], # optional
tag_check = "string", # optional
include_descendant_cells = True | False # optional
),
add_tags = ["string", ...], # optional
cache = True | False # optional
)

Returns
Boolean

Arguments
netlist
Required. Specifies the input netlist for instance selection.

cell_names
Required. Specifies a list of strings that can include the * and ! wildcard characters.
These strings represent the names of the master cells for which instances are selected
(or not selected if you use the ! wildcard character).

Chapter 4: Utility Functions


EERC Utility Functions 4-336
IC Validator Reference Manual Version N-2017.12-SP2

tag_check
Optional. Specifies a string expression to control instance selection. The expression
must evaluate to True for an instance to be selected.
The string expression uses previously applied tags to select cell instances. It can include
the !, ||, and && logic operators and can use ( and ) for grouping.

pins
Optional. Defines a list of connectivity criteria for instance selection by using a list of
ndb_pin_check() methods that specify the criteria. This criteria is related to the nets
associated with the instance pins. An implicit Boolean AND between each
ndb_pin_check() method ensures that instances can be selected only when they meet
all of the listed criteria.
The ndb_pin_check() method returns the connectivity criteria data structures used by
the pins argument. Note that ndb_pin_check() is a part of the EERC hierarchical
functions; it is not a utility function.
Each ndb_pin_check() method has the following arguments:
❍ pin_names. Required. Defines the list of instance pins. The ndb_find_instance()
function checks the nets associated with these pins. You can specify individual pin
names or use the * and ! wildcard characters.
❍ condition. Optional. Specifies the type of pin-net connectivity. The value must be
ALL, ANY, or SAME_NET. The default is ANY.

■ ALL. Every net associated with the specified instance pins must meet any
tag_check or connections conditions for the instance to be selected.

■ ANY. One or more of the nets associated with the specified instance pins must
meet any tag_check or connections conditions for the instance to be selected.
■ SAME_NET. All of the specified instance pins must be connected to the same net
and the net must meet any tag_check or connections conditions for the instance
to be selected.
❍ tag_check. Optional. Specifies a string expression to be applied to the nets
associated with the specified pin names. The expression must return True for an
instance to be selected.
The string expression uses previously applied net tags to select cell instances. It can
include the !, ||, and && logic operators and can use ( and ) for grouping.
❍ connections. Optional. Specifies the numerical constraint applied to the number of
device connections on the nets associated with the specified instance pins. For each
net, the count includes all device pins of any device type connected to the net
throughout the hierarchy.

Chapter 4: Utility Functions


EERC Utility Functions 4-337
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The constraint must take one of the following forms: <x, <x>y, >y<x, <=x, <x>=y,
>y<=x, >x, <=x>y, >=y<x, >=x, <=x >=y, >=y<=x, or ==x, where x and y are
nonnegative integers. Note that <0 is not an allowed constraint. A double-ended
constraint, such as <x>y, should be read as “less than x and greater than y.”
When the connections option is not specified, the default constraint is >=0.

holding_cell
Optional. Specifies a set of cells or cell instances in which any selected instances must
exist. The holding_cell argument uses the ndb_holding_cell() method to check for
holding cell criteria.
The ndb_holding_cell() method returns the cell or cell instance data structures used
by the holding_cell argument. Note that ndb_holding_cell() is a part of the EERC
hierarchical functions; it is not a utility function.
Each ndb_holding_cell() method has the following arguments:
❍ cell_names. Optional. Defines a list of master cell names in which the function looks
for instances. You can use the * and ! wildcard characters to specify cell names. An
instance must be in one of these cells to be selected.
❍ tag_check. Optional. Specifies a string expression to be applied to the cell instances
whose master is in the cell_names list. The expression must return True for an
instance in that instance to be selected.
The string expression uses previously applied tags to select cell instances. It can
include the !, ||, and && logic operators and can use ( and ) for grouping.
❍ include_descendant_cells. Optional. Controls which cells an instance can be
located in to be selected. The default is False.
True. An instance can be selected if it is in a cell or cell instance that meets the
specified conditions, or in any of its child cells.
False. An instance can be can be selected only if it is in a specified cell or cell
instance.

add_tags
Optional. Defines a list of the tags to be attached to all of the selected instances.

cache
Optional. Controls whether all of the selected instances are marked for copying to the
cache netlist by the next ndb_cache_to_netlist() function call. Only the instance itself
is copied to the cache. No contents of the instance are copied. The default is False.

Chapter 4: Utility Functions


EERC Utility Functions 4-338
IC Validator Reference Manual Version N-2017.12-SP2

Examples
In this example, the IC Validator tool selects all inverter cell instances in which the VDD pin is
not connected to a power net or the GND pin is not connected to a ground net, and then
reports these instances as errors.
# assume all power nets have been tagged with "power"
# assume all ground nets have been tagged with "ground"
ndb_find_instance(
netlist = nldb,
cell_names = ["*inv*"],
pins = [ndb_pin_check(["VDD"], tag_check="!power")],
add_tags = ["bad_power"]
)
ndb_find_instance(
netlist = nldb,
cell_names = ["*inv*"],
pins = [ndb_pin_check(["GND"], tag_check="!ground")],
add_tags = ["bad_ground"]
)
ndb_report_instance(
netlist = nldb,
cell_names = ["*inv*"],
tag_check = "bad_power || bad_ground"
comment = "instance has bad supply connection"
)

Note:
The two ndb_find_instance() functions cannot be combined into one function
because you want to have a Boolean OR between the selection criteria and there is an
implicit Boolean AND between selection criteria in a single function.

See Also
ndb_find_device()
ndb_find_net()
ndb_report_instance()

ndb_find_net()
The ndb_find_net() function selects nets that meet a set of criteria and performs one or
more tasks with the selected nets. These tasks can include
• Adding one or more tags to the selected nets
• Marking the nets for copying to a cache netlist
• Saving the nets in the results database for layer creation

Use at least one of these tasks in each ndb_find_net() function.

Chapter 4: Utility Functions


EERC Utility Functions 4-339
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Net selection works on a fully hierarchical netlist, applying the specified selection criteria to
each net in the design as if the netlist were flat. Any instance-specific criteria are handled
automatically without flattening circuitry.
The selection criteria include
• Any previously applied tags
• Any net name, connection count, or connectivity associated with any device or cell
instance pins
• The use of a callback function that has access to property and other information related
to the net

In addition, you can exclude portions of the netlist hierarchy from the selection criteria by
marking certain cells as black boxes.
Nets are selected that meet all of the specified criteria. In other words, an implicit Boolean
AND exists between all specified selection criteria.
For simple cases, the power of the available selection criteria can enable a single
ndb_find_net() function to select all of the desired nets.

In more complex cases, you can use a series of ndb_find_device() and ndb_find_net()
functions to select previously-tagged devices or nets and apply new tags until the desired
set of devices or nets has been identified. Use this method to recognize a set of circuitry by
its topology. The number of ndb_find_device() and ndb_find_net() functions that you
might need to achieve this recognition depends on the complexity of the topology.
The ndb_find_net() function returns a Boolean indicating whether any nets were selected.
Depending on the arguments that you specify, the action that can result from a particular
ndb_find_net() function call can include assigning new tags, marking the nets for the
cache netlist, and saving the nets for later layer generation.

Syntax
ndb_find_net(
netlist = ndb_netlist_t,
tag_check = "string", # optional
name_check = ["string", ...], # optional
connections = # optional
ndb_count_check(
count = "string", # optional
pins = [
ndb_count_device_pin(
device_type = NMOS | PMOS | NPN |
PNP | PN | NP |
RESISTOR | CAPACITOR |
INDUCTOR | GENERIC |
MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,

Chapter 4: Utility Functions


EERC Utility Functions 4-340
IC Validator Reference Manual Version N-2017.12-SP2

pin_names = ["string", ...],


model_names = ["string", ...], # optional
tag_check = "string" # optional
),
...] # optional
)
check_function = function, # optional
device_pins = [
ndb_device_pin_check(
device_type = NMOS | PMOS | NPN | PNP |
PN | NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | MOSFET |
JUNCTION_DIODE | BIPOLAR_TRANSISTOR,
pin_names = ["string", ...],
condition = ALL | ANY | NONE, # optional
model_names = ["string", ...], # optional
tag_check = "string" # optional
),
...], # optional
instance_pins = [
ndb_instance_pin_check(
cell_names = ["string", ...],
pin_names = ["string", ...],
condition = ALL | ANY | NONE, # optional
tag_check = "string" # optional
),
...], # optional
black_box_cell =
ndb_black_box_cell(
cell_names = ["string", ...],
tag_check = "string" # optional
), # optional
add_tags = ["string", ...], # optional
cache = True | False, # optional
save = True | False
)

Returns
Boolean

Arguments
netlist
Required. Specifies the input netlist for net selection.

tag_check
Optional. Specifies a string expression to control net selection. The expression must
evaluate to True for a net to be selected.

Chapter 4: Utility Functions


EERC Utility Functions 4-341
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

The string expression uses previously applied tags to select nets. It can include the !, ||,
and && logic operators and can use ( and ) for grouping.

name_check
Optional. Specifies a list of strings, which can include the * and ! wildcard characters,
that represent the names of the nets to be selected by name (or not selected if you use
the ! wildcard character). When this argument is not specified, all of the nets from the
input netlist are candidates for net selection and will be selected if no other selection
criteria is specified. When specified as an empty list, no nets are selected.
All of the nets in the netlist are represented by their top name, which is the name of the
net at its highest point in the hierarchy. A specified name can be used to select nets
where the master cell is below the top block in the hierarchy if the net has the specified
name in the master cell.
For example, if the name pll_vss is present in the name_check list, the top block in the
netlist contains an instance named XI10 of the cell named inv, and cell inv has a nonport
net named pll_vss, the net can be selected if it meets all of the other criteria in the
ndb_find_net() function.

connections
Optional. Specifies the numerical constraint applied to the number of device pins
connected to a net. The device pins can be selected based on the device types, model
names, and tags applied to the device. The nets that meet this constraint can be selected
if they meet all of the other ndb_find_net() criteria.
The connections argument uses the ndb_count_check() method to retrieve the
device pin connectivity criteria for net selection. You control the device pins used in the
count constraint by specifying a list of ndb_count_device_pin() methods in the
ndb_count_check() method.
The ndb_count_check() method returns the pin count data structures used by the
connections argument. Note that ndb_count_check() is a part of the EERC
hierarchical functions; it is not a utility function.
Each ndb_count_check() method has the following arguments:
❍ count. Optional. Specifies the numerical constraint applied to the number of device
pin connections on a net. For each net, the count includes all of the device pins of the
specified device types connected to the net throughout the hierarchy.
The constraint must take one of the following forms: <x, <x>y, >y<x, <=x, <x>=y,
>y<=x, >x, <=x>y, >=y<x, >=x, <=x >=y, >=y<=x, or ==x, where x and y are
nonnegative integer. Note that <0 is not an allowed constraint. A double-ended
constraint, such as <x>y, should be read as “less than x and greater than y.”
When the connections option is not specified, the default constraint is >=0.

Chapter 4: Utility Functions


EERC Utility Functions 4-342
IC Validator Reference Manual Version N-2017.12-SP2

❍ pins. Optional. Specifies the particular device pins to be included in the count
constraint. The device pins are selected based on device type, model names, and
previously applied tags by using a list of ndb_count_device_pin() methods.
The ndb_count_device_pin() method returns the device pin data structures used
by the pins argument. Note that ndb_pin_check() is a part of the EERC hierarchical
functions; it is not a utility function.
Each ndb_count_device_pin() method has the following arguments:
■ device_type. Required. Specifies the device type of the device pins to be
checked.
Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
For information about specifying device types, see eerc_setup().
■ pin_names. Required. Specifies the device pins to be used in the count
constraint.
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
■ model_names. Optional. Specifies the model names of the devices for which the
pins are considered for the count criteria.
■ tag_check. Optional. Specifies a string expression that uses previously applied
tags to select devices. The expression must evaluate to True for a device pin to
be counted.
The string expression can include the !, ||, and && logic operators and can use (
and ) for grouping.

check_function
Optional. Specifies the name of a user-defined Python function for net selection, which is
passed as input to the check_function argument. This function must take a single
argument of type ndb_net_t and return a Boolean. A net can be selected only when this
callback function returns the value True.

Chapter 4: Utility Functions


EERC Utility Functions 4-343
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This function can call any EERC utility function that takes a net object as an argument.
The function is most often used to check net properties.

device_pins
Optional. Defines a list of device pin connection criteria for net selection by using a list of
ndb_device_pin_check() methods that specify the criteria. An implicit Boolean AND
between ndb_device_pin_check() methods ensures that nets can be selected only
when their device pin connectivity satisfies all of the listed criteria.
The ndb_device_pin_check() method returns the device pin connectivity data
structures used by the device_pins argument. Note that ndb_device_pin_check() is
a part of the EERC hierarchical functions; it is not a utility function.
Each ndb_device_pin_check() method has the following arguments:
❍ device_type. Required. Specifies the device type of the device pins to be checked.
For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_names. Required. Specifies the list of device pins which should be connected to
a net for selection. You can specify individual pin names or use the wildcard character
(*) to specify all pins. No other wildcard use is permitted.
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard device
type, the pin names can be the netlist names or IC Validator standard pin names. The
IC Validator tool maps the subcircuit pin names to IC Validator standard pin names
based on the pin order for standard devices in SPICE.
❍ condition. Optional. Specifies which pins from the pin_names list must be
connected to the net to enable net selection. The value must be ALL, ANY, or NONE.
The default is ANY.
■ ALL. A net must connect to every specified pin to be selected.

■ ANY. A net must connect to one or more of the specified pins to be selected.

■ NONE. A net can be selected if it does not connect to any of the specified pins.

Chapter 4: Utility Functions


EERC Utility Functions 4-344
IC Validator Reference Manual Version N-2017.12-SP2

❍ model_names Optional. Specifies a list of the device model names. Pins must be
associated with one of these model names to be selected. By default, device pins are
selected regardless of their model names.
❍ tag_check Optional. Specifies a string expression to be applied to the devices
associated with the specified pin names. Previously applied tags are used to select
devices. The expression must return True for a net to be selected.
The string expression can include the !, ||, and && logic operators and can use ( and
) for grouping.

instance_pins
Optional. Specifies a list of instance pin connection criteria for net selection by using a list
of ndb_instance_pin_check() methods that specify the criteria. An implicit Boolean
AND between ndb_instance_pin_check() functions ensures that nets can be selected
only when their cell instance pin connectivity satisfies all of the listed criteria.
The ndb_instance_pin_check() method returns the cell instance pin connection data
structures used by the instance_pins argument. Note that
ndb_instance_pin_check() is a part of the EERC hierarchical functions; it is not a
utility function.
Each ndb_instance_pin_check() method has the following arguments:
❍ cell_names. Required. Specifies the names of the cells where pins are used for net
selection. The * and ! wildcard characters are permitted.
❍ pin_names. Required. Specifies the list of cell instance pins to be connected to a net
for selection. You can specify individual pin names or use the * and ! wildcard
characters.
❍ condition. Optional. Specifies which pins from the pin_names list must be
connected to the net to enable net selection. The value must be ALL, ANY, or NONE.
The default is ANY.
■ ALL. A net must connect to every specified pin to be selected.

■ ANY. A net must connect to one or more of the specified pins to be selected.

■ NONE. A net can be selected if it does not connect to any of the specified pins.

❍ tag_check. Optional. Specifies a string expression to be applied to the instances


associated with the specified pin names. Previously applied tags are used to select
cell instances. The expression must return True for a net to be selected.
The string expression can include the !, ||, and && logic operators and can use ( and
) for grouping.

Chapter 4: Utility Functions


EERC Utility Functions 4-345
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

black_box_cell
Optional. Defines a set of cells or cell instances to be ignored by the ndb_find_net()
function. The function applies the selection criteria as if these cells and cell instances are
not present in the netlist. The black_box_cell argument uses the
ndb_black_box_cell() method to specify the cells or cell instances.
The ndb_black_box_cell() method returns the cell name data structures used by the
black_box_cell argument. Note that ndb_black_box_cell() is a part of the EERC
hierarchical functions; it is not a utility function.
Each ndb_black_box_cell() method has the following arguments:
❍ cell_names. Optional. Specifies the names of the master cells to be ignored during
net selection. The * and ! wildcard characters are permitted.
Nets in these cells or instances are not selected, and the specified connection criteria
is not applied to objects in these cells or instances or in their child cells or instances.
❍ tag_check. Optional. Specifies a string expression to be applied to the cell instances
associated with a master cell in the cell_names list. Previously applied tags are used
to select cell instances. The expression must return True for an instance to be
recognized as a black box.
The string expression can include the !, ||, and && logic operators and can use ( and
) for grouping.

add_tags
Optional. Defines a list of the tags to be attached to all of the selected nets.

cache
Optional. Controls whether all of the selected nets are marked for copying to the cache
netlist by the next ndb_cache_to_netlist() function call. The default is False.

save
Optional. Controls whether all of the selected nets are copied to the results database for
the eerc_create_net_layer() function, which creates shapes associated with the
nets. The default is False.

Examples
1. This example shows how to select nets with only a single device pin connection, mark
them with the single_connect_net tag, and report them as errors.

Chapter 4: Utility Functions


EERC Utility Functions 4-346
IC Validator Reference Manual Version N-2017.12-SP2

ndb_find_net(
netlist = nldb,
connections = ndb_count_check("==1"),
add_tags = ["single_connect_net"]
)
ndb_report_net(
netlist = nldb,
tag_check = "single_connect_net",
comment = "net has only one connection"
)

2. This example shows how to select nets with the following characteristics, mark them with
the secondary_net tag, and cache them for further processing:
❍ Is connected to at least one ESD resistor terminal
❍ Is connected to at least one PMOS gate pin
❍ Is connected to at least one NMOS gate pin
❍ Is connected to at least one ESD diode ANODE
❍ Is connected to at least one ESD diode CATHODE
❍ Ignores all nets and connections in and under the core_logic cell
ndb_find_net(
netlist = nldb,
device_pins = [
ndb_device_pin_check(device_type = RESISTOR,
pin_names = ["A","B"], condition = ANY,
model_names = ["esd_res"]),
ndb_device_pin_check(device_type = PMOS, pin_names = ["GATE"]),
ndb_device_pin_check(device_type = NMOS, pin_names = ["GATE"]),
ndb_device_pin_check(device_type = JUNCTION_DIODE,
pin_names = ["ANODE"], condition = ANY,
model_names = ["esd_diode"]),
ndb_device_pin_check(device_type = JUNCTION_DIODE,
pin_names = ["CATHODE"], condition = ANY,
model_names = ["esd_diode"])
],
black_box_cell = ndb_black_box_cell(cell_name = ["core_logic"]),
add_tags = ["secondary_net"],
cache = True
)

3. This example shows how to select nets that have the vmax double property and save the
nets where the vmax value equals 3.3 for later layer generation.

Chapter 4: Utility Functions


EERC Utility Functions 4-347
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

def check_prop(net):
(rcode, vmax_value) = ndb_net_double_property(net, "vmax")
if rcode:
if vmax_value == 3.3: return True
return False

ndb_find_net(nldb, check_function=check_prop, save=True)

4. This example shows how to recognize PMOS differential pair circuits.


# assume the power nets have been tagged with "power"
# assume the ground nets have been tagged with "ground"

# find nets which could be the differential pair common node


# the common node will ONLY connect to PMOS sources and drains
ndb_find_net(
nldb,
tag_check = "!power && !ground",
device_pins = [
ndb_device_pin_check(device_type = PMOS,
pin_names = ["SRC","DRN"], condition = ANY),
ndb_device_pin_check(device_type = PMOS,
pin_names = ["GATE","BULK"], condition = NONE),
ndb_device_pin_check(device_type = NMOS,
pin_names = ["SRC","GATE","DRN","BULK"], condition = NONE),
ndb_device_pin_check(device_type = NPN,
pin_names = ["COLL","BASE","EMIT"], condition = NONE),
ndb_device_pin_check(device_type = PNP,
pin_names = ["COLL","BASE","EMIT"], condition = NONE),
ndb_device_pin_check(device_type = RESISTOR,
pin_names = ["A","B"], condition = NONE),
ndb_device_pin_check(device_type = CAPACITOR,
pin_names = ["A","B"], condition = NONE),
ndb_device_pin_check(device_type = INDUCTOR,
pin_names = ["A","B"], condition = NONE),
ndb_device_pin_check(device_type = JUNCTION_DIODE,
pin_names = ["ANODE","CATHODE"], condition = NONE),
ndb_device_pin_check(device_type = BIPOLAR_TRANSISTOR,
pin_names = ["COLL","BASE","EMIT"], condition = NONE)
],
add_tags = ["possible_common_net"]
)

# now find PMOS devices with a src/drn on power and the other
# on a possible common net
ndb_find_device(
nldb,
PMOS,
pins = [
ndb_pin_check(pin_names = ["SRC","DRN"], condition = ANY,
tag_check="power"),
ndb_pin_check(pin_names = ["SRC","DRN"], condition = ANY,
tag_check="possible_common_net")

Chapter 4: Utility Functions


EERC Utility Functions 4-348
IC Validator Reference Manual Version N-2017.12-SP2

],
add_tags = ["possible_driver"]
)

# tag possible driver nets ... they connect at least to a diode ANODE
# and a PMOS GATE
ndb_find_net(
nldb,
tag_check = "!power && !ground",
device_pins = [
ndb_device_pin_check(device_type = PMOS, pin_names = ["GATE"]),
ndb_device_pin_check(device_type = JUNCTION_DIODE,
pin_names = ["ANODE"])
],
add_tags = ["possible_signal_net"]
)

# tag devices with a src/drn on a possible common net and the


# other side of the device is not power and the gate is connected
# to a possible signal net
ndb_find_device(
nldb,
PMOS,
pins = [
ndb_pin_check(pin_names = ["SRC","DRN"], condition = ALL,
tag_check="!power"),
ndb_pin_check(pin_names = ["SRC","DRN"], condition = ANY,
tag_check="possible_common_net"),
ndb_pin_check(pin_names = ["GATE"],
tag_check="possible_signal_net")
],
add_tags = ["diff_pair"]
)

# now we can positively identify the common nets


ndb_find_net(
nldb,
tag_check = "possible_common_net",
device_pins = [
ndb_device_pin_check(device_type = PMOS,
pin_names = ["SRC","DRN"], tag_check="diff_pair")
],
add_tags = ["common_net"]
)

# and we can positively identify the driver PMOS devices


ndb_find_device(
nldb,
tag_check = "possible_driver",
pins = [ndb_pin_check(pin_names = ["SRC","DRN"],
tag_check="common_net")],
add_tags = ["driver_device"]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-349
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This remote block code recognizes and tags the differential pair devices, the driver
device, and the common net. When these devices have been recognized and tagged,
they can undergo further checks.

See Also
eerc_create_net_layer()
eerc_setup()
ndb_find_device()
ndb_find_instance()
ndb_find_net()

ndb_get_ground_net_names()
Retrieves the list of ground net names from the given netlist that match the ground_nets
argument in the eerc_setup() function. Only the names of nets that are present in the
netlist are returned.

Syntax
ndb_get_ground_net_names(
netlist = ndb_netlist_t
)

Returns
list of string

Example
This example shows how to retrieve the list of specified ground net names in the current
netlist and apply the “ground” tag to each net named in the list.
The PXL code is in eerc.rs:
eerc_setup ( netlist_source = LAYOUT,
layout_netlist = input_netlist_db,
power_nets = power_supplies,
ground_nets = ground_supplies
);

The Python code is in check.py:


nldb = ndb_get_netlist()
ground_nets = ndb_get_ground_net_names(nldb)
ndb_find_net(nldb, name_check=ground_nets, add_tags=["ground"])

See Also
eerc_setup()

Chapter 4: Utility Functions


EERC Utility Functions 4-350
IC Validator Reference Manual Version N-2017.12-SP2

ndb_get_netlist()
Returns the netlist object specified in the input_netlist_db argument of the calling
eerc_analyze_netlist() function.

Syntax
ndb_get_netlist()

Returns
ndb_netlist_t

Example
In this example, the netlist read from disk is passed into an eerc_analyze_netlist()
function, which then starts an EERC remote function.
• Top-level runset file:
input_netlist = read_layout_netlist(...);

initial_eerc_netlist = eerc_setup(...);

eerc_analyze_netlist(..., input_netlist_db=initial_eerc_netlist, ...);

• Python module file:


def my_function():
nldb = ndb_get_netlist()

ground_nets = ndb_get_ground_net_names(nldb)

ndb_find_net(nldb, name_check=ground_nets, add_tags=["ground"])

See Also
eerc_setup()
eerc_analyze_netlist()

ndb_get_netlist_attribute()
Retrieves a netlist attribute that you previously saved by using the
ndb_set_netlist_attribute() function. Each netlist attribute is represented by a
name-value pair, in which the value is a list of string.

Syntax
ndb_get_netlist_attribute(
netlist = ndb_netlist_t,

Chapter 4: Utility Functions


EERC Utility Functions 4-351
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

attribute_name = "string"
)

Returns
list of string

Example
This example shows how to retrieve the list of ESD MOS models.
esd_models = ndb_get_netlist_attribute(nldb, "mos_esd_models")

See Also
ndb_set_netlist_attribute()

ndb_get_power_net_names()
Retrieves the list of power net names from the given netlist that match the power_nets
argument in the eerc_setup() function. Only the names of nets that are present in the
netlist are returned.

Syntax
ndb_get_power_net_names(
netlist = ndb_netlist_t
)

Returns
list of string

Example
This example shows how to retrieve the list of specified power net names in the current
netlist and apply the “power” tag to each net named in the list.
The PXL code is in eerc.rs:
eerc_setup ( netlist_source = LAYOUT,
layout_netlist = input_netlist_db,
power_nets = power_supplies,
ground_nets = ground_supplies
);

The Python code is in check.py:


nldb = ndb_get_netlist()
power_nets = ndb_get_power_net_names(nldb)
ndb_find_net(nldb, name_check=power_nets, add_tags=["power"])

Chapter 4: Utility Functions


EERC Utility Functions 4-352
IC Validator Reference Manual Version N-2017.12-SP2

See Also
eerc_setup()

ndb_import_tags_from_cache_netlist()
Copies tags applied to objects in a cache netlist back to the corresponding netlist objects
(nets, devices, and cell instances) in the hierarchical netlist from which they were cached.
The hierarchical selection functions, ndb_find_net(), ndb_find_device(), and
ndb_find_instance(), are used to identify circuity of interest. Very complex topology
recognition can require caching the circuitry selected through a set of hierarchical functions
for final analysis in the flat cache cell. You can apply tags to these cached netlist objects by
using the ndb_set_top_cell_net_tag(), ndb_set_top_cell_device_tag(), and
ndb_set_top_cell_instance_tag() functions. When this final analysis is complete, you
might find it helpful to apply these tags back into the hierarchical netlist.

Syntax
ndb_import_tags_from_cache_netlist(
netlist = ndb_netlist_t,
cache_netlist = ndb_netlist_t,
tags = ["string", ...]
)

Returns
void

Example
In this example, the “primary_up” and “primary_down” tags, applied in a cache netlist, are
copied back into their original hierarchical netlist.
ndb_find_device(nldb, ..., cache=True)

cache_netlist = ndb_cache_to_netlist(nldb)
cache_cell = ndb_netlist_top_cell(cache_netlist)
for cdev in ndb_devices(cache_cell):
...
if my_criteria:
ndb_set_top_cell_device_tag(cdev, "primary_up")
else:
ndb_set_top_cell_device_tag(cdev, "primary_down")

ndb_import_tags_from_cache_netlist(nldb, cache_netlist,
tags = ["primary_up","primary_down"])

Chapter 4: Utility Functions


EERC Utility Functions 4-353
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_instance_cell()
Returns the cell object associated with the given cell instance. The cell object represents the
master or definition of the specified cell instance.

Syntax
ndb_instance_cell(
instance = ndb_instance_t
)

Returns
ndb_cell_t

Example
This example shows how to print the master cell name of the cell instance named X25.
cinst_name = ndb_instance_name(cinst)
cinst_cell = ndb_instance_cell(cinst)
cinst_model = ndb_cell_name(cinst_cell)
print("cell instance %s has model name %s" % (cinst_name, cinst_model))

ndb_instance_name()
Returns the name of the given cell instance.

Syntax
ndb_instance_name(
instance = ndb_instance_t
)

Returns
string

Example
This example shows how to print the instance and model names of a cell instance.
cinst_name = ndb_instance_name(cinst)
cinst_cell = ndb_instance_cell(cinst)
cinst_model = ndb_cell_name(cinst_cell)
print("cell instance %s has model name %s" % (cinst_name, cinst_model))

Chapter 4: Utility Functions


EERC Utility Functions 4-354
IC Validator Reference Manual Version N-2017.12-SP2

ndb_instance_pin()
Looks for a particular pin by name in a given cell instance, and returns a tuple consisting of
a Boolean, indicating whether the pin was found, and the pin object, if it was found.

Syntax
ndb_instance_pin(
instance = ndb_instance_t,
pin_name = "string"
)

Returns
(Boolean, ndb_pin_t)

Example
In this example, the IC Validator tool looks for the pin named INN and prints a message if it
finds the pin.
(found, ipin) = ndb_instance_pin(inst, "INN")
if found:
print("found pin 'INN' on instance %s" % ndb_instance_name(inst))

ndb_instance_pins()
Returns an iterator for the pins of the given cell instance. The pins are in random order.

Syntax
ndb_instance_pins(
instance = ndb_instance_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the pins of the given instance and print
the name of each pin.
for dpin in ndb_instance_pins(instance):
pname = ndb_pin_name(dpin)
print("Instance pin: %s" % pname)

Chapter 4: Utility Functions


EERC Utility Functions 4-355
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_instances()
Returns an iterator for the child cell instances in the given parent cell. The instances are in
random order.

Syntax
ndb_instances(
cell = ndb_cell_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the instances in the given cell and print
the name of each instance.
for inst in ndb_instances(cell):
iname = ndb_instance_name(inst)
print("Instance: %s" % iname)

ndb_is_net_port()
Determines whether the given net is a port net.

Syntax
ndb_is_net_port(
net = ndb_net_t
)

Returns
Boolean

Example
This example determines whether the net named VDD is a port and prints a message if it is.
(rcode, vdd_net) = ndb_cell_net(top_cell, "VDD")
if rcode:
if ndb_is_net_port(vdd_net):
print("VDD is indeed a top port net")

Chapter 4: Utility Functions


EERC Utility Functions 4-356
IC Validator Reference Manual Version N-2017.12-SP2

ndb_is_selected_rule()
Determines whether a specified violation has been selected or suppressed by using the IC
Validator selectable rule command-line options. A violation is executed during the run unless
a selectable rule option has suppressed it. You can use this function to prevent the IC
Validator tool from executing a section of a Python remoter block if its associated rule has
been suppressed.

Syntax
ndb_is_selected_rule(
violation_name = "string"
)

Returns
Boolean

Example
This example shows how to prevent the execution of a block of code when the associated
rule is suppressed.
if ndb_is_selected_rule("esd_1"):
...

ndb_net_device_pins()
Returns an iterator for the device pins connected to the given net. The pins are in random
order.

Syntax
ndb_net_device_pins(
net = ndb_net_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the device pins connected to the given
net and print the name of each pin.
for dpin in ndb_net_device_pins(vdd_net):
pname = ndb_pin_name(dpin)
print("Device pin: %s" % pname)

Chapter 4: Utility Functions


EERC Utility Functions 4-357
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_net_double_property()
Looks for the specified property with a double value for the specified net, and returns a tuple
that consists of a Boolean, indicating whether the property was found, and the property
value, if the property was found. This function is available only for use in callback functions
for the ndb_find_net() and ndb_report_net() functions.

Syntax
ndb_net_double_property(
net = ndb_net_t,
property_name = "string"
)

Returns
(Boolean, double)

Example
This example shows how to retrieve the value of the vmax property from a net or report an
error if the property is not found.
def my_function(my_net):
rval = False
(rcode, vmax_val) = ndb_net_double_property(my_net, "vmax")
if not rcode:
rval = True
return rval
ndb_report_net(nldb, check_function = my_function,
comment = "net missing vmax property")

ndb_net_instance_pins()
Returns an iterator for the cell instance pins connected to the given net. The pins are in
random order.

Syntax
ndb_net_instance_pins(
net = ndb_net_t
)

Returns
iterator

Chapter 4: Utility Functions


EERC Utility Functions 4-358
IC Validator Reference Manual Version N-2017.12-SP2

Examples
The following example shows how to loop over all of the instance pins connected to the
given net and print the name of each pin.
for dpin in ndb_net_instance_pins(vdd_net):
pname = ndb_pin_name(dpin)
print("Instance pin: %s" % pname)

ndb_net_name()
Returns the name of the given net object.

Syntax
ndb_net_name(
nname = ndb_net_t
)

Returns
string

Example
This example shows how to print the name of the given net object.
print("net name: %s" % ndb_net_name(my_net))

ndb_netlist_cell()
Looks for the specified cell by name in the given netlist object, and returns a tuple that
consists of a Boolean, indicating whether the cell was found, and the cell object, if it was
found.

Syntax
ndb_netlist_cell(
netlist = ndb_netlist_t,
cell_name = "string"
)

Returns
(Boolean, ndb_cell_t)

Chapter 4: Utility Functions


EERC Utility Functions 4-359
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
In this example, the IC Validator tool looks for the cell named lsf and prints a message if it
finds the cell.
(found, ecell) = ndb_netlist_cell(nldb, "lsf")
if found:
print("exclude this cell from the check")

ndb_netlist_top_cell()
Returns the cell object for the top cell in the given netlist.

Syntax
ndb_netlist_top_cell(
netlist = ndb_netlist_t
)

Returns
ndb_cell_t

Example
In this example, the IC Validator tool reports the name of the top cell in the netlist.
top_cell = ndb_netlist_top_cell(nldb)
tc_name = ndb_cell_name(top_cell)
print("top cell name: %s" % tc_name)

ndb_nets()
Returns an iterator for the nets in the given master cell. The nets are in random order.

Syntax
ndb_nets(
cell = ndb_cell_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the nets in the given cell and print the
name of each net.

Chapter 4: Utility Functions


EERC Utility Functions 4-360
IC Validator Reference Manual Version N-2017.12-SP2

for net in ndb_nets(cell):


nname = ndb_net_name(net)
print("Net: %s" % nname)

ndb_pin_device()
Returns the device object associated with the given pin object.

Syntax
ndb_pin_device(
pin = ndb_pin_t
)

Returns
ndb_device_t

Example
In this example, the IC Validator tool reports the name of the device instance associated with
the given pin.
my_device = ndb_pin_device(my_pin)
print("device name: %s" % ndb_device_name(my_device))

ndb_pin_instance()
Returns the cell instance object associated with the given pin object.

Syntax
ndb_pin_instance(
pin = ndb_pin_t
)

Returns
ndb_instance_t

Example
In this example, the IC Validator tool reports the name of the cell instance associated with
the given pin.
my_inst = ndb_pin_instance(my_pin)
print("instance name: %s" % ndb_instance_name(my_inst))

Chapter 4: Utility Functions


EERC Utility Functions 4-361
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_pin_name()
Returns the name of the given pin.

Syntax
ndb_pin_name(
pin = ndb_pin_t,
type = DEFAULT | NETLIST # optional
)

Returns
string

Arguments
pin
Required. Specifies the pin object from which the name is retrieved.

type
Optional. Specifies the type of pin name to be retrieved. Use this argument for
subcircuit-modeled standard device types with input netlist pin names that do not match
the predefined pin name for the device type.
The default is DEFAULT, which retrieves the IC Validator predefined pin name for a
standard pin of a standard device type. Use NETLIST to retrieve the netlist-specified pin
name.

Example
This example shows how to print the name of the given pin.
print("pin name: %s" % ndb_pin_name(my_pin))

ndb_pin_net()
Returns the net object associated with the given pin.

Syntax
ndb_pin_net(
pin = ndb_pin_t
)

Returns
ndb_net_t

Chapter 4: Utility Functions


EERC Utility Functions 4-362
IC Validator Reference Manual Version N-2017.12-SP2

Example
This example shows how to print the name of the net associated with the given pin.
pnet = ndb_pin_net(my_pin)
print("net name: %s" % ndb_net_name(pnet))

ndb_ports()
Returns an iterator for the port nets in the given cell. The nets are in random order.

Syntax
ndb_ports(
cell = ndb_cell_t
)

Returns
iterator

Examples
The following example shows how to loop over all of the port nets in the given cell and prints
the name of each net.
for port in ndb_ports(cell):
nname = ndb_net_name(port)
print("Port Net: %s" % nname)

ndb_propagate_net_property()
The ndb_propagate_net_property() function pushes a net double property along paths
in the netlist. The property is pushed through devices between a pair of pins that you define.
Propagation begins from each net that has a double property value for the property name
specified in the original_property_name argument. Propagation ceases when it
encounters either a net with a tag that is specified in the list defined by the
break_path_net_tags argument or a net that is connected to a pin defined by the
unidirectional_cell_ports argument.

A net double property represents a name-value pair in which the value is always a double.
The initial name-value pairs, representing a set of properties, are defined in a fixed-format
file.
You apply these properties to nets in the netlist by using the
eerc_import_net_properties_from_file() runset function. These functions apply the

Chapter 4: Utility Functions


EERC Utility Functions 4-363
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

initial properties and return a new netlist. You can also apply properties to the nets in the top
block of a netlist by using the ndb_set_top_cell_net_property() utility function.
A subsequent eerc_analyze_netlist() function operates on the new netlist and can
include one or more ndb_propagate_net_property() functions. Each
ndb_propagate_net_property() function propagates a single property, which you specify
with the original_property_name argument. The function pushes the original property
values through devices defined by the device_paths argument and applies the name
specified by the propagated_property_name argument to the propagated property values.
The original property name-value pairs remain on the nets where the
eerc_import_net_properties_from_file() function places them, while the
ndb_propagate_net_property() function uses the propagated_property_name string
as the name of the property values that it propagates.

Syntax
ndb_propagate_net_property(
netlist = ndb_netlist_t,
original_property_name = "string",
propagated_property_name = "string",
property_merge_operator = MIN | MAX,
device_paths = [
ndb_device_path(
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC | MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,
pin_name1 = "string",
pin_name2 = "string",
one_way = True | False, # optional
model_names = ["string", ...], # optional
tag_check = "string", # optional
)
...],
break_path_net_tags = ["string", ...], # optional
unidirectional_cell_ports = [
ndb_cell_ports(
cell_name = "string",
port_names = ["string", ...]
),
...] # optional
)

Returns
void

Chapter 4: Utility Functions


EERC Utility Functions 4-364
IC Validator Reference Manual Version N-2017.12-SP2

Arguments
netlist
Required. Specifies the input netlist object for property propagation. This netlist is
produced by an eerc_import_net_properties_from_file() function or an
eerc_analyze_netlist() function that has net double properties.

original_property_name
Required. Specifies the name of the net double property that initiates propagation. Each
net with this property is the source for propagating the double property.
You can set this original property name by using the
eerc_import_net_properties_from_file() runset function or by setting the property
name on a top cell net using the ndb_set_top_cell_net_property() utility function. If
you use eerc_import_net_properties_from_file(), the original property name
must appear in the voltage input file that you specify with the property_file argument.

propagated_property_name
Required. Specifies the property name that the ndb_propagate_net_property()
function applies to the property values that it pushes through the netlist on the defined
paths. The original property name-value pairs remain on the nets where the
eerc_import_net_properties_from_file() function places them. The propagated
double property values are renamed using the name specified by this argument.

property_merge_operator
Required. Controls how the IC Validator tool assigns net properties that collide on a
particular net. For example, if a net has a property with a of value 0.8 and the propagated
value is 1.0, this argument controls which value is assigned.
❍ MIN. Uses the smaller value between the existing net double property and the
colliding property.
❍ MAX. Uses the larger value between the existing net double property and the colliding
property.

device_paths
Required. Defines a list of the devices and their associated pin pairs that control the
propagation paths. This argument uses a list of ndb_device_path() methods that
specify the device types and pin pairs.
The ndb_device_path() method returns the data structures used by the
device_paths argument. Each data structure defines one intradevice propagation path.
Note that ndb_device_path() is a part of the EERC hierarchical functions; it is not a
utility function.
Each ndb_device_path() method has the following arguments:

Chapter 4: Utility Functions


EERC Utility Functions 4-365
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ device_type. Required. Specifies the device type of the devices through which the
properties pass. For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_name1. Required. Specifies the name of the first pin in the propagation pin pair.

❍ pin_name2. Required. Specifies the name of the second pin in the propagation pin
pair.
Note:
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
❍ one_way. Optional. Controls how the property propagation proceeds. The default is
False.

■ True. Property propagation proceeds only into the pin specified by


pin_name1 and out of the pin specified by pin_name2.

■ False. Property propagation can proceed in either direction through the pin pair.

❍ model_names. Optional. Specifies a list of the device models through which property
propagation can proceed. Only models that correspond with the specified
device_type are used.

❍ tag_check. Optional. Specifies a string expression that controls property propagation


through a device. Propagation can proceed through any device with tags that meet
the condition defined by this string expression. Previously applied tags are used to
select devices for the propagation path.
The string expression can include the !, ||, and && logic operators and can use ( and
) for grouping.

break_path_net_tags
Optional. Defines a list of the tags that can stop property propagation. The propagation
stops on a net that has any of these tags, and the net does not receive the property
value.

Chapter 4: Utility Functions


EERC Utility Functions 4-366
IC Validator Reference Manual Version N-2017.12-SP2

unidirectional_cell_ports
Optional. Defines a list of the cell pins that can stop propagation. When a property
propagates through devices, the propagation stops when it reaches a net connected to
one of these cell pins. The unidirectional_cell_ports argument uses a list of
ndb_cell_ports() methods to specify the cell pins.
The ndb_cell_ports() method returns the data structures used by the
unidirectional_cell_ports argument. Each data structure defines a cell pin. Note
that ndb_cell_ports() is a part of the EERC hierarchical functions; it is not a utility
function.
Each ndb_cell_ports() method has the following arguments:
❍ cell_name. Required. Specifies the name of the cell with a pin that stops
propagation.
❍ port_names. Required. Specifies a list of the names of pins that stop propagation.

Example
The following example shows a function that propagates a net property, named volt, through
the netlist using the propagation name vmax. The property is propagated through nmos and
pmos source, drain, and resistor terminals. The propagation begins on any net that has a
property with name volt. The propagation ceases when it encounters a net with a power or
ground tag.
ndb_propagate_net_property(nldb, "volt", "vmax", MAX,
device_paths = [
ndb_device_path(NMOS, "SRC", "DRN"),
ndb_device_path(PMOS, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B")
],
break_path_net_tags = ["power", "ground"]"],
)

See Also
eerc_import_net_properties_from_file()
eerc_write_net_property_file() )
ndb_set_top_cell_net_property()

ndb_propagate_tags()
The ndb_propagate_tags() function pushes tags along paths through the netlist. The tags
are pushed through devices between a pair of pins that you define.
A tag is represented by a string, and each netlist object has either a particular tag or no tag.
Tags do not correspond to a name-value pair. Each ndb_propagate_tags() function

Chapter 4: Utility Functions


EERC Utility Functions 4-367
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

propagates the tags in the list that you define with the net_tags argument. These tags are
pushed through the devices in the list that you define with the device_paths argument.
Tag propagation begins and ends on nets. Each device receives any tag that propagates
through it. You can use the ndb_find_net() function to apply a tag to a set of nets. These
nets represent propagation path startpoints or endpoints. The ndb_propagate_tags()
function starts from nets with a tag in the net_tags list, and proceeds from there through the
netlist.
Propagation ceases when it encounters a net with a tag that is specified in the list that you
define with the break_path_net_tags argument or when it has no further valid devices
through which to propagate.

Syntax
ndb_propagate_tags(
netlist = ndb_netlist_t,
net_tags = ["string", ...],
device_paths = [
ndb_device_path(
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC | MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,
pin_name1 = "string",
pin_name2 = "string",
one_way = True | False, # optional
model_names = ["string", ...], # optional
tag_check = "string" # optional
),
...],
break_path_net_tags = ["string", ...] # optional
)

Returns
void

Arguments
netlist
Required. Specifies the input netlist object for tag propagation.

net_tags
Required. Defines a list of the tags to be propagated. Propagation starts from the nets
that contain these tags and can proceed in any direction. Propagation ends when it
encounters a net with a tag from the list that you define with the break_path_net_tags
argument or when there are no further valid devices to push through.

Chapter 4: Utility Functions


EERC Utility Functions 4-368
IC Validator Reference Manual Version N-2017.12-SP2

device_paths
Required. Defines a list of the devices and their associated pin pairs that control the
propagation paths. This argument uses a list of ndb_device_path() methods that
specify the device types and pin pairs.
The ndb_device_path() method returns the data structures used by the
device_paths argument. Each data structure defines one intradevice propagation path.
Note that ndb_device_path() is a part of the EERC hierarchical functions; it is not a
utility function.
Each ndb_device_path() method has the following arguments:
❍ device_type Required. Specifies the device type of devices through which the tags
pass. For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_name1. Required. Specifies the name of the first pin in the propagation pin pair.

❍ pin_name2. Required. Specifies the name of the second pin in the propagation pin
pair.
Note:
For devices represented as standard types in the netlist, the pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
❍ one_way. Optional. Controls how the tag propagation proceeds. The default is False.
True. Tag propagation proceeds only into the pin specified by pin_name1 and out of
the pin specified by pin_name2.
False. Tag propagation can proceed in either direction through the pin pair.

❍ model_names. Optional. Specifies a list of the device models through which tag
propagation can proceed. Only models that correspond with the specified
device_type are used.

❍ tag_check. Optional. Specifies a string expression that controls tag propagation


through a device. Propagation can proceed through any device with tags that meet

Chapter 4: Utility Functions


EERC Utility Functions 4-369
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

the condition defined by this string expression. Previously applied tags are used to
select devices for the propagation path.
The string expression can include the !, ||, and && logic operators and can use ( and
) for grouping.

break_path_net_tags
Optional. Defines a list of the tags that can stop tag propagation. The propagation stops
on a net that has any of these tags, and the net does not receive the propagated tag.

Example
The following example shows a function that propagates the VDD and VSS tags through the
netlist. The ndb_find_net() function adds the tags to the nets. The tags propagate through
nmos and pmos source, drain, and resistor terminals. Propagation stops on nets with power
or ground tags, and these nets do not receive the VDD or VSS tags.
ndb_find_net(nldb, name_check = "VDD", add_tags = ["power", "VDD"])

ndb_find_net(nldb, name_check = "VSS", add_tags = ["ground", "VSS"])

ndb_propagate_tags(nldb, net_tags=["VDD","VSS"],
device_paths = [
ndb_device_path(NMOS, "SRC", "DRN"),
ndb_device_path(PMOS, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B")
],
break_path_net_tags = ["power", "ground"]
)

See Also
ndb_find_net()
ndb_propagate_net_property()

ndb_remove_tags()
Clears the tag marks for the specified tags in the given netlist. This function is useful when
many intermediate tags are no longer needed.

Syntax
ndb_remove_tags(
netlist = ndb_netlist_t,
tags = ["string", ...]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-370
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Example
This example shows how to remove the power and ground tags from the given netlist.
ndb_remove_tags(nldb, ["power","ground"]

ndb_report_device()
The ndb_report_device() function selects devices based on the criteria you specify and
writes the selected devices to the error database (PYDB). You can view the error devices in
the LAYOUT_ERRORS file or by using the IC Validator VUE tool. This function can use the
device type, model names, previously applied tags, and a user-defined function to select the
devices to be reported as errors. The IC Validator tool reports all of the selected devices at
or above their original hierarchical cell.
The ndb_report_device() function can identify error devices by using the double
properties associated with their pin nets. In this case, you might find it helpful to trace a net
property back to its origin for debugging purposes. The resulting path information is
available for debugging in the IC Validator VUE tool. You must use the device_paths and
break_path_net_tags arguments for this path tracing, and they should match the
corresponding arguments in the associated ndb_propagate_net_property() function.

Syntax
ndb_report_device(
netlist = ndb_netlist_t,
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | MOSFET |
JUNCTION_DIODE | BIPOLAR_TRANSISTOR,
model_names = ["string", ...], # optional
tag_check = "string", # optional
check_function = function, # optional
violation_name = "string", # optional
comment = "string", # optional
device_paths = [
ndb_device_path(
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | MOSFET |
JUNCTION_DIODE | BIPOLAR_TRANSISTOR,
pin_name1 = "string",
pin_name2 = "string",
one_way = True | False,
model_names = ["string", ...],
tag_check = "string"

Chapter 4: Utility Functions


EERC Utility Functions 4-371
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

),
...], # optional
break_path_net_tags = ["string", ...] # optional
)

Returns
void

Arguments
netlist
Required. Specifies the input netlist for device reporting.

device_type
Required. Specifies the device type of the devices to be reported. For information about
specifying device types, see eerc_setup().
❍ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
❍ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated with
the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
❍ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.

model_names
Optional. Specifies a list of the device model names to be considered. Reported devices
must have one of these names. You can use the * and ! wildcard characters to specify
device model names. For information about specifying model names for device types,
see eerc_setup(). By default, devices are selected regardless of their model names.

tag_check
Optional. Specifies a string expression to control device reporting. The expression must
evaluate to True for a device to be reported.
The string expression uses previously applied tags to select devices. It can include the
!, ||, and && logic operators and can use ( and ) for grouping..

check_function
Optional. Specifies the name of a user-defined Python function for device reporting. This
function must take a single argument of type ndb_device_t and return a Boolean. The
user-defined function is passed as input to the check_function argument. A device can
be reported only when this callback function returns the value True.

Chapter 4: Utility Functions


EERC Utility Functions 4-372
IC Validator Reference Manual Version N-2017.12-SP2

This user-defined function can call any EERC utility function that takes a device object
as an argument. It is most often used to check device properties or the net double
properties of nets connected to the device pins.
The ndb_set_device_report_info() function is used in this user-defined function to
trace the propagation paths of net double properties.

violation_name
Optional. Specifies the name of the violation for which the devices are reported. The
name must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with each error device if no
other comment is given using an ndb_set_device_report_info() function in a
user-defined function for the check_function argument.

device_paths
Optional. Defines a list of the devices and their associated pin pairs that control the
propagation paths. This argument uses a list of ndb_device_path() methods that
specify the device types and pin pairs through which the properties have been pushed.
Use this argument only when you are using the ndb_set_device_report_info()
function in a user-defined function for the check_function argument to trace from a pin
net back to the origin of a net double property. The specified device paths must match
the specification used in the ndb_propagate_net_property() function that propagates
the property.
The ndb_device_path() method returns the data structures used by the device_paths
argument. Each data structure defines one intradevice propagation path. Note that
ndb_device_path() is a part of the EERC hierarchical functions; it is not a utility
function.
Each ndb_device_path() method has the following arguments:
❍ device_type. Required. Specifies the device type of the devices through which the
properties pass. For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_name1. Required. Specifies the name of the first pin in the propagation pin pair.

Chapter 4: Utility Functions


EERC Utility Functions 4-373
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

❍ pin_name2. Required. Specifies the name of the second pin in the propagation pin
pair.
Note:
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
❍ one_way. Optional. Controls how the property propagation proceeds. The default is
False.

■ True. Property propagation proceeds only into the pin specified by


pin_name1 and out of the pin specified by pin_name2.

■ False. Property propagation can proceed in either direction through the pin pair.

❍ model_names. Optional. Specifies a list of the device models through which property
propagation can proceed. Only models that correspond with the specified
device_type are used.

❍ tag_check. Optional. Specifies a string expression that controls property propagation


through a device. Propagation can proceed through any device with tags that meet
the condition defined by this string expression.

break_path_net_tags
Optional. Defines a list of the tags that can stop property propagation. The propagation
stops on a net that has any of these tags. That net does not receive the propagated
property.
Use this argument when you are using the ndb_set_device_report_info() function in
a user-defined function for the check_function argument. The specified break tags
must match the specification used in the associated ndb_propagate_net_property()
function.

Examples
1. This example shows how to select all MOS devices where the GATE pin is connected to
a net with only a single connection, mark them with the floating_gate tag, and report
them as errors.

Chapter 4: Utility Functions


EERC Utility Functions 4-374
IC Validator Reference Manual Version N-2017.12-SP2

ndb_find_device(nldb, MOSFET,
pins = [ndb_pin_check(["GATE"], connections="==1")],
add_tags = ["floating_gate"]
)
ndb_report_device(nldb, MOSFET, tag_check="floating_gate",
comment = "MOS device GATE net is floating"
)

2. This example shows how to check all MOS GATE and SRC pin nets for a vmax net
property and, if both the GATE and SRC pin nets have the property, report any devices
for which the difference in vmax between the GATE and SRC pin nets is greater than
0.78.
# these settings for device_paths and break_path_net_tags are used for
# both `ndb_report_device()` and `ndb_propagate_net_property()` for
vmax
vmax_propagation_paths = [
ndb_device_path(MOSFET, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B"),
ndb_device_path(JUNCTION_DIODE, "ANODE", "CATHODE", one_way=True)
]
vmax_break_tags = ["power","ground"]

ndb_propagate_net_property(
netlist = nldb,
original_property_name = "max_voltage",
propagated_property_name = "vmax",
property_merge_operator = MAX
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

def check_eos(device):
(gcode, gpin) = ndb_device_pin(device, "GATE")
(scode, spin) = ndb_device_pin(device, "SRC")

if gcode and scode:


gnet = ndb_pin_net(gpin)
snet = ndb_pin_net(spin)

(gvc, gvolt) = ndb_net_double_property(gnet, "vmax")


(svc, svolt) = ndb_net_double_property(snet, "vmax")

if gvc and svc:


gs_diff = abs(gvolt - svolt)
if gs_diff > 0.78:
ndb_set_device_report_info(
comment = "vmax difference: %g" % gs_diff,
report_property_origin = [
ndb_pin_property_pair("GATE", "vmax"),
ndb_pin_property_pair("SRC", "vmax)
]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-375
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

return True
return False

ndb_report_device(nldb, MOSFET,
check_function = check_eos,
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

See Also
ndb_device_pin()
ndb_find_device()
ndb_net_double_property()
ndb_pin_net()
ndb_propagate_net_property()
ndb_save_top_cell_device()
ndb_set_device_report_info()

ndb_report_instance()
The ndb_report_instance() function identifies cell instances based on a set of criteria
that you specify, and writes the selected instances to the error database. You can view the
error instances in the LAYOUT_ERRORS file or by using the IC Validator VUE tool. This
function can use cell names, previously-applied tags, and a user-defined function to select
the instances that it reports as errors.
The ndb_report_instance() function can identify error cell instances by using the double
properties on the nets associated with their pins. In this case, you might find it helpful to
trace a net property back to its origin for debugging purposes. You must use the
device_paths and break_path_net_tags arguments for this path tracing, and they should
match the corresponding arguments in the associated ndb_propagate_net_property()
function.

Syntax
ndb_report_instance(
netlist = ndb_netlist_t,
cell_names = ["string", ...],
tag_check = "string", # optional
check_function = function, # optional
violation_name = "string", # optional
comment = "string", # optional
report_pins = ["string", ...], # optional
device_paths = [
ndb_device_path(
device_type = NMOS | PMOS | NPN | PNP | PN |
NP | RESISTOR | CAPACITOR |
INDUCTOR | GENERIC | MOSFET |

Chapter 4: Utility Functions


EERC Utility Functions 4-376
IC Validator Reference Manual Version N-2017.12-SP2

JUNCTION_DIODE | BIPOLAR_TRANSISTOR,
pin_name1 = "string",
pin_name2 = "string",
one_way = True | False,
model_names = ["string", ...],
tag_check = "string"
),
...], # optional
break_path_net_tags = ["string", ...] # optional
)

Returns
void

Arguments
netlist
Required. Specifies the input netlist.

cell_names
Required. Specifies a list of strings that can include the * and ! wildcard characters.
These strings represent the names of the cells for which instances are reported (or not
reported if you use the ! wildcard character).

tag_check
Optional. Specifies a string expression to control instance reporting. The expression
must evaluate to True for an instance to be reported.
The string expression uses previously applied tags to select instances. It can include the
!, ||, and && logic operators and can use ( and ) for grouping.

check_function
Optional. Specifies the name of a user-defined Python function for cell instance
reporting. This function must take a single argument of type ndb_instance_t and return
a Boolean. The user-defined function is passed as input to the check_function
argument. A cell instance can be selected only when this callback function returns the
value True.
This user-defined function can call any EERC utility function that takes a cell instance
object as an argument. It is most often used to check the net double properties of nets
connected to the cell instance pins. Use the ndb_set_instance_report_info()
function in this user-defined function to trace the propagation paths of net double
properties.
Note:
When you use the check_function argument to report cell instances, all of the cell
instances that are in error are reported as flat in the top cell. If you do not use the

Chapter 4: Utility Functions


EERC Utility Functions 4-377
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

check_function argument, the error reporting is hierarchical and all cell instances
are reported with reference to their parent cell or above.

violation_name
Optional. Specifies the name of the violation for which the instances are reported. The
name must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with each error instance.

report_pins
Optional. Specifies a list of string that can include the * and ! wildcard characters. These
strings represent the names of the cell instance pins that are reported in the
LAYOUT_ERRORS file in addition to the cell instance that is in error. By default, no cell
instance pins are reported.
Note:
A pin is reported in the LAYOUT_ERRORS file only when it is specified in the
report_pins list or with the ndb_set_instance_report_info() function.
This argument does affect the cell instance pins that are displayed in the IC Validator
VUE tool.

device_paths
Optional. Defines a list of the devices and their associated pin pairs that control the
propagation paths. This argument uses a list of ndb_device_path() methods that
specify the device types and pin pairs through which the properties have been pushed.
Use this argument only when you are using the ndb_set_instance_report_info()
function in a user-defined function for the check_function argument to trace from a pin
net back to the origin of a net double property. The specified device paths must match
the specification used in the ndb_propagate_net_property() function that propagates
the property.
The ndb_device_path() method returns the data structures used by the device_paths
argument. Each data structure defines one intradevice propagation path. Note that
ndb_device_path() is a part of the EERC hierarchical functions; it is not a utility
function.
Each ndb_device_path() method has the following arguments:
❍ device_type. Required. Specifies the device type of the devices through which the
properties pass. For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.

Chapter 4: Utility Functions


EERC Utility Functions 4-378
IC Validator Reference Manual Version N-2017.12-SP2

■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated


with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_name1. Required. Specifies the name of the first pin in the propagation pin pair.

❍ pin_name2. Required. Specifies the name of the second pin in the propagation pin
pair.
Note:
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
❍ one_way. Optional. Controls how the property propagation proceeds. The default is
False.

■ True. Property propagation proceeds only into the pin specified by


pin_name1 and out of the pin specified by pin_name2.

■ False. Property propagation can proceed in either direction through the pin pair.

❍ model_names. Optional. Specifies a list of the device models through which property
propagation can proceed. Only models that correspond with the specified
device_type are used.

❍ tag_check. Optional. Specifies a string expression that controls property propagation


through a device. Propagation can proceed through any device with tags that meet
the condition defined by this string expression.

break_path_net_tags
Optional. Defines a list of the tags that can stop property propagation. The propagation
stops on a net that has any of these tags. That net does not receive the propagated
property.
Use this argument when you are using the ndb_set_instance_report_info() function
in a user-defined check function. The specified break tags must match the specification
used in the associated ndb_propagate_net_property() function.

Examples
Example 1

Chapter 4: Utility Functions


EERC Utility Functions 4-379
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

This example shows how to select all inverter cell instances where the VDD pin is not
connected to a power net or the GND pin is not connected to a ground net, and report these
as errors.
# assume all power nets have been tagged with "power"
# assume all ground nets have been tagged with "ground"
ndb_find_instance(
netlist = nldb,
cell_names = ["*inv*"],
pins = [ndb_pin_check(["VDD"], tag_check="!power")],
add_tags = ["bad_power"]
)
ndb_find_instance(
netlist = nldb,
cell_names = ["*inv*"],
pins = [ndb_pin_check(["GND"], tag_check="!ground")],
add_tags = ["bad_ground"]
)
ndb_report_instance(
netlist = nldb,
cell_names = ["*inv*"],
tag_check = "bad_power || bad_ground"
comment = "instance has bad supply connection"
)

Example 2
This example shows how to check all VDD pin nets of inverter cell instances for a
withstand_voltage property and, if the VDD pin has the property, report any cell instances
for which the withstand_voltage property is greater than 0.8.
# the settings for device_paths and break_path_net_tags are used for
# both `ndb_report_instance()` and `ndb_propagate_net_property()` for
# withstand voltage.

withstand_voltage_prop_paths = [
ndb_device_path(NMOS, "DRN", "SRC"),
ndb_device_path(PMOS, "DRN", "SRC")
]

withstand_voltage_break_tags = ["pwr", "gnd"]

# propagate the property


ndb_propagate_net_property(
netlist = nldb,
original_property_name = "vmax",
propagated_property_name = "withstand_voltage",
property_merge_operator = MAX,
device_paths = withstand_voltage_prop_paths,
break_path_net_tags = withstand_voltage_break_tags
)

def check_instance(instance):

Chapter 4: Utility Functions


EERC Utility Functions 4-380
IC Validator Reference Manual Version N-2017.12-SP2

rval = False

(pcode, ppin) = ndb_instance_pin(instance, "VDD")

if pcode:
pnet = ndb_pin_net(ppin)
presult, pvolt = ndb_net_double_property(pnet,
"withstand_voltage")

if presult and pvolt > 0.8:


rval = True
ndb_set_instance_report_info(
comment = "EOS error instance",
report_property_origin = [
ndb_pin_property_pair("VDD", "withstand_voltage")
]
)
return rval

ndb_report_instance(
netlist = nldb,
cell_names = ["*inv*"],
check_function = check_instance,
comment = "Error in instance for EOS",
report_pins = ["*", "!IN"],
device_paths = withstand_voltage_prop_paths,
break_path_net_tags = withstand_voltage_break_tags
)

See Also
ndb_find_instance()
ndb_report_instance()

ndb_report_net()
The ndb_report_net() function identifies nets, based on a set of criteria that you specify,
and writes the selected nets to the error database. You can view the error nets in the
LAYOUT_ERRORS file or by using the IC Validator VUE tool. The ndb_report_net()
function can use the previously-applied tags or a user-defined function to select the nets to
be reported as errors. All of the selected nets are reported at or above their original
hierarchical cell.
You can identify error nets by using the check_function function and any double properties
associated with them. You can use the double properties to decide whether a net should be
reported as an error. In this case, you might find it helpful to trace a net property back to its
origin for debugging purposes. The resulting path information is available for debugging in
the IC Validator VUE tool. You must use the device_paths and break_path_net_tags
arguments for this path tracing, and they should match the

Chapter 4: Utility Functions


EERC Utility Functions 4-381
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

corresponding arguments in the associated ndb_propagate_net_property() function to


correctly trace the property propagation.

Syntax
ndb_report_net(
netlist = ndb_netlist_t,
tag_check = "string", # optional
check_function = function, # optional
violation_name = "string", # optional
comment = "string", # optional
device_paths = [
ndb_device_path(
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC | MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,
pin_name1 = "string",
pin_name2 = "string",
one_way = True | False, # optional
model_names = ["string", ...], # optional
tag_check = "string", # optional
)
...],
break_path_net_tags = ["string", ...] # optional
)

Returns
void

Arguments
netlist
Required. Specifies the input netlist.

tag_check
Optional. Specifies a string expression to control net selection. The expression must
evaluate to True for a net to be selected.
The string expression uses previously applied tags to select devices. It can include the
!, ||, and && logic operators and can use ( and ) for grouping.

check_function
Optional. Specifies the name of a user-defined Python function that takes a single
argument of type ndb_net_t and returns a Boolean. The user-defined function is passed
as input to the check_function argument. A net can be reported only when this callback
function returns the value True.

Chapter 4: Utility Functions


EERC Utility Functions 4-382
IC Validator Reference Manual Version N-2017.12-SP2

This function can call any EERC utility function that takes a net object as an argument.
The function is most often used to check net properties. In this check function, the
ndb_set_net_report_info() function associates a comment with individual net errors
and is used to specify the net double properties to be traced back to their origins.

violation_name
Optional. Specifies the name of the violation for which the nets are reported. The name
must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with each error net if no other
comment is given using an ndb_set_net_report_info() function in the check function.

device_paths
Required. Defines a list of the devices and their associated pin pairs that control the
propagation paths. This argument uses a list of ndb_device_path() methods to specify
the device types and pin pairs.
Use this argument when you use the ndb_set_net_report_info() function in a
user-defined function for the check_function argument to trace from a net back to the
origin of a net double property. To correctly trace the property, the specified device paths
must match the specification used in the ndb_propagate_net_property() function that
propagates the property.
The ndb_device_path() method returns the data structures used by the
device_paths argument. Each data structure defines one intradevice propagation path.
Note that ndb_device_path() is a part of the EERC hierarchical functions; it is not a
utility function.
Each ndb_device_path() method has the following arguments:
❍ device_type. Required. Specifies the device type of the devices through which the
properties pass. For information about setting device types, see eerc_setup().
■ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS, or MOSFET device type.
■ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated
with the NPN, PNP, or BIPOLAR_TRANSISTOR device type.
■ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP, or JUNCTION_DIODE device type.
❍ pin_name1. Required. Specifies the name of the first pin in the propagation pin pair.

❍ pin_name2. Required. Specifies the name of the second pin in the propagation pin
pair.

Chapter 4: Utility Functions


EERC Utility Functions 4-383
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Note:
For devices represented as standard types in the netlist, The pin names can be
IC Validator standard pin names.
For devices represented by subcircuits in the netlist and mapped to a standard
device type, the pin names can be the netlist names or IC Validator standard pin
names. The IC Validator tool maps the subcircuit pin names to IC Validator
standard pin names based on the pin order for standard devices in SPICE.
❍ one_way. Optional. Controls how the property propagation proceeds. The default is
False.

■ True. Property propagation proceeds only into the pin specified by


pin_name1 and out of the pin specified by pin_name2.

■ False. Property propagation can proceed in either direction through the pin pair.

❍ model_names. Optional. Specifies a list of the device models through which property
propagation can proceed. Only models that correspond with the specified
device_type are used.

❍ tag_check. Optional. Specifies a string expression that controls property propagation


through a device. Propagation can proceed through any device with tags that meet
the condition defined by this string expression.

break_path_net_tags
Optional. Defines a list of the tags that can stop property propagation. The propagation
stops on a net that has any of these tags. That net does not receive the propagated
property.
Use this argument when you use the ndb_set_net_report_info() function in a
user-defined function for the check_function argument. The specified break tags must
match the specification used in the associated ndb_propagate_net_property()
function for correct property traceback.

Examples
1. This example shows how to select nets with only a single device pin connection, mark
them with the single_connect_net tag, and report them as errors.
ndb_find_net(
netlist = nldb,
connections = ndb_count_check("==1"),
add_tags = ["single_connect_net"]
)
ndb_report_net(
netlist = nldb,
tag_check = "single_connect_net"
)

Chapter 4: Utility Functions


EERC Utility Functions 4-384
IC Validator Reference Manual Version N-2017.12-SP2

2. This example shows how to report any net that has a vmax net property with a value
greater than 3.4. The property is also traced back to its origin and the path information
is made available in the IC Validator VUE tool.
vmax_propagation_paths = [
ndb_device_path(MOSFET, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B"),
ndb_device_path(JUNCTION_DIODE, "ANODE", "CATHODE", one_way=True)
]
vmax_break_tags = ["power","ground"]

ndb_propagate_net_property(
netlist = nldb,
original_property_name = "max_voltage",
propagated_property_name = "vmax",
property_merge_operator = MAX
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

def check_prop(net):
(rcode, vmax_val) = ndb_net_double_property(net, "vmax")
if rcode:
if vmax_val > 3.4:
ndb_set_net_report_info("vmax value %g > 3.4" %
vmax_val, report_origin_property_names = ["vmax"]
)
return True
return False

ndb_report_net(nldb,
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags,
check_function=check_prop
)

See Also
ndb_find_net()
ndb_net_double_property()
ndb_report_top_cell_device()
ndb_set_net_report_info()

ndb_report_top_cell_device()
The ndb_report_top_cell_device() function writes a device in the error database
(PYDB). The device is included in the LAYOUT_ERRORS file and is shown under the EERC
tab in the IC Validator VUE tool. Only devices located in the top cell of a netlist can be
reported. This function is most often used in a cache netlist where devices from throughout
the hierarchy have been copied to a flat holding cell.

Chapter 4: Utility Functions


EERC Utility Functions 4-385
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Reporting devices from a flat holding cell allows you to associate a set of reference objects
with each error device. These reference objects, which can include nets, cell instances, and
other devices, provide the error device context for debugging. The reference objects are
shown in the Netlist Visualizer window in the IC Validator VUE tool when this error device is
selected.
In addition, you can associate a list of tags with the error device and the reference objects.
Any tags that have been applied to the error device and reference objects are listed with the
error in the LAYOUT_ERRORS file and in the IC Validator VUE tool.

Syntax
ndb_report_top_cell_device(
device = ndb_device_t,
violation_name = "string", # optional
comment = "string", # optional
reference_devices = [ndb_device_t, ...], # optional
reference_instances = [ndb_instance_t, ...], # optional
reference_nets = [ndb_net_t, ...], # optional
report_tags = ["string", ...] # optional
)

Returns
void

Arguments
device
Required. Specifies the device object to be reported as an error.

violation_name
Optional. Specifies the name of the violation for which the device is reported. The name
must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with this error device.

reference_devices
Optional. Specifies a list of device objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error device is selected.

reference_instances
Optional. Specifies a list of cell instance objects to be shown in the Netlist Visualizer in
the IC Validator VUE tool when this error device is selected.

Chapter 4: Utility Functions


EERC Utility Functions 4-386
IC Validator Reference Manual Version N-2017.12-SP2

reference_nets
Optional. Specifies a list of net objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error device is selected.

report_tags
Optional. Specifies a list of tag names. If any tag in the list has been applied to the error
device or reference objects, it appears with the device error in the LAYOUT_ERRORS
file and in the IC Validator VUE tool.

Examples
This example shows how to report devices in the cache netlist as errors.
cache_nl = ndb_cache_to_netlist(nldb)
cache_cell = ndb_netlist_top_cell(cache_nl)
for device in ndb_devices(cache_cell):
# report devices tagged with "esd_err"
if ndb_top_cell_device_tag(device, "esd_err"):
ndb_report_top_cell_device(
device,
comment = "bad ESD device"
)

See Also
ndb_cache_to_netlist()
ndb_devices()
ndb_report_device()
ndb_netlist_top_cell()
ndb_report_top_cell_instance()
ndb_report_top_cell_net()
ndb_top_cell_device_tag()

ndb_report_top_cell_instance()
The ndb_report_top_cell_instance() function writes a cell instance in the error
database (PYDB). The instance is included in the LAYOUT_ERRORS file and is shown
under the EERC tab in the IC Validator VUE tool. Only instances located in the top cell of a
netlist can be reported. This function is most often used in a cache netlist where instances
from throughout the hierarchy have been copied to a flat holding cell.
Reporting instances from a flat holding cell allows you to associate a set of reference objects
with each error instance. These reference objects, which can include nets, devices, and
other instances, provide the error instance context for debugging. The reference objects are
shown in the Netlist Visualizer window in the IC Validator VUE tool when this error instance
is selected. In addition, you can associate a list of tags with the error instance and reference

Chapter 4: Utility Functions


EERC Utility Functions 4-387
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

objects. Any of the tags that have been applied to these error instance and reference objects
are listed with the error in the LAYOUT_ERRORS file and in the IC Validator VUE tool.

Syntax
ndb_report_top_cell_instance(
instance = ndb_instance_t,
violation_name = "string", # optional
comment = "string", # optional
reference_devices = [ndb_device_t, ...], # optional
reference_instances = [ndb_instance_t, ...], # optional
reference_nets = [ndb_net_t, ...], # optional
report_tags = ["string", ...] # optional
)

Returns
void

Arguments
instance
Required. Specifies the cell instance object to be reported as an error.

violation_name
Optional. Specifies the name of the violation for which the instance is reported. The
name must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with this error instance.

reference_devices
Optional. Specifies a list of device objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error instance is selected.

reference_instances
Optional. Specifies a list of cell instance objects to be shown in the Netlist Visualizer in
the IC Validator VUE tool when this error instance is selected.

reference_nets
Optional. Specifies a list of net objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error instance is selected.

Chapter 4: Utility Functions


EERC Utility Functions 4-388
IC Validator Reference Manual Version N-2017.12-SP2

report_tags
Optional. Specifies a list of tag names. If any tag in the list has been applied to the error
instance and reference objects, it appears with the instance error in the
LAYOUT_ERRORS file and in the IC Validator VUE tool.

Examples
This example shows how to report instances as errors in the cache netlist.
cache_nl = ndb_cache_to_netlist(nldb)
cache_cell = ndb_netlist_top_cell(cache_nl)
for inst in ndb_instances(cache_cell):
# report instances tagged with "esd_err"
if ndb_top_cell_instance_tag(inst, "esd_err"):
ndb_report_top_cell_instance(
inst,
comment = "bad ESD instance"
)

See Also
ndb_cache_to_netlist()
ndb_instances()
ndb_netlist_top_cell()
ndb_report_instance()
ndb_report_top_cell_device()
ndb_report_top_cell_net()
ndb_top_cell_instance_tag()

ndb_report_top_cell_net()
The ndb_report_top_cell_net() function writes a net in the error database. The net is
included in the LAYOUT_ERRORS file and is shown under the EERC tab in the IC Validator
VUE tool. Only nets located in the top cell of a netlist can be reported. This function is most
often used in a cache netlist where nets from throughout the hierarchy have been copied to
a flat holding cell.
Reporting nets from a flat holding cell allows you to associate a set of reference objects with
each error net. These reference objects, which can include devices, cell instances, and
other nets, provide the error net context for debugging. The reference objects are shown in
the Netlist Visualizer window in the IC Validator VUE tool when this error net is selected. In
addition, you can associate a list of tags with the error net and reference objects. Any of the
tags that have been applied to the net and the reference objects are listed with the error in
the LAYOUT_ERRORS file and in the IC Validator VUE tool.

Syntax
ndb_report_top_cell_net(

Chapter 4: Utility Functions


EERC Utility Functions 4-389
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

net = ndb_net_t,
violation_name = "string", # optional
comment = "string", # optional
reference_devices = [ndb_device_t, ...], # optional
reference_instances = [ndb_instance_t, ...], # optional
reference_nets = [ndb_net_t, ...], # optional
report_tags = ["string", ...] # optional
)

Returns
void

Arguments
net
Required. Specifies the net object to be reported as an error.

violation_name
Optional. Specifies the name of the violation for which the net is reported. The name
must match a violation name in the violation_definitions hash in the calling
eerc_analyze_netlist() function.

comment
Optional. Specifies a violation comment to be associated with this error net.

reference_devices
Optional. Specifies a list of device objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error net is selected.

reference_instances
Optional. Specifies a list of cell instance objects to be shown in the Netlist Visualizer in
the IC Validator VUE tool when this error net is selected.

reference_nets
Optional. Specifies a list of net objects to be shown in the Netlist Visualizer in the
IC Validator VUE tool when this error net is selected.

report_tags
Optional. Specifies a list of tag names. If any tag in the list has been applied to the net
and the reference objects, it appears with the net error in the LAYOUT_ERRORS file and
in the IC Validator VUE tool.

Examples
This example shows how to report nets in the cache netlist as errors.

Chapter 4: Utility Functions


EERC Utility Functions 4-390
IC Validator Reference Manual Version N-2017.12-SP2

cache_nl = ndb_cache_to_netlist(nldb)
cache_cell = ndb_netlist_top_cell(cache_nl)
for net in ndb_nets(cache_cell):
# report nets tagged with "esd_err"
if ndb_top_cell_net_tag(net, "esd_err"):
ndb_report_top_cell_net(
net,
comment = "bad ESD net"
)

See Also
ndb_cache_to_netlist()
ndb_netlist_top_cell()
ndb_nets()
ndb_report_net()
ndb_report_top_cell_device()
ndb_report_top_cell_instance()
ndb_top_cell_net_tag()

ndb_reset_cache()
Clears all of the cache marks on netlist objects in the given netlist. Any
ndb_cache_to_netlist() function that immediately follows it returns an empty result.

Syntax
ndb_reset_cache(
netlist = ndb_netlist_t
)

Returns
void

Example
This example shows how to remove all of the cache marks in the nldb netlist.
ndb_reset_cache(nldb)
...

ndb_save_device_property()
Stores a new double property on the given device. You cannot use this function to change
the value of an existing property.

Chapter 4: Utility Functions


EERC Utility Functions 4-391
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
ndb_save_device_property(
device = ndb_device_t,
property_name = "string",
property_value = double
)

Returns
void

Example
This example shows how to store a new property, named NF, on a MOS device.
ndb_save_device_property(my_dev, "NF", 2.0)

ndb_save_netlist()
Writes the given netlist, any tags specified by the export_tags argument, and any net
double properties to the output netlist produced by calling the eerc_analyze_netlist()
function. The ndb_save_netlist() function also saves any netlist attributes associated
with the given netlist. You can use the resulting netlist in subsequent calls to the
eerc_analyze_netlist() function.
Note:
Any cache=True marks on individual net or device objects do not persist in the netlist
database returned by the ndb_save_netlist() function to the
eerc_analyze_netlist() function. A call to the ndb_save_netlist() function clears
cache marks from all net and device objects within the corresponding netlist database
object.

Syntax
ndb_save_netlist(
netlist = ndb_netlist_t
export_tags = ["string", ...] # optional
)

Returns
void

Example
This example shows how to save the working netlist with the power, ground, VDD, and VSS
tags.
ndb_save_netlist(nldb, ["power","ground","VDD","VSS"])

Chapter 4: Utility Functions


EERC Utility Functions 4-392
IC Validator Reference Manual Version N-2017.12-SP2

ndb_save_top_cell_device()
Stores the given device in the results database for subsequent layer generation by using the
eerc_create_device_layer() function. This function saves only those devices that are in
the top cell of a netlist, and it is typically used to save a device that is in the cache netlist.

Syntax
ndb_save_top_cell_device(
device = ndb_device_t
)

Returns
void

Example
In this example, the IC Validator tool saves all of the NMOS devices in the cache netlist.
cache_cell = ndb_netlist_top_cell(ndb_cache_to_netlist(nldb))
for cdev in ndb_devices(cache_cell):
if ndb_device_type(cdev) == NMOS:
ndb_save_top_cell_device(cdev)

See Also
eerc_create_device_layer()
ndb_save_top_cell_device_list()

ndb_save_top_cell_device_list()
Stores the specified devices in the results database for subsequent layer generation. The
IC Validator tool saves all of the devices in the list as a group that you can access by using
the eerc_create_device_list_layer() function in the main runset.
Each ndb_save_top_cell_device_list() call creates a separate group for the
eerc_create_device_list_layer() function. The ndb_save_top_cell_device_list()
function saves only those devices that are in the top cell of a netlist; it is typically used to
save a device that is in the cache netlist. A call of eerc_create_device_list_layer() in
the main runset returns the body shapes or extents of all the groups saved by calls of the
ndb_save_top_cell_device_list()function.

Syntax
ndb_save_top_cell_device_list(
devices = [ndb_device_t, ...]
)

Chapter 4: Utility Functions


EERC Utility Functions 4-393
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Returns
void

Example
In this example, the IC Validator tool saves a group of devices in the results database,
creates a bounding box around each group, and creates the device seed shapes.
The PXL code is in eerc.rs:
results = eerc_analyze_netlist(...);
results_db = results.results_db;

// create extents for each saved set of devices


dev_extents = eerc_create_device_list_layer(
report_db = results_db,
device_db = device_db,
output_type = BODY_EXTENTS);

// create the seed shapes for each saved device in a save list
seed_shapes = eerc_create_device_list_layer(
results_db,
device_db,
BODY_POLYGONS);

The Python code is in check.py:


cache_cell = ndb_netlist_top_cell(ndb_cache_to_netlist(nldb))
dev_group = []
for cdev in ndb_devices(cache_cell):
if ndb_device_type(cdev) == NMOS:
dev_group.append(cdev)
ndb_save_top_cell_device_list(dev_group)

See Also
eerc_create_device_list_layer()
ndb_save_top_cell_device()

ndb_save_top_cell_net()
Stores the given net in the results database for subsequent layer generation by using the
eerc_create_net_layer() function. This function saves only those nets that are in the top
cell of a netlist. It is typically used to save a net that is in the cache netlist.

Syntax
ndb_save_top_cell_net(
net = ndb_net_t
)

Chapter 4: Utility Functions


EERC Utility Functions 4-394
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Example
This example shows how to save all of the nets that are in the cache netlist.
cache_cell = ndb_netlist_top_cell(ndb_cache_to_netlist(nldb))
for cnet in ndb_nets(cache_cell):
ndb_save_top_cell_net(cnet)

See Also
eerc_create_net_layer()

ndb_set_device_report_info()
The ndb_set_device_report_info() function can associate a comment with each device
violation and trace a net double property, on one or more device pin nets, from the pin back
to the origin of that property. The resulting path information is available for debugging
purposes in the IC Validator VUE tool. Use this function in a user-defined Python function
called from the check_function argument of the ndb_report_device() function.
When using the net double property trace-back capability, you must first propagate the
property throughout the netlist by using the ndb_propagate_net_property() function. In
addition, you must use the device_paths and break_path_net_tags arguments that you
used in the ndb_propagate_net_property() function for the property you are tracing in
the ndb_report_device() function associated with this call of
ndb_set_device_report_info().

Syntax
ndb_set_device_report_info(
comment = "string", # optional
report_property_origin = [
ndb_pin_property_pair(
pin_name = "string",
property_name = "string"
),
...] # optional
)

Returns
void

Chapter 4: Utility Functions


EERC Utility Functions 4-395
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Arguments
comment
Optional. Specifies a string to be associated with a particular error device. The string is
printed in the LAYOUT_ERRORS file and displayed with the error device in the
IC Validator VUE tool.
This string provides instance-specific information about a particular error device that can
help you to debug the error.

report_property_origin
Optional. Defines a list of starting points for tracing a net double property back to its origin
and makes this path information available in the IC Validator VUE tool. This argument
specifies a list of ndb_pin_property_pair() methods, each of which defines a starting
point.
The ndb_pin_property_pair() method returns the pin and property name data
structures used by the report_property_origin argument. Note that
ndb_pin_property_pair() is a part of the EERC hierarchical functions; it is not a utility
function.
Each ndb_pin_property_pair() method has the following arguments:
❍ pin_name Required. Specifies the name of the pin from which the trace-back
operation starts.
❍ property_name Required. Specifies the name of the net double property to be
traced.

Examples
In this example, the IC Validator tool checks all of the MOS GATE and SRC pin nets for the
vmax net property. If the GATE pin net and SRC pin nets both have the property, the tool
reports any devices for which the difference in vmax between the GATE and SRC pin nets is
greater than 0.78.
# these settings for device_paths and break_path_net_tags are used for
# both `ndb_report_device()` and `ndb_propagate_net_property()` for vmax
vmax_propagation_paths = [
ndb_device_path(MOSFET, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B"),
ndb_device_path(JUNCTION_DIODE, "ANODE", "CATHODE", one_way=True)
]
vmax_break_tags = ["power","ground"]

def check_eos(device):
(gcode, gpin) = ndb_device_pin(device, "GATE")
(scode, spin) = ndb_device_pin(device, "SRC")

if gcode and scode:

Chapter 4: Utility Functions


EERC Utility Functions 4-396
IC Validator Reference Manual Version N-2017.12-SP2

gnet = ndb_pin_net(gpin)
snet = ndb_pin_net(spin)

(gvc, gvolt) = ndb_net_double_property(gnet, "vmax")


(svc, svolt) = ndb_net_double_property(snet, "vmax")

if gvc and svc:


gs_diff = abs(gvolt - svolt)
if gs_diff > 0.78:
ndb_set_device_report_info(
comment = "vmax difference: %g" % gs_diff,
report_property_origin = [
ndb_pin_property_pair("GATE", "vmax"),
ndb_pin_property_pair("SRC", "vmax)
]
)
return True
return False

# assume the "volt" property has been previously assigned to nets


# in the nldb netlist ... this must be done using the runset level
# command eerc_import_net_properties_from_file()

ndb_propagate_net_property(
netlist = nldb,
original_property_name = "volt",
propagated_property_name = "vmax",
property_merge_operator = MAX,
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

ndb_report_device(nldb, MOSFET,
check_function = check_eos,
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

See Also
ndb_propagate_net_property()
ndb_report_device()

ndb_set_device_tag_by_hierarchical_name()
Applies the specified tag to one or more devices defined by the ndb_hierarchical_name()
function. You can specify either the explicit instance name path to each device or a cell
name and the instance path from the cell.
The ndb_hierarchical_name() method is used to specify the device instance names. To
specify multiple device instance names, use a list of ndb_hierarchical_name() methods.

Chapter 4: Utility Functions


EERC Utility Functions 4-397
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
ndb_set_device_tag_by_hierarchical_name(
netlist = ndb_netlist_t,
hierarchical_names = [
ndb_hierarchical_name(name = "string",
cell_name = "string" # optional
),
...],
tag = "string"
)

Returns
void

Example
In this example, the esd_ggmos tag is applied to the I1/I24/M6 device. The name is
referenced from the top block in the netlist, so the cell_name argument is not needed in the
ndb_hierarchical_name() function.
ndb_set_device_tag_by_hierarchical_name(nldb,
hierarchical_names = [ndb_hierarchical_name("I1/I24/M6")],
tag = "esd_ggmos"
)

ndb_set_instance_report_info()
The ndb_set_instance_report_info() function can associate a comment with each cell
instance violation and trace a net double property, on one or more cell instance pin nets,
from the pin back to the origin of that property. The resulting path information is available for
debugging purposes in the IC Validator VUE tool. Use this function in a user-defined Python
function called from the check_function argument of the ndb_report_instance()
function.
When using the net double property trace-back capability, you must first propagate the
property throughout the netlist by using the ndb_propagate_net_property() function. In
addition, you must use the device_paths and break_path_net_tags arguments that you
used in the ndb_propagate_net_property() function for the property you are tracing in
the ndb_report_instance() function associated with this call of
ndb_set_instance_report_info().

Syntax
ndb_set_instance_report_info(
comment = "string", # optional
report_property_origin = [
ndb_pin_property_pair(
pin_name = "string",

Chapter 4: Utility Functions


EERC Utility Functions 4-398
IC Validator Reference Manual Version N-2017.12-SP2

property_name = "string"
),
...] # optional
)

Returns
void

Arguments
comment
Optional. Specifies a string to be associated with a particular error cell instance. The
string is printed in the LAYOUT_ERRORS file and displayed with the error cell instance
in the IC Validator VUE tool.
This string provides instance-specific information about a particular error instance that
can help you to debug the error. The default is an empty string.
Note:
This comment replaces the comment specified by the comment argument in the
ndb_report_instance() function.

report_property_origin
Defines a list of starting points for tracing a net double property back to its origin and
makes this path information available in the IC Validator VUE tool. This argument
specifies a list of ndb_pin_property_pair() methods, each of which defines a starting
point.
The ndb_pin_property_pair() method returns the pin and property name data
structures used by the report_property_origin argument. Note that
ndb_pin_property_pair() is a part of the EERC hierarchical functions; it is not a utility
function.
Each ndb_pin_property_pair() method has the following arguments:
❍ pin_name Required. Specifies the name of the pin from which the trace-back
operation starts.
Note:
A pin is reported in the LAYOUT_ERRORS file if it is absent in the report_pins
list of the ndb_report_instance() function but is present in the
ndb_set_instance_report_info() function.

❍ property_name Required. Specifies the name of the net double property to be


traced.

Chapter 4: Utility Functions


EERC Utility Functions 4-399
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Examples
This example shows how to check all VDD pin nets of inverter cell instances for a
withstand_voltage property and, if the VDD pin has the property, report any cell instances
for which the withstand_voltage property is greater than 0.8.
# the settings for device_paths and break_path_net_tags are used for
# both `ndb_report_instance()` and `ndb_propagate_net_property()` for
# withstand voltage.

withstand_voltage_prop_paths = [
ndb_device_path(NMOS, "DRN", "SRC"),
ndb_device_path(PMOS, "DRN", "SRC")
]

withstand_voltage_break_tags = ["pwr", "gnd"]

# propagate the property


ndb_propagate_net_property(
netlist = nldb,
original_property_name = "vmax",
propagated_property_name = "withstand_voltage",
property_merge_operator = MAX,
device_paths = withstand_voltage_prop_paths,
break_path_net_tags = withstand_voltage_break_tags
)

def check_instance(instance):
rval = False

(pcode, ppin) = ndb_instance_pin(instance, "VDD")

if pcode:
pnet = ndb_pin_net(ppin)
presult, pvolt = ndb_net_double_property(pnet,
"withstand_voltage")

if presult and pvolt > 0.8:


rval = True
ndb_set_instance_report_info(
comment = "EOS error instance",
report_property_origin = [
ndb_pin_property_pair("VDD", "withstand_voltage")
]
)
return rval

ndb_report_instance(
netlist = nldb,
cell_names = ["*inv*"],
check_function = check_instance,
comment = "Error in instance for EOS",
report_pins = ["*", "!IN"],

Chapter 4: Utility Functions


EERC Utility Functions 4-400
IC Validator Reference Manual Version N-2017.12-SP2

device_paths = withstand_voltage_prop_paths,
break_path_net_tags = withstand_voltage_break_tags
)

ndb_set_instance_tag_by_hierarchical_name()
Applies the specified tag to one or more instances defined by ndb_hierarchical_name()
function calls. You can specify either the explicit instance name path to each cell instance or
a cell name and the instance path from the cell.
The ndb_hierarchical_name() method is used to specify the cell instance names. To
specify multiple cell instance names, use a list of ndb_hierarchical_name() methods.

Syntax
ndb_set_instance_tag_by_hierarchical_name(
netlist = ndb_netlist_t,
hierarchical_names = [
ndb_hierarchical_name(name = "string",
cell_name = "string" # optional
),
...],
tag = "string"
)

Returns
void

Example
In this example, the unchecked tag is applied to the I1/I24/I6 cell instance. The name is
referenced from the top block in the netlist, so the cell_name argument is not needed in the
ndb_hierarchical_name() function.
ndb_set_instance_tag_by_hierarchical_name(nldb,
hierarchical_names = [ndb_hierarchical_name("I1/I24/I6")],
tag = "unchecked"
)

ndb_set_net_report_info()
The ndb_set_net_report_info() function associates a comment with each net violation
that is printed in the LAYOUT_ERRORS file and is displayed with the net violation in the
IC Validator VUE tool. It can also be used to trace net double properties to their origins,
through device paths. The resulting path information is available for debugging purposes in
the IC Validator VUE tool. Use this function in a user-defined check_function called from
the ndb_report_net() function.

Chapter 4: Utility Functions


EERC Utility Functions 4-401
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Syntax
ndb_set_net_report_info(
comment = "string", # optional
report_origin_property_names = ["string"] # optional
)

Returns
void

Arguments
comment
Optional. Specifies a string to be associated with a particular error net. The string is
printed in the LAYOUT_ERRORS file and displayed with the error net in the IC Validator
VUE tool.
This string provides instance-specific information about a particular error net that can be
helpful in debugging the error.

report_origin_property_names
Optional. Defines a list of net double property names associated with a net, to be traced
back to their origins. Any net double property specified in this argument is traced to its
origin using the device_paths and break_path_net_tags arguments specified in the
ndb_report_net() function associated with this function. The traceback information is
made available in the IC Validator VUE tool.

Examples
This example shows how to report any net that has a vmax net property with a value greater
than 3.4.

Chapter 4: Utility Functions


EERC Utility Functions 4-402
IC Validator Reference Manual Version N-2017.12-SP2

vmax_propagation_paths = [
ndb_device_path(MOSFET, "SRC", "DRN"),
ndb_device_path(RESISTOR, "A", "B"),
ndb_device_path(JUNCTION_DIODE, "ANODE", "CATHODE", one_way=True)
]

vmax_break_tags = ["power","ground"]

ndb_propagate_net_property(
netlist = nldb,
original_property_name = "max_voltage",
propagated_property_name = "vmax",
property_merge_operator = MAX
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags
)

def check_prop(net):
(rcode, vmax_val) = ndb_net_double_property(net, "vmax")
if rcode:
if vmax_val > 3.4:
ndb_set_net_report_info("vmax value %g > 3.4" %
vmax_val, report_origin_property_names = ["vmax"]
)
return True
return False

ndb_report_net(nldb,
device_paths = vmax_propagation_paths,
break_path_net_tags = vmax_break_tags,
check_function=check_prop
)

See Also
ndb_report_net()

ndb_set_net_tag_by_hierarchical_name()
Applies the specified tag to one or more nets defined by the ndb_hierarchical_name()
function. You can specify either the explicit instance name path to each net or a cell name
and the instance path from the cell.
The ndb_hierarchical_name() method is used to specify the net names. To specify
multiple net names, use a list of ndb_hierarchical_name() methods.

Syntax
ndb_set_net_tag_by_hierarchical_name(
netlist = ndb_netlist_t,
hierarchical_names = [

Chapter 4: Utility Functions


EERC Utility Functions 4-403
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

ndb_hierarchical_name(name = "string",
cell_name = "string" # optional
),
...],
tag = "string"
)

Returns
void

Example
This example shows how to apply the unchecked tag to the net named I1/I24/esd_net. The
name is referenced from the top block in the netlist, so the cell_name argument is not
needed in the ndb_hierarchical_name() function.
ndb_set_net_tag_by_hierarchical_name(nldb,
hierarchical_names = [ndb_hierarchical_name("I1/I24/esd_net")],
tag = "unchecked")

ndb_set_netlist_attribute()
Saves a list of strings and an associated name with the given netlist. You can use this
function to save any data that is common to an entire netlist. You can retrieve the data later
by using the ndb_get_netlist_attribute() function.
Note:
An attribute is a name-value pair with the value being a list of string. Multiple calls of the
ndb_set_netlist_attribute() utility function for the same attribute name append the
specified values to the list of strings.

Syntax
ndb_set_netlist_attribute(
netlist = ndb_netlist_t
attribute_name = "string",
attribute_value = ["string", ...]
)

Returns
void

Example
This example shows how to save the list of MOS models used for ESD protection as an
attribute.

Chapter 4: Utility Functions


EERC Utility Functions 4-404
IC Validator Reference Manual Version N-2017.12-SP2

esd_models = ["nesd1", "pesd1", "nesd2", "pesd2"]


ndb_set_netlist_attribute(nldb, "mos_esd_models", esd_models)
...

See Also
ndb_get_netlist_attribute()

ndb_set_sum_values()
Specifies the list of values summed by the ndb_sum_device_values() function based on
device selection criteria that you specify with that function. You use the
ndb_set_sum_values() function in the user-defined function that you specify with the
check_function argument of the ndb_sum_device_values() function.
Note:
You can use the ndb_set_sum_values() function only once in the user-defined function
specified by the check_function argument.

Syntax
ndb_set_sum_values(
values = [double , ...]
)

Returns
void

Example
# Define a callback function that computes the total
# width and count of all devices
def check_sum_nmos(device):
(rval, width) = ndb_device_double_property(device, "W")
count = 1
ndb_set_sum_values([count, width])

See Also
ndb_sum_device_values()

ndb_set_top_cell_device_tag()
Applies a tag to a device in the top block of a netlist. This function is used primarily to set
device tags in a cache netlist.

Syntax
ndb_set_top_cell_device_tag(

Chapter 4: Utility Functions


EERC Utility Functions 4-405
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

device = ndb_device_t,
tag = "string"
)

Returns
void

Example
This example shows how to apply the primary_up tag to the given device.
ndb_set_top_cell_device_tag(my_dev, "primary_up")

ndb_set_top_cell_instance_tag()
Applies a tag to a cell instance in the top block of a netlist. This function is used primarily to
set cell instance tags in a cache netlist.

Syntax
ndb_set_top_cell_instance_tag(
instance = ndb_instance_t,
tag = "string"
)

Returns
void

Example
This example shows how to apply the skip_cell tag to the given instance.
ndb_set_top_cell_instance_tag(my_inst, "skip_cell")

ndb_set_top_cell_net_property()
Sets the specified property name and double value on the given net in the top block of a
netlist. Note that this function can only apply a new property; it cannot modify the value of an
existing property.

Syntax
ndb_set_top_cell_net_property(
net = ndb_net_t,
property_name = "string",
value = double
)

Chapter 4: Utility Functions


EERC Utility Functions 4-406
IC Validator Reference Manual Version N-2017.12-SP2

Returns
void

Example
In this example, the vmax property with the value 0.9V is saved on the VDD net in the top
block.
(rcode, vdd_net) = ndb_cell_net(top_cell, "VDD")
if rcode:
ndb_set_top_cell_net_property(vdd_net, "vmax", 0.9)

ndb_set_top_cell_net_tag()
Applies a tag to a net in the top block of a netlist. This function is used primarily to set net
tags in a cache netlist.

Syntax
ndb_set_top_cell_net_tag(
net = ndb_net_t,
tag = "string"
)

Returns
void

Example
In this example, the skip_net tag is applied to the given net.
ndb_set_top_cell_net_tag(my_net, "skip_net")

ndb_sum_device_values()
Selects a set of devices that meet the specified criteria, and returns a list of the summed
values of user-defined characteristics related to the selected devices. For selection criteria
that selects no devices, the function returns an empty list. This function is often required to
get a sum of the device characteristics for the selected devices, such as the total number of
devices in the set, and a summation of device properties or calculated values.
Device selection works on a fully hierarchical netlist by applying the specified selection
criteria to each device in the design as if the netlist were flat. The selection criteria include
• The device type and model name

Chapter 4: Utility Functions


EERC Utility Functions 4-407
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Previously applied tags

The ndm_sum_device_values() function uses a user-defined callback function that has


access to the property and other information related to the device. You specify the desired
properties or calculated values to be summed by using the ndb_set_sum_values()
function inside the callback function.

Syntax
ndb_sum_device_values(
netlist = ndb_netlist_t,
check_function = function,
device_type = NMOS | PMOS | NPN | PNP | PN | NP |
RESISTOR | CAPACITOR | INDUCTOR |
GENERIC | MOSFET | JUNCTION_DIODE |
BIPOLAR_TRANSISTOR,
model_names = ["string", ...], # optional
tag_check = "string" # optional
)

Returns
list of double

Arguments
netlist
Required. Specifies the input netlist for device selection.

check_function
Required. Specifies the name of a user-defined Python function for device property or
calculated value summation. This function checks device properties and takes a single
argument of type ndb_device_t. It can call any EERC utility function that takes a device
object as an argument, and it uses an ndb_set_sum_values() function to specify the
device properties or calculated values that need to be summed. The
ndb_sum_device_values() calling function returns a list containing all of the summed
values.

device_type
Required. Specifies the device type of the devices to be checked. For information about
setting device types, see eerc_setup().
❍ Specifying MOSFET causes the tool to select devices associated with the NMOS,
PMOS or MOSFET device type.
❍ Specifying BIPOLAR_TRANSISTOR causes the tool to select devices associated with
the NPN, PNP or BIPOLAR_TRANSISTOR device type.

Chapter 4: Utility Functions


EERC Utility Functions 4-408
IC Validator Reference Manual Version N-2017.12-SP2

❍ Specifying JUNCTION_DIODE causes the tool to select devices associated with the
PN, NP or JUNCTION_DIODE device type.

model_names
Optional. Specifies a list of the device model names to be considered. You can use the *
and ! wildcard characters to specify device model names. Selected devices must have
one of these names. By default, devices are selected regardless of their model names.
For information about specifying model names for devices, see eerc_setup().

tag_check
Optional. Specifies a string expression to control device selection. The expression must
evaluate to True for a device to be selected.
The string expression uses previously applied tags to select devices. It can include the
!, || and && logic operators and can use ( and ) for grouping. The ! operator has the
highest precedence, after which the || and && operators are evaluated from left to right.

Examples
In this example, the IC Validator tool selects all of the NMOS devices for which the bulk pin
is not tied to ground and finds the average width and total length of all the selected devices.
This example also illustrates what happens if a property name in your runset does not match
the property name in the netlist. The width and length of a device are specified by properties
with the names “W” and “L” in the input netlist. However, the runset incorrectly specifies the
name of the length property (“length” instead of “L”). Because “length” is a nonexisting
device property, the returned value for total length is 0 (zero).
# Assume all ground nets have been tagged with "ground"
# Find NMOS devices for which the BULK terminal is not connected to
# ground
ndb_find_device(
netlist = nldb,
device_type = NMOS,
pins = [ndb_pin_check(["BULK"], tag_check = "!ground")],
add_tags = ["bad_nmos"]
)

# Define a callback function that computes the total


# width, length and count of all devices.
# "W" specifies the width and "length" specifies the length
def check_sum_nmos(device):
(rval, width) = ndb_device_double_property(device, "W")
(rval, length) = ndb_device_double_property(device, "length")
count = 1
ndb_set_sum_values([count, width, length])

# compute the average width and total length of all NMOS devices whose
# bulk pin is not tied to ground

Chapter 4: Utility Functions


EERC Utility Functions 4-409
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

computed_values = ndb_sum_device_values(
netlist = nldb,
check_function = check_sum_nmos,
device_type = NMOS,
tag_check = "bad_nmos"
)
if len(computed_values) > 0:
average_width = computed_values[1] / computed_values[0]
total_length = computed_values[2]
print("The average width is %f. Total length is %f" %
(average_width,total_length)

The following output is saved in the summary file. The total length is 0 (zero) because the
property named length does not exist for NMOS devices.
The average width is 0.100000. Total length is 0.000000

See Also
ndb_set_sum_values()

ndb_top_cell_device_tag()
Indicates whether the given device has the specified tag, and returns a Boolean indicating
whether the device in the top cell has the specified tag. This function works only for devices
that are in the top block of a netlist. It is used primarily to check devices in a cache netlist.

Syntax
ndb_top_cell_device_tag(
device = ndb_device_t,
tag = "string"
)

Returns
Boolean

Example
In this example, the IC Validator tool reports whether the given device has the esd_ggmos
tag.
dname = ndb_device_name(my_dev)
if ndb_top_cell_device_tag(my_dev, "esd_ggmos"):
print("device %s is an ESD protection device" % dname)
else:
print("device %s is NOT an ESD protection device" % dname)

Chapter 4: Utility Functions


EERC Utility Functions 4-410
IC Validator Reference Manual Version N-2017.12-SP2

ndb_top_cell_instance_tag()
Indicates whether the given cell instance has the specified tag, and returns a Boolean
indicating whether the device in the top cell has the specified tag. This function works only
for instances that are in the top block of a netlist. It is used primarily to check instances in a
cache netlist.

Syntax
ndb_top_cell_instance_tag(
instance = ndb_instance_t,
tag = "string"
)

Returns
Boolean

Example
In this example, the IC Validator tool reports whether the specified instance has the skip_cell
tag.
iname = ndb_instance_name(my_inst)
if ndb_top_cell_instance_tag(my_inst, "skip_cell"):
print("instance %s is marked to skip" % iname)
else:
print("instance %s should not be skipped" % iname)

ndb_top_cell_net_property()
Retrieves a double property stored on the given net in the top block of a netlist, if the
property exists, and returns a tuple that consists of a Boolean, indicating whether the
specified property was found, and the property value, if it was found.

Syntax
ndb_top_cell_net_property(
net = ndb_net_t,
property_name = "string"
)

Returns
(Boolean, double)

Chapter 4: Utility Functions


EERC Utility Functions 4-411
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Example
In this example, the IC Validator tool prints the value of the vmax property if it finds the
property on the VDD net.
(rcode, vdd_net) = ndb_cell_net(top_cell, "VDD")
if rcode:
(pcode, vmax) = ndb_top_cell_net_property(vdd_net, "vmax")
if pcode:
print("VDD: vmax=%g" % vmax)

ndb_top_cell_net_tag()
Indicates whether the given net has the specified tag, and returns a Boolean indicating
whether the device in the top cell has the specified tag. This function works only for nets that
are in the top block of a netlist. It is used primarily to check nets in a cache netlist.

Syntax
ndb_top_cell_net_tag(
net = ndb_net_t,
tag = "string"
)

Returns
Boolean

Example
In this example, the IC Validator tool reports whether the given net has the good_net tag.
nname = ndb_net_name(my_net)
if ndb_top_cell_net_tag(my_net, "good_net"):
print("net %s is a good net" % nname)
else:
print("net %s is NOT a good net" % nname)

ndb_total_resistance()
Calculates the total effective resistance between two nets. This function calculates only the
resistance associated with devices of type RESISTOR, and it works only when all of the
resistors are in the same cell.
This function is used primarily in a cache netlist. It returns a tuple that consists of the
effective resistance value and a list of the resistor objects used to calculate that value.

Chapter 4: Utility Functions


EERC Utility Functions 4-412
IC Validator Reference Manual Version N-2017.12-SP2

Syntax
ndb_total_resistance(
cell = ndb_cell_t,
start_net = ndb_net_t,
end_net = ndb_net_t
)

Returns
(double, list of ndb_device_t)

Example
In this example, the IC Validator tool calculates the effective total resistance between the IO
pad net and the secondary ESD protection devices.
cache_cell = ndb_netlist_top_cell(ndb_cache_to_netlist(nldb))
(pad_code, pad_net) = ndb_cell_net(cache_cell, "IO")
(sec_code, sec_net) = ndb_cell_net(cache_cell, "secondary")
if pad_code and sec_code:
(rval, resistors) = ndb_total_resistance(cache_cell, pad_net, sec_net)
print("total resistance = %g" % rval)

See Also
ndb_netlist_top_cell()
ndb_cell_net()

Chapter 4: Utility Functions


EERC Utility Functions 4-413
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Chapter 4: Utility Functions


EERC Utility Functions 4-414
A
Runset Basics A

This appendix explains some of the basics of using the IC Validator functions.

The information described in this appendix is:


• Overview
• Function Naming Standards
• Constraints
• Connect Databases
• Units of Measure
• Results of Functions
• Layout Layer and Datatype Ranges
• Limits on Number of Vertices of a Polygon
• Strings and Names
• Function Order in Runsets

A-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

• Layer Ancestry
• Spacing Checks

For additional information see the IC Validator User Guide.

Appendix A: Runset Basics


A-2
IC Validator Reference Manual Version N-2017.12-SP2

Overview
All IC Validator specific variables, variable types, and functions are defined in the
IC Validator header files. These header files make up the IC Validator application
programming interface (API).
Note:
The API is distinctly separate from PXL, which is described in the PXL chapter of the
IC Validator User Guide.
The header files are located in $ICV_HOME_DIR/include/.
The icv.rh file must be included at the top of all runset files requiring IC Validator API
functions.
#include <icv.rh>

You can view the public headers, which are not encrypted. The encrypted headers contain
internal code implementations.
The IC Validator Reference Manual describes in detail the runset and utility functions
defined in public header files.
For more information about file inclusion, see the Preprocessor section in the PXL chapter
of the IC Validator User Guide.

Function Naming Standards


The not_ prefix indicates that the function output is negated.
The _edge suffix indicates that the function output type is edge_layer.
Table A-1 shows some examples.
Table A-1 Examples of Function Naming

Function name Output

external1() Polygon output

external1_edge() Edge output

not_external1_edge() Output edges of original polygons that are not coincident with the
edges from external1_edge()

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Overview A-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Constraints
Some numerical values in the functions can have one of several operators, rather than
simply equal, and can also have a range of values. These values are referred to as
constraints. Any limitations for the constraint of an argument are given with its description.
For example, not all arguments can take the != (not equal) operator.
A range of values can be defined:
• To indicate exclusive values, use parenthesis.
• To indicate inclusive values, use brackets.

Table A-2 shows the constraint expressions.


Table A-2 Constraint Expressions

Constraint expression Defines

[a,b] A closed range from a to b, including both endpoints

(a,b) An open range from a to b, omitting the endpoints

[a,b) A half-open range from a to b, including a but omitting b

(a,b] A half-open range from a to b, omitting a but including b

The constraint operators available are shown in Table A-3.


Note:
Not all arguments can use all constraint operators. Restrictions are noted in the
argument descriptions.
Table A-3 Constraint Operators

Constraint operator Defines

>= a All numbers greater than or equal to a

> a All numbers greater than a

<= b All numbers less than or equal to b

< b All numbers less than b

Appendix A: Runset Basics


Constraints A-4
IC Validator Reference Manual Version N-2017.12-SP2

Table A-3 Constraint Operators (Continued)

Constraint operator Defines

== a Only the number a

!= a All numbers but a

Two constraint types are used by the functions. The constraint operators and expressions,
shown in the preceding table, can be used with these constraint types. For more information,
see the PXL chapter in the IC Validator User Guide.
• doubleconstraint: A double number with an exponent or a decimal point.
• integerconstraint: A decimal integer.

Connect Databases
• More than one connect database can be active at a time
• Connect databases are named
• Connect databases are passed by name to functions

The following example uses multiple connect databases:


cdb1 = connect({
{{Met1,Met2},Via12},
{{Met2,Met3},Via23}
});

// cdb2 contains only cdb1 + test_layer_1


cdb2 = incremental_connect( cdb1, {
{{test_layer_1, Met3}, test_layer_1_to_Met3_connector}
});

// cdb3 contains only cdb1 + test_layer_2


cdb3 = incremental_connect( cdb1, {
{{test_layer_2, Met3}, test_layer_2_to_Met3_connector}
});

// Operates on Met3 as connected in cdb1


out_m3 = external1(
Met3,
distance < 0.20,
connect_sequence = cdb1,
connectivity = SAME_NET,
relational = {POINT_TOUCH},

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Connect Databases A-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

intersecting = { ACUTE }
);

// Operates on test_layer1 as connected in cdb2


out_test1 = external1(
test_layer1,
distance < 0.20,
connect_sequence = cdb2,
connectivity = SAME_NET,
relational = {POINT_TOUCH},
intersecting = { ACUTE }
);

// Operates on test_layer2 as connected in cdb3


out_test2 = external1(
test_layer2,
distance < 0.20,
connect_sequence = cdb3,
connectivity = SAME_NET,
relational = {POINT_TOUCH},
intersecting = { ACUTE }
);

Units of Measure
The unit of measure for distance and length is microns (m).

Results of Functions
The functions can return either a result that can be used in a subsequent function or output
for the viewer. In the description for each function, the output type is stated.

Layout Layer and Datatype Ranges


The limits of the layer numbers and datatypes values are:
• GDSII layer numbers and datatypes: 0–65535, inclusive
• Milkyway layer numbers and datatypes: 0–255 for libraries in normal layer mode or
0–4095 for libraries in extended layer mode, inclusive
• OASIS layer numbers and datatypes: 0–65535, inclusive
• OpenAccess layer numbers and datatypes: 0–65535, inclusive
• NDM

Appendix A: Runset Basics


Units of Measure A-6
IC Validator Reference Manual Version N-2017.12-SP2

❍ Layer numbers: 0 to 65535, inclusive


❍ NDM purpose: 0 to 32767, inclusive
❍ System layers:
NDM_SYSTEM_LAYER_CHANGE_AREA
NDM_SYSTEM_LAYER_ROUTING_BLOCKAGE
NDM_SYSTEM_LAYER_PLACEMENT_BLOCKAGE
NDM_SYSTEM_LAYER_PIN_BLOCKAGE
NDM_SYSTEM_LAYER_PIN_GUIDE
NDM_SYSTEM_LAYER_MOVE_BOUND
NDM_SYSTEM_LAYER_ROUTE_GUIDE
NDM_SYSTEM_LAYER_ROUTING_CORRIDOR_REGION
NDM_SYSTEM_LAYER_IO_GUIDE
NDM_SYSTEM_LAYER_IO_RING
NDM_SYSTEM_LAYER_VOLTAGE_AREA_REGION
NDM_SYSTEM_LAYER_PG_REGION
NDM_SYSTEM_LAYER_SITE_ROW
NDM_SYSTEM_LAYER_RP_BLOCKAGE
NDM_SYSTEM_LAYER_BOUNDARY
NDM_SYSTEM_LAYER_CORE_AREA
NDM_SYSTEM_LAYER_SHAPING_BLOCKAGE
NDM_SYSTEM_LAYER_TOPOLOGY
NDM_SYSTEM_LAYER_OVERLAP
NDM_SYSTEM_LAYER_BOUNDARY_BLOCKAGE

❍ System purposes:
NDM_SYSTEM_PURPOSE_DRAWING
NDM_SYSTEM_PURPOSE_SPECIAL_ROUTER_EXTENSION
NDM_SYSTEM_PURPOSE_METAL_CUT
NDM_SYSTEM_PURPOSE_DIELECTRIC_FILL
NDM_SYSTEM_PURPOSE_ACTIVE_FILL

The following NDM-specific example shows the reading of the cell boundary layer:
aBoundary = assign(
{ {NDM_SYSTEM_LAYER_BOUNDARY} }, ndm = { views = { \
DESIGN_VIEW } }
);

The following NDM-specific example shows the reading of a blockage layer:


aM2= assign ( { { 2, 0 } } );
aM2_Blockage = assign(
{ {NDM_SYSTEM_LAYER_ROUTING_BLOCKAGE} }, ndm = \
{ blockage_layers = { 2 }, views = { \
DESIGN_VIEW } }
);

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Layout Layer and Datatype Ranges A-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Limits on Number of Vertices of a Polygon


The IC Validator tool breaks large polygons into smaller polygons when it writes them out
using the write_*() functions. Therefore, a complex polygon is written out as a set of
unmerged polygons.
The maximum number of vertices for polygons written by the IC Validator output functions
are:
• GDSII: 599
• Milkyway: 8191 for polygons; 2047 for paths
• OASIS: 8191
• OpenAccess: No limit
• NDM: No limit

Strings and Names


This sections discusses some of the restrictions on strings and names.
• Length of Strings
• Cell Names
• Net Names
• Device Names
• Text Strings
• String Matching

Length of Strings
The IC Validator tool supports these character lengths:
• Text strings: 1023
• Instance names: 1023

Appendix A: Runset Basics


Limits on Number of Vertices of a Polygon A-8
IC Validator Reference Manual Version N-2017.12-SP2

Cell Names
For any argument that specifies a cell name, only these characters are valid:
! " # $ % & ' ( ) * + , - . 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z[ \ ] ^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z{|}~

See String Matching for information about escaping metacharacters.


For GDSII and OASIS, the maximum cell name length in the IC Validator tool is 235.
• If the name of a top cell exceeds 235, the tool stops.
• if the name of a lower cell exceeds 235, it is truncated. If the truncated name is in conflict
with another cell name, the tool stops.

For Milkyway, the maximum cell name length is 1024.


For NDM and OpenAccess, there is no limit on cell names at the database level. However,
the IC Validator tool has an internal limit of 1024 characters.
Note:
Restrictions for other names, such as device names in the device configuration
functions, might be more restrictive.

Net Names
The following characters are not allowed in net names: space, tab, and the reserved
characters:
= { } , * " : ;
Note:
Restrictions for other names, such as device names in the device configuration
functions, might be more restrictive.

Device Names
For device names specified in the device configuration functions, such as capacitor(), the
following rules apply.
• An alphabetic character must be the first character in the name.
• Spaces are not allowed.
• Only these characters are valid:

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Strings and Names A-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

! # $ % & * + - . 0 1 2 3 4 5 6 7 8 9 : ; < > ? @


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
The backslash (\) and the right bracket (]) characters must be escaped with a backslash
(use \\ and \] in the device names).
Note:
Restrictions for other names, such as cell names, might be less restrictive.
If two device configuration functions specify the same device name, then there must be
some difference in the specified body, terminal, and bulk layers. For example, used together
in a runset the following definitions do not cause an error because the source is different:
nmos (devMmatrix, device_name = "devA", drain = A, gate = B, source = C1,
optional_pins = {device_layer = D, pin_name = "bulk"}});
nmos (devMmatrix, device_name = "devA", drain = A, gate = B, source = C2,
optional_pins = {device_layer = D, pin_name = "bulk"}});

The following definitions, however, would cause an error because there are no differences:
nmos (devMmatrix, device_name = "devA", drain = A, gate = B, source = C,
optional_pins = {device_layer = D, pin_name = "bulk"}});
nmos (devMmatrix, device_name = "devA", drain = A, gate = B, source = C,
optional_pins = {device_layer = D, pin_name = "bulk"}});

Text Strings
The following rules apply to text strings:
• The following characters are not allowed in a layout text string. These characters cause
a bad_text_reserved_character error in the cell.LAYOUT_ERRORS file:
= { } , * "

• Text strings containing only numeric characters cause a bad_text_all_digits error in the
cell.LAYOUT_ERRORS file. For example, "123AB" is a legal text string, but "123" is
reported as an error.
Note:
Set the allow_all_numeric argument of the text_options() function to true to
allow the use of all numeric text.
The text_net() function continues to ignore all numeric text. This behavior prevents
collisions between user-defined text and auto generated net numbers.
• A space, tab, or one of the following reserved characters in a layout text string causes
the string to be truncated at the position of the character.
: ;

Appendix A: Runset Basics


Strings and Names A-10
IC Validator Reference Manual Version N-2017.12-SP2

String Matching
Function arguments that are strings which specify text or cell names can use the
metacharacters listed in Table A-4 for string matching. The IC Validator Reference Manual
indicates the strings where matching with metacharacters is allowed; otherwise, the
metacharacters are treated as regular text.
Note:
These metacharacters can be escaped by preceding them with double backslash (\\) or
placing them in brackets.
Table A-4 Metacharacters

Metacharacter Description

* Matches 0 or more characters.

? Matches a single character.

[ ] Matches any single character that is contained within the brackets.


• Ranges are specified with the dash (-). For example, [a-z] matches any
lowercase letter.
• The dash (-) character is matched only when it is the first or last character
in the brackets. For example [az-] matches the lowercase letters a and
z and the dash character (-).

[^ ] Matches any single character that is not contained within the brackets. For
example, [^a-z] matches any character that is not a lowercase letter.

! When it is the first character of a string, the exclamation point (!) specifies a
pattern (minus the !) that is not matched.
For example, {"*", "!PROG"} matches every string except PROG. That is,
to match, a string must match at least one of the strings that do not start
with ! but must not match any of the strings that do start with !.

Function Order in Runsets


Each runset consists of three sections in the order:
1. OPTIONS
2. ASSIGN
3. COMMAND

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Function Order in Runsets A-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

In each function description in the reference manual, the “Function Group” section specifies
to which of these three runset sections the function is assigned. If a runset section is not
specified, the function can be called from any section. Within each section, you can call
functions in any order.
Note:
There cannot be any runtime conditional code in the OPTIONS and ASSIGN sections.

Layer Ancestry
Layer ancestry is the concept of maintaining a relationship between derived edge layers and
their original polygon layers. This behavior is used to determine polygon membership for
edges.

Polygon Operations
A polygon operation is any function that returns a polygon layer. Every polygon operation is
either a creator or a selector. The process in which this layer is derived is either:
• Creating new data or breaking of polygons.
• Selecting existing, complete polygons from a given polygon layer.

Polygon Creator Functions


The result of a creator function has exactly one ancestor. This ancestor is itself. Table A-5
lists the polygon creator functions.
Table A-5 Polygon Creator Functions

and_overlap() assign() assign_openaccess()

buildsub() cell_extent() cell_extent_layer()

center_to_center1() center_to_center2()

chip_extent() copy() copy_by_cells()

density() device_connected_to() device_not_connected_to()

device_net_count() donut_holes() edge_extents()

edge_grow() edge_shrink() edge_size()

empty_layer() enclose() enclose_corner()

Appendix A: Runset Basics


Layer Ancestry A-12
IC Validator Reference Manual Version N-2017.12-SP2

Table A-5 Polygon Creator Functions (Continued)

external1() external2() external_corner1()

external_corner2() fill_pattern() flatten_by_cells()

gradient_density() grow() identify_fill()

internal1() internal2() internal_corner1()

internal_corner2() intersections() layer_extent()

mos_select() move() negate()

negate_in_window() net_device_count() net_not_texted_with()

net_path_check() net_polygon_by_property() net_polygon_select()

net_texted_with() off_grid() polygon_centers()

polygon_extents() polygon_features() polygons()

pull_down() pull_down_to()

read_group() rectangle_overlap() remove_fill()

res_select() restart_layer() shrink()

size() size_inside() size_outside()

size_overlap() snap() soft_check()

text_origin() text_to_double_property() vertex()

wide()

Polygon Selector Functions


The result of a polygon selector function is a topological subset of the given input layer. In
two layer selector operations, the output is always a subset of the first input layer. The result
of a polygon selector has exactly one ancestor. The ancestor is the last created layer in the
sequence that ultimately produces the given result. Table A-6 lists the polygon selector
functions.
Table A-6 Polygon Selector Functions

area() aspect_ratio() contained_by()

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Layer Ancestry A-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table A-6 Polygon Selector Functions (Continued)

contains() covered_by() cutting()

data_limit() donuts() enclosing()

extent() grouped_by() inside_hole()

inside() interacting() level_to()

level() not_area() not_aspect_ratio()

not_contained_by() not_contains() not_covered_by()

not_cutting() not_donuts() not_enclosing()

not_extent() not_inside_hole() not_inside()

not_interacting() not_outside_touching() not_outside()

not_rectangles_interact not_rectangles() not_texted_with()


ing()

not_touching() not_vertices() outside_touching()

outside() rectangles_interacting() rectangles()

sconnect() stamp() texted_with()

touching() vertices()

Hybrid Polygon Functions


Some functions can operate as both selectors and creators depending on the context of the
operation. Table A-7 lists the hybrid polygon functions.
Table A-7 Hybrid Polygon Functions

and() not() net_property_select()

net_select() net_select_inside_of_layer() or()

xor()

Appendix A: Runset Basics


Layer Ancestry A-14
IC Validator Reference Manual Version N-2017.12-SP2

For example, the or() function is commonly thought of as a creator function because it can
clearly create new data. However, the or() function can also be a selector function.
Consider the following code:
small = area(met1, <2);
large = area(met1, >5);
both = small or large;

The small, large, and both results have met1 for their ancestor; each one is a topological
subset of met1. In this context, the or() function is a selector. The context is determined by
the layer ancestry of the two input layers; if the layers have the same ancestor, then the
result also has the same ancestor.

Edge Operations
An edge operation is any function that returns an edge layer. Every edge operation is either
a creator or a selector. The process in which this layer is derived is either:
• Creating new edge data.
• Selecting of existing edges from a given polygon layer.

Edge Creator Functions


The result of an edge creator function has no layer ancestry; this edge is considered to be
an orphan edge layer. Any edges derived from an orphan edge layer also have no layer
ancestry. Table A-8 lists the edge creator functions.
Table A-8 Edge Creator Functions

assign_edge() assign_openaccess_edge()

center_to_center1_edge() center_to_center2_edge()

copy_edge() edge_features_edge()

edges() enclose_corner_edge(output_type=POINT
_TO_POINT)

extend_edge() external1_corner_edge(output_type=POI
NT_TO_POINT)

external2_corner_edge(output_type=POI internal1_corner_edge(output_type=POI
NT_TO_POINT) NT_TO_POINT)

internal2_corner_edge(output_type=POI move_edge()
NT_TO_POINT)

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Layer Ancestry A-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table A-8 Edge Creator Functions (Continued)

pull_down_edge() pull_down_to_edge()

read_group_edge()

Edge Selector Functions


The result of an edge selector function is a subset of the given input. In two-layer edge
selector operations, the edges are always derived from the first input layer, with the
exception of the spacing checks (such as the external2_edge() function) which have an
argument that specifies from which input layer edges are selected. The result of an edge
selector function has exactly one ancestor. The ancestor is the last created polygon layer in
the sequence that ultimately produces the given result. Table A-9 lists the edge selector
functions.
Table A-9 Edge Selector Functions

adjacent_edge() and_edge()

angle_edge() coincident_edge()

coincident_inside_edge() coincident_outside_edge()

data_limit_edge() delta_edge()

enclose_corner_edge enclose_edge()
(output_type=FAIL)

external_corner1_edge external_corner2_edge
(output_type=FAIL) (output_type=FAIL)

external1_edge() external2_edge()

inside_touching_edge() interacting_edge()

internal_corner1_edge internal_corner2_edge
(output_type=FAIL) (output_type=FAIL)

internal1_edge() internal2_edge()

length_edge() level_edge()

level_to_edge() not_adjacent_edge()

not_angle_edge() not_coincident_edge()

Appendix A: Runset Basics


Layer Ancestry A-16
IC Validator Reference Manual Version N-2017.12-SP2

Table A-9 Edge Selector Functions (Continued)

not_coincident_inside_edge() not_coincident_outside_edge()

not_delta_edge() not_enclose_edge()

not_external1_edge() not_external2_edge()

not_inside_touching_edge() not_interacting_edge()

not_internal1_edge() not_internal2_edge()

not_length_edge() not_outside_touching_edge()

not_touching_edge() not_vertices_edge()

outside_touching_edge() touching_edge()

vertex_edge() vertices_edge()

wide_edge()

Hybrid Edge Functions


Some functions can operate as both selectors and creators depending on the context of the
operation. Table A-10 lists the hybrid edge functions.
Table A-10 Hybrid Edge Functions

or_edge() xor_edge()

For example, the or_edge() function is commonly thought of as a creator function because
it can clearly create new edges. However, the or_edge() function can also be a selector
function.
Consider the following code:
short = length_edge(met1, <2);
long = length_edge(met1, >5);
both = short or_edge long;

The short, long, and both results all have met1 for their ancestor; every edge in each of the
three layers is also an edge in met1. In this context, the or_edge() function is a selector.
The context is determined by the layer ancestry of the two input layers; if the layers have the
same ancestor, then the result also has the same ancestor.

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Layer Ancestry A-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Polygon Membership of Edges


The concept of polygon membership of edges is meaningful only to the results of the
functions
• external1(), external1_edge(), and not_external1_edge(), on an edge layer
where membership = ALL.
• Internal1(), internal1_edge(), and not_internal1_edge(), on an edge layer. One
layer internal is limited to same polygon checking.

For these operations, polygon membership is determined by layer ancestry. If the edge layer
has an ancestor, polygon membership for the edges is defined by the polygons from which
they were selected, in the ancestor layer. Disjoint edges can be on the same polygon.
If the edge layer has no ancestor, polygon membership is defined solely by interaction.
Edges that interact in any way are considered to be on the same polygon. Disjoint edges are
not on the same polygon.

Using Copy Functions Versus Variable Assignment


In the context of layers, variable assignment, =, and the copy functions, copy(),
copy_edge(), and copy_error(), perform very different operations.

The copy() and copy_edge() functions are creator functions that copy the geometric data
from a layer into a new layer that has no ancestry and no connectivity. That is, these
functions are layer operations that create new layers, and the results have no ancestry, and
therefore, no polygon membership information. You should only use the copy functions
when you want to remove ancestry and connectivity.
Alternately, the variable assignment operator, =, is not a layer operator. It does not create a
new layer; it only defines a layer variable. It copies the content of a layer variable into
another layer variable. Both variables have the same ancestry and connectivity.
See the Examples section of the copy() function for more information.

Spacing Checks
This section describes the fundamentals of the edge-based spacing checks in IC Validator.
Table A-11 lists the edge-based spacing check functions.
Table A-11 Edge-Based Spacing Check Functions

covered_by() enclose() enclose_edge()

Appendix A: Runset Basics


Spacing Checks A-18
IC Validator Reference Manual Version N-2017.12-SP2

Table A-11 Edge-Based Spacing Check Functions (Continued)

enclose_error() external1() external1_edge

external1_error() external2() external2_edge()

external2_error() internal1() internal1_edge()

internal1_error() internal2() internal2_edge()

internal2_error() not_covered_by() not_enclose_edge()

not_external1_edge() not_external2_edge() not_internal1_edge()

not_internal2_edge()

There are three basic spacing checks:


• Enclosure, which measures separation of the outside of layer1 to the inside of layer2.
• External, which measures separation of outside to outside.
• Internal, which measures separation of inside to inside.

Inside and outside are defined in the context of the active area of a given polygon, or in the
case of edges, the polygon from which they were derived.
Note:
The side of a given edge that is appropriate for the given spacing check is called the
check side. For external spacing checks, the check side is the outside. For internal
spacing checks, the check side is the inside. For enclosure spacing checks, the check
side of layer1 is the outside, and the check side of layer2 is the inside.
All figures and descriptions in this section are in the context of check side. Therefore,
they are applicable to all three types of spacing checks.

Precision of 45-Degree Measurements


The distance of a 45-degree measurement is an irrational value. The value is rounded to the
nearest internal resolution unit before comparison to the distance specification. The
internal_resolution argument of the resolution_options() function sets the internal
resolution.
Figure A-1 shows that the distance between the two 45-degree edges is 3 m * sqrt(2) =
4.24264068... m. The distance is rounded, to fall on the grid, to 4.243 m when the

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

internal_resolution = 0.001. Although the actual measurement is less than 4.243,


there is no violation for a distance specification of < 4.243.
Figure A-1 Precision of 45-Degree Measurements

Figure A-2 shows the extension check from the endpoints of the edges to the 45-degree
edge. Again, there is no violation for a distance specification of < 4.243.

Appendix A: Runset Basics


Spacing Checks A-20
IC Validator Reference Manual Version N-2017.12-SP2

Figure A-2 Precision of 45-Degree Measurements

Edge Filters
The edge-based spacing checks have an extensive set of edge filters that are used to
control which edge or edge pairs are measured. See the descriptions of the specific
functions for details of the edge filters. The fundamentals listed here are applied in addition
to the specified edge filters.

Opposition
For two given edges to be measured, they must oppose each other. The rule for opposition
is
Each edge must have some portion that falls inside the half-plane. (The half-plane
consists of all points on the check side of the other edge.)

Figure A-3 shows edge A from x to y, with the check side. The dashed line indicates that
edge A is extended infinitely, and the half-plane is in gray.

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure A-3 Example of Check Side and Half-Plane


y x
A

Figure A-4 shows candidate edges A and B with their check sides shown with gray arrows.
These edges are opposing and, therefore, they are measured.
Figure A-4 Completely Opposing Check Sides

Appendix A: Runset Basics


Spacing Checks A-22
IC Validator Reference Manual Version N-2017.12-SP2

Figure A-5 shows examples of candidate edges C and D that are not opposing and,
therefore, they are not measured.
Figure A-5 Nonopposing Edges

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-23
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Check Region Formation


The distance and extension arguments in the spacing check functions are used to
construct the check region for error detection.
When specifying the distance,
• Only constraint operators allowed are <, <=, and ==.
• All constraint expressions are supported. See “Constraints” for more information.
• Only nonnegative values are allowed.
• The check region is formed on the check side of a given edge.
The extension choices are:
• NONE
• NONE_INCLUSIVE
• RADIAL
• SQUARE
• RECTANGLE
• EDGE
Note:
In the following figures shown for extension choices, the edge is shown in black and the
check region is shown with a dash line.

NONE
When the extension is NONE, the check region is not extended. It is formed with right-angle
boundaries at the edge endpoints. The right-angle boundaries of the check region are
exclusive. The far boundary of the check region is inclusive or exclusive depending on the
constraint of the distance value.
Figure A-6 Extension Set to NONE

Appendix A: Runset Basics


Spacing Checks A-24
IC Validator Reference Manual Version N-2017.12-SP2

NONE_INCLUSIVE
The extension NONE_INCLUSIVE is the same as NONE, but the right-angle boundaries of the
check region are always inclusive, regardless of the specified distance constraint. The far
boundary of the check region is inclusive or exclusive depending on the constraint of the
distance value. When the projection argument includes the ON setting, the
NONE_INCLUSIVE setting produces point-to-point violations whose edges have no length,
regardless of the constraint of the distance value.
Figure A-7 Extension Set to NONE_INCLUSIVE

The formatting of the errors is described in the following Output Format section.

RADIAL
When the extension is RADIAL, the check region is extended past the endpoints of the edge
using the distance value with a radial curve. The boundary of the check region is inclusive
or exclusive depending on the constraint of the distance value.
Figure A-8 Extension Set to RADIAL

SQUARE
When the extension is SQUARE, the check region is extended past the endpoints of the edge
using the distance value with a square. The boundary of the check region is inclusive or
exclusive depending on the constraint of the distance value.
Figure A-9 Extension Set to SQUARE

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-25
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

RECTANGLE
The extension RECTANGLE is similar to the SQUARE setting except that the check region is
extended past the endpoints of the edge using the extension_distance argument value
with a rectangle. The boundary of the check region is inclusive or exclusive depending on
the constraint of the distance value.
This setting is useful only when the extension_distance argument value is nonzero.
When extension_distance = 0, RECTANGLE is the same as NONE. When
extension_distance = distance, RECTANGLE is the same as SQUARE.

Figure A-10 Extension Set to RECTANGLE

EDGE
When the extension is EDGE, the check region is formed by first extending the edge using the
extension_distance argument, and then creating right-angle boundaries at the extended
endpoints based on the distance constraint. The right-angle boundaries of the check region
are exclusive. The far boundary of the check region is inclusive or exclusive depending on
the constraint of the distance.
This setting is useful only when the extension_distance argument value is nonzero.
Note:
The difference between RECTANGLE and EDGE is subtle, and is only meaningful when the
minimum of the distance constraint is nonzero. In Figure A-11, distance = [x,y] and
extension_distance = w; the check regions are shaded with gray.

Appendix A: Runset Basics


Spacing Checks A-26
IC Validator Reference Manual Version N-2017.12-SP2

Figure A-11 Extension Set to EDGE Versus RECTANGLE

EDGE

Boundary Conditions with Inclusive Constraints


When using the <= operator or an expression in the form [x,y], special consideration is
made for violations that have no length.
Edges that lie exactly at the spacing distance, but have only an endpoint lying on the far
boundary of the check region, are reported with a distance that is one internal resolution unit
greater than the specified distance.
For example, Figure A-12 shows edges and the area when extension = RADIAL.
Assuming that all edge filtering and opposition is met, both of these cases generate errors
from edge A to edge B when the distance is specified as <=y or [x,y]. (To simplify the
figure, x is not shown.)
Figure A-12 Distance Specified as <=y or [x,y]

When you use the == operator or an expression in the form [x,x], no special consideration
is made for violations that have no length. Violations that consist of a single point are not
reported. This behavior occurs in nonparallel violations or nonprojecting violations and is

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-27
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

regardless if the edge being measured crosses the check region or has an endpoint that lies
on the boundary of the check region.
For example, Figure A-13 shows edges and the check region when extension = RADIAL.
None of these cases generate errors from edge A to edge B when the distance is specified
as ==x or [x,x].
Figure A-13 Distance Specified as ==x or [x,x]

Output Format
Note:
This section does not apply to these edge-based spacing check functions:
covered_by(), enclose_error(), external1_error(), external2_error(),
internal1_error(), internal2_error(), and not_covered_by().

For every edge pair, there are two independent check regions. This situation is most
meaningful for the case of nonparallel edges. First, consider the case of no extension
region, as when using the NONE or NONE_INCLUSIVE option. Figure A-14 shows two cases
with no extension region.
Figure A-14 No Extension Region

Appendix A: Runset Basics


Spacing Checks A-28
IC Validator Reference Manual Version N-2017.12-SP2

Errors are formed by perpendicular projections, from the edge forming the check region to
the portion of the other edge that falls in the check region. As shown in Figure A-15, derived
edges are selected from the source and destination of the projections.
Figure A-15 Derived Edges

Error shapes are created by connecting the endpoints of the error edges, as shown in red in
Figure A-16.
Note:
The overlap of the nonparallel error shapes shown in Figure A-16 is only for
visualization. All derived polygons are merged on output.
Figure A-16 Endpoint and Perpendicular Projection Errors

Other extension settings, such as RADIAL, SQUARE, and RECTANGLE, add extension, or
endpoint errors, that emanates from the endpoints of the edges and terminate at the portion
of the destination edge that falls in the check region.

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-29
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Figure A-17 shows a RADIAL option check region.


Figure A-17 RADIAL Check Region

Figure A-18 shows the derived edge output.


Figure A-18 Derived Edge Output

Figure A-19 shows errors that are created with a combination of the endpoint errors and the
perpendicular projection errors.
Figure A-19 Derived Polygon Output

Appendix A: Runset Basics


Spacing Checks A-30
IC Validator Reference Manual Version N-2017.12-SP2

Point-to-Point Errors
As mentioned previously in the “NONE_INCLUSIVE” section, specifying the extension as
NONE_INCLUSIVE causes point-to-point violations that require special care when formatting
for output.
Figure A-20 Point-to-Point Violations

The portion of the edge that falls in the check region has no length and, therefore, it cannot
be represented in the output layer. The polygon formed by edges with no length also has no
area and, therefore, it cannot be represented in the output layer.
To compensate for edge output, the edges created have a length equal to the internal
resolution. The internal_resolution argument of the resolution_options() function
sets the internal resolution.
To compensate for polygon output, the point-to-point errors are reported as rectangles by
expanding the line connecting the two points by the width value on both sides.

AppendixA:A:Runset
Chapter RunsetBasics
Basics
Spacing Checks A-31
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Appendix A: Runset Basics


Spacing Checks A-32
B
Hercules™ Runset to IC Validator Runset
Migration B

This appendix provides you with the basic information about the commands and options to
migrate a Hercules runset to an IC Validator runset.

The migration information is described in the following sections:


• Dimensional Functions
• Data Creation Functions
• Compare Functions

B-1
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Dimensional Functions
The following tables show the IC Validator function equivalents for Hercules dimensional
commands. In the tables,
• (default) indicates the default behavior of an option. In some cases, the default behavior
of an option in Hercules is different from its default behavior in an IC Validator runset.
• #NA# indicates that the Hercules option behavior is not applicable to the IC Validator
tool.
• If multiple Hercules options are mapped to the same IC Validator argument, in the
IC Validator tool the options must be combined.
For example,
relational = {INSIDE}, relational = {OUTSIDE}
needs to be combined:
relational = {INSIDE, OUTSIDE}

• If a Hercules option is coded using a single IC Validator function, then that function is
mentioned.
Note:
Not all arguments of IC Validator functions have corresponding Hercules options.
The tables are for the following IC Validator functions:
• enclose(): Table B-1

• enclose_corner(): Table B-2

• external1(): Table B-3

• external_corner1(): Table B-4

• internal1(): Table B-5

• internal_corner1(): Table B-6

• external2(): Table B-7

• external_corner2(): Table B-8

• internal2(): Table B-9

• internal_corner2(): Table B-10

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-2
IC Validator Reference Manual Version N-2017.12-SP2

Table B-1 compares the Hercules commands and equivalent IC Validator enclose()
function.
Table B-1 Hercules Commands and Equivalent IC Validator enclose() Function

Hercules command IC Validator enclose() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) connectivity = ALL (default)

FLAG_DISCONNECTED = FALSE connectivity = SAME_NET

NODAL = TRUE connectivity = DIFFERENT_NET

FLAG_ACUTE_ANGLE = FALSE intersecting = {}

FLAG_ACUTE_ANGLE = TRUE (default) intersecting = {ACUTE} (default)

INSIDE = TRUE #NA#

OVERLAP = TRUE relational = {INSIDE}

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE relational = {POINT_TOUCH}

TOUCH = TRUE intersecting = {TOUCH},


relational = {POINT_TOUCH}

TOUCH_FILTER enclose_edge(...) &


length_edge(..., corners = CONNECT)

NON_PARALLEL = FALSE (default) orientation = {PARALLEL}

NON_PARALLEL = TRUE orientation = {ACUTE, PARALLEL}


(default)

NON_PARALLEL_ONLY = TRUE orientation = {ACUTE}

PARALLEL = TRUE orientation = {PARALLEL},


orthogonal = BOTH,
extension = NONE_INCLUSIVE

PARALLEL_POINT_PROJECTION = TRUE projection = {IN, ON, OUT} (default)


(default)

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-3
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-1 Hercules Commands and Equivalent IC Validator enclose() Function (Continued)

Hercules command IC Validator enclose() function

PARALLEL_POINT_PROJECTION = FALSE extension = NONE,


projection = {IN}

CHECK_SAME_POLYGON = FALSE (default) #NA#

CHECK_SAME_POLYGON = TRUE #NA#

FLAG_ACUTE_EDGE = TRUE #NA#

FLAG_ADJACENT_EDGE = FALSE(default) #NA#

FLAG_ADJACENT_EDGE = TRUE #NA#

FLAG_NOTCH_ACUTE #NA#

SET_CORNERS_TO_SPACING = FALSE extension = NONE_INCLUSIVE

SET_CORNERS_TO_SPACING = TRUE (default) extension = RADIAL,


corner_configuration = ALL,
projection = {IN, ON, OUT} (default)

BOX_CORNER = TRUE extension = SQUARE

CONCAVE_TO_CONVEX #NA#

CONCAVE_TO_EDGE #NA#

CONCAVE_TO_EDGE #NA#
[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE #NA#
[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX #NA#

CONVEX_TO_CONVEX[POINT_PROJECTION] #NA#

CONVEX_TO_CONVEX_FILTER #NA#

CONVEX_TO_EDGE #NA#

CONVEX_TO_EDGE[ #NA#
INSIDE_CORNER_TO_OUTSIDE_EDGE]

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-4
IC Validator Reference Manual Version N-2017.12-SP2

Table B-1 Hercules Commands and Equivalent IC Validator enclose() Function (Continued)

Hercules command IC Validator enclose() function

CONVEX_TO_EDGE[ #NA#
OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_EDGE_FILTER #NA#

FILTER_VECTOR #NA#

FLAG_ON_CORNER_PROJECTION_BOUNDARY #NA#

SQUARE_CORNER = TRUE #NA#

LONGEDGE[LONGEDGE_TO_EDGE] projection_length

EDGE_45 orthogonal = NEITHER

NON_PARALLEL & EDGE_45 orthogonal = ONE_OR_NEITHER

NO_CUT #NA#

NO_CUT_FILTER = FALSE (default) #NA#

NO_CUT_FILTER = TRUE #NA#

SHADOW = TRUE & look_thru = INSIDE


SHADOW_OTHER_LAYER = FALSE (default)

SHADOW = FALSE look_thru = ALL

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE look_thru = NONE

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#


& SHADOW_EDGE_TOUCH = TRUE

CHECK_90_ALSO = TRUE orientation = {PERPENDICULAR}

PARALLEL_POINT_PROJECTION = TRUE & enclose_edge(extension = NONE_INCLUSIVE)


EDGE_METRIC = OPPOSITE &
OUTPUT_EDGES (default)

PARALLEL_POINT_PROJECTION = FALSE & enclose_edge(extension = NONE,


EDGE_METRIC = OPPOSITE & OUTPUT_EDGES projection = {IN})

EDGE_METRIC = RADIAL & OUTPUT_EDGES enclose_edge(extension = RADIAL)

EDGE_METRIC = SQUARE & OUTPUT_EDGES enclose_edge(extension = SQUARE)

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-5
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-1 Hercules Commands and Equivalent IC Validator enclose() Function (Continued)

Hercules command IC Validator enclose() function

HORIZONTAL_ONLY = TRUE direction = {HORIZONTAL}

OUTPUT_EDGES = TRUE enclose_edge(...)

RECTANGULAR = TRUE output_type = EXTENTS

REGION = TRUE & WIDTH = value width = value

VERTICAL_ONLY = TRUE direction = {VERTICAL}

WIDTH = value width = value

FLAG_INSIDE_EDGE_TOUCH = TRUE #NA#

INSIDE_EDGE( #NA#
FLAG_INSIDE_PNT_TOUCH = TRUE)

FLAG_OUTSIDE_EDGE_TOUCH #NA#

FLAG_OUTSIDE_PNT_TOUCH #NA#

DIMENSION #NA#

SEGMENT #NA#

SEGMENT[ANGLE_OPTION] #NA#

SEGMENT_RANGE #NA#

Table B-2 compares the Hercules commands and equivalent IC Validator


enclose_corner() function.
Table B-2 Hercules Commands and Equivalent IC Validator enclose_corner() Function

Hercules command IC Validator enclose_corner() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) connectivity = ALL (default)

FLAG_DISCONNECTED = FALSE connectivity = SAME_NET

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-6
IC Validator Reference Manual Version N-2017.12-SP2

Table B-2 Hercules Commands and Equivalent IC Validator enclose_corner() Function


(Continued)

Hercules command IC Validator enclose_corner() function

NODAL = TRUE connectivity = DIFFERENT_NET

FLAG_ACUTE_ANGLE = FALSE #NA#

FLAG_ACUTE_ANGLE = TRUE (default) #NA#

INSIDE = TRUE #NA#

OVERLAP = TRUE #NA#

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE #NA#

TOUCH = TRUE #NA#

TOUCH_FILTER #NA#

NON_PARALLEL = FALSE (default) #NA#

NON_PARALLEL = TRUE #NA#

NON_PARALLEL_ONLY = TRUE #NA#

PARALLEL = TRUE #NA#

PARALLEL_POINT_PROJECTION = TRUE type = {PARALLEL_POINT_PROJECTION}


(default)

PARALLEL_POINT_PROJECTION = FALSE #NA#

CHECK_SAME_POLYGON = FALSE (default) #NA#

CHECK_SAME_POLYGON = TRUE #NA#

FLAG_ACUTE_EDGE = TRUE #NA#

FLAG_ADJACENT_EDGE = FALSE (default) #NA#

FLAG_ADJACENT_EDGE = TRUE #NA#

FLAG_NOTCH_ACUTE #NA#

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-7
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-2 Hercules Commands and Equivalent IC Validator enclose_corner() Function


(Continued)

Hercules command IC Validator enclose_corner() function

SET_CORNERS_TO_SPACING = FALSE #NA#

SET_CORNERS_TO_SPACING = TRUE (default) #NA#

BOX_CORNER = TRUE region = SQUARE

CONCAVE_TO_CONVEX type = {CONCAVE_TO_CONCAVE}

CONCAVE_TO_EDGE type = {CONCAVE_TO_EDGE, EDGE_TO_CONVEX}

CONCAVE_TO_EDGE type = {CONCAVE_TO_EDGE}


[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE type = {EDGE_TO_CONVEX}


[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX type = {CONVEX_TO_CONCAVE}

CONVEX_TO_CONVEX[POINT_PROJECTION] type = {CONVEX_TO_CONCAVE},


convex_to_concave_boundary =
INCLUSIVE_PARALLEL

CONVEX_TO_CONVEX_FILTER enclose_corner_edge(...,
type = {CONVEX_TO_CONCAVE},
output_type = POINT_TO_POINT)
& length_edge(...)

CONVEX_TO_EDGE type = {CONVEX_TO_EDGE, EDGE_TO_CONCAVE}

CONVEX_TO_EDGE[ type = {CONVEX_TO_EDGE}


INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONVEX_TO_EDGE[ type = {EDGE_TO_CONCAVE}


OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_EDGE_FILTER enclose_corner_edge(..., type =


{CONVEX_TO_EDGE, EDGE_TO_CONCAVE},
output_type = POINT_TO_POINT)
& length_edge(...)

FILTER_VECTOR enclose_corner_edge(...,
output_type = POINT_TO_POINT)
& length_edge(...)

FLAG_ON_CORNER_PROJECTION_BOUNDARY boundary = INCLUSIVE

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-8
IC Validator Reference Manual Version N-2017.12-SP2

Table B-2 Hercules Commands and Equivalent IC Validator enclose_corner() Function


(Continued)

Hercules command IC Validator enclose_corner() function

SQUARE_CORNER = TRUE angle = RIGHT

LONGEDGE[LONGEDGE_TO_EDGE] #NA#

EDGE_45 #NA#

NON_PARALLEL & EDGE_45 #NA#

NO_CUT #NA#

NO_CUT_FILTER = FALSE (default) edge_endpoints = CORNER (default)

NO_CUT_FILTER = TRUE edge_endpoints = ALL

SHADOW = TRUE & look_thru = INSIDE


SHADOW_OTHER_LAYER = FALSE (default)

SHADOW = FALSE look_thru = ALL

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE look_thru = NONE

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#


& SHADOW_EDGE_TOUCH = TRUE

CHECK_90_ALSO = TRUE #NA#

PARALLEL_POINT_PROJECTION = TRUE & #NA#


EDGE_METRIC = OPPOSITE &
OUTPUT_EDGES (default)

PARALLEL_POINT_PROJECTION = FALSE & #NA#


EDGE_METRIC = OPPOSITE & OUTPUT_EDGES

EDGE_METRIC = RADIAL & OUTPUT_EDGES #NA#

EDGE_METRIC = SQUARE & OUTPUT_EDGES #NA#

HORIZONTAL_ONLY = TRUE #NA#

OUTPUT_EDGES = TRUE enclose_corner_edge(...)

RECTANGULAR = TRUE #NA#

REGION = TRUE & WIDTH = value #NA#

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-9
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-2 Hercules Commands and Equivalent IC Validator enclose_corner() Function


(Continued)

Hercules command IC Validator enclose_corner() function

VERTICAL_ONLY = TRUE #NA#

WIDTH = value #NA#

FLAG_INSIDE_EDGE_TOUCH = TRUE #NA#

INSIDE_EDGE( #NA#
FLAG_INSIDE_PNT_TOUCH = TRUE)

FLAG_OUTSIDE_EDGE_TOUCH #NA#

FLAG_OUTSIDE_PNT_TOUCH #NA#

DIMENSION #NA#

SEGMENT #NA#

SEGMENT[ANGLE_OPTION] #NA#

SEGMENT_RANGE #NA#

Table B-3 compares the Hercules commands and equivalent IC Validator external1()
function.
Table B-3 Hercules Commands and Equivalent IC Validator external1() Function

Hercules command IC Validator external1() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) connectivity = ALL (default)

FLAG_DISCONNECTED = FALSE connectivity = SAME_NET

NODAL = TRUE connectivity = DIFFERENT_NET

FLAG_ACUTE_ANGLE = FALSE #NA#

FLAG_ACUTE_ANGLE = TRUE (default) #NA#

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-10
IC Validator Reference Manual Version N-2017.12-SP2

Table B-3 Hercules Commands and Equivalent IC Validator external1() Function (Continued)

Hercules command IC Validator external1() function

INSIDE = TRUE #NA#

OVERLAP = TRUE #NA#

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE relational = {POINT_TOUCH}

TOUCH = TRUE relational = {POINT_TOUCH}

TOUCH_FILTER #NA#

NON_PARALLEL = FALSE (default) orientation = {PARALLEL}

NON_PARALLEL = TRUE orientation = {ACUTE, PARALLEL}


(default)

NON_PARALLEL_ONLY = TRUE orientation = {ACUTE}

PARALLEL = TRUE orientation = {PARALLEL},


orthogonal = BOTH,
extension = NONE_INCLUSIVE

PARALLEL_POINT_PROJECTION = TRUE projection = {IN, ON, OUT} (default)


(default)

PARALLEL_POINT_PROJECTION = FALSE extension = NONE, projection = {IN}

CHECK_SAME_POLYGON = FALSE (default) membership = DIFFERENT_POLYGON

CHECK_SAME_POLYGON = TRUE membership = ALL (default)

FLAG_ACUTE_EDGE = TRUE adjacent_edge(layer, length < value,


angle1 > 180, angle2 > 180)

FLAG_ADJACENT_EDGE = FALSE (default) intersecting = {}

FLAG_ADJACENT_EDGE = TRUE intersecting = {ACUTE} (default)

FLAG_NOTCH_ACUTE vertex(layer, angles = {(0,90)},


shape = SQUARE_CENTERED)

SET_CORNERS_TO_SPACING = FALSE extension = NONE_INCLUSIVE

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-11
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-3 Hercules Commands and Equivalent IC Validator external1() Function (Continued)

Hercules command IC Validator external1() function

SET_CORNERS_TO_SPACING = TRUE (default) extension = RADIAL,


corner_configuration = ALL,
projection = {IN, ON, OUT} (default)

BOX_CORNER = TRUE extension = SQUARE

CONCAVE_TO_CONVEX #NA#

CONCAVE_TO_EDGE #NA#

CONCAVE_TO_EDGE #NA#
[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE #NA#
[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX #NA#

CONVEX_TO_CONVEX[POINT_PROJECTION] #NA#

CONVEX_TO_CONVEX_FILTER #NA#

CONVEX_TO_EDGE #NA#

CONVEX_TO_EDGE[ #NA#
INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONVEX_TO_EDGE[ #NA#
OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_EDGE_FILTER #NA#

FILTER_VECTOR #NA#

FLAG_ON_CORNER_PROJECTION_BOUNDARY #NA#

SQUARE_CORNER = TRUE #NA#

LONGEDGE[LONGEDGE_TO_EDGE] projection_length

EDGE_45 orthogonal = NEITHER

NON_PARALLEL & EDGE_45 orthogonal = ONE_OR_NEITHER

NO_CUT #NA#

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-12
IC Validator Reference Manual Version N-2017.12-SP2

Table B-3 Hercules Commands and Equivalent IC Validator external1() Function (Continued)

Hercules command IC Validator external1() function

NO_CUT_FILTER = FALSE (default) #NA#

NO_CUT_FILTER = TRUE #NA#

SHADOW = TRUE & look_thru = NONE


SHADOW_OTHER_LAYER = FALSE (default)

SHADOW = FALSE look_thru = ALL

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#


& SHADOW_EDGE_TOUCH = TRUE

CHECK_90_ALSO = TRUE orientation = {PERPENDICULAR}

PARALLEL_POINT_PROJECTION = TRUE & external1_edge(


EDGE_METRIC = OPPOSITE & extension = NONE_INCLUSIVE)
OUTPUT_EDGES (default)

PARALLEL_POINT_PROJECTION = FALSE & external1_edge(extension = NONE,


EDGE_METRIC = OPPOSITE & OUTPUT_EDGES projection = {IN})

EDGE_METRIC = RADIAL & OUTPUT_EDGES external1_edge(extension = RADIAL)

EDGE_METRIC = SQUARE & OUTPUT_EDGES external1_edge(extension = SQUARE)

HORIZONTAL_ONLY = TRUE direction = {HORIZONTAL}

OUTPUT_EDGES = TRUE external1_edge(...)

RECTANGULAR = TRUE output_type = EXTENTS

REGION = TRUE & WIDTH = value width = value

VERTICAL_ONLY = TRUE direction = {VERTICAL}

WIDTH = value width = value

FLAG_INSIDE_EDGE_TOUCH = TRUE #NA#

INSIDE_EDGE( #NA#
FLAG_INSIDE_PNT_TOUCH = TRUE)

FLAG_OUTSIDE_EDGE_TOUCH #NA#

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-13
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-3 Hercules Commands and Equivalent IC Validator external1() Function (Continued)

Hercules command IC Validator external1() function

FLAG_OUTSIDE_PNT_TOUCH #NA#

DIMENSION #NA#

SEGMENT #NA#

SEGMENT[ANGLE_OPTION] #NA#

SEGMENT_RANGE #NA#

Table B-4 compares the Hercules commands and equivalent IC Validator


external_corner1() function.
Table B-4 Hercules Commands and Equivalent IC Validator external_corner1() Function

Hercules command IC Validator external_corner1() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) connectivity = ALL (default)

FLAG_DISCONNECTED = FALSE connectivity = SAME_NET

NODAL = TRUE connectivity = DIFFERENT_NET

FLAG_ACUTE_ANGLE = FALSE #NA#

FLAG_ACUTE_ANGLE = TRUE (default) #NA#

INSIDE = TRUE #NA#

OVERLAP = TRUE #NA#

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE #NA#

TOUCH = TRUE #NA#

TOUCH_FILTER #NA#

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-14
IC Validator Reference Manual Version N-2017.12-SP2

Table B-4 Hercules Commands and Equivalent IC Validator external_corner1() Function


(Continued)

Hercules command IC Validator external_corner1() function

NON_PARALLEL = FALSE (default) #NA#

NON_PARALLEL = TRUE #NA#

NON_PARALLEL_ONLY = TRUE #NA#

PARALLEL = TRUE #NA#

PARALLEL_POINT_PROJECTION = TRUE type = {PARALLEL_POINT_PROJECTION}


(default)

PARALLEL_POINT_PROJECTION = FALSE #NA#

CHECK_SAME_POLYGON = FALSE (default) membership = DIFFERENT_POLYGON

CHECK_SAME_POLYGON = TRUE membership = ALL (default)

FLAG_ACUTE_EDGE = TRUE #NA#

FLAG_ADJACENT_EDGE = FALSE (default) #NA#

FLAG_ADJACENT_EDGE = TRUE #NA#

FLAG_NOTCH_ACUTE #NA#

SET_CORNERS_TO_SPACING = FALSE #NA#

SET_CORNERS_TO_SPACING = TRUE (default) #NA#

BOX_CORNER = TRUE region = SQUARE

CONCAVE_TO_CONVEX type = {CONVEX_TO_CONCAVE}

CONCAVE_TO_EDGE #NA#

CONCAVE_TO_EDGE #NA#
[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE #NA#
[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX type = {CONVEX_TO_CONVEX}

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-15
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-4 Hercules Commands and Equivalent IC Validator external_corner1() Function


(Continued)

Hercules command IC Validator external_corner1() function

CONVEX_TO_CONVEX[POINT_PROJECTION] type = {CONVEX_TO_CONVEX},


convex_to_convex_boundary =
INCLUSIVE_PARALLEL

CONVEX_TO_CONVEX_FILTER external_corner1_edge(...,
type = {CONVEX_TO_CONVEX},
output_type = POINT_TO_POINT)
& length_edge(...)

CONVEX_TO_EDGE type = {CONVEX_TO_EDGE}

CONVEX_TO_EDGE[ #NA#
INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONVEX_TO_EDGE[ #NA#
OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_EDGE_FILTER external_corner1_edge(...,
type = {CONVEX_TO_EDGE},
output_type = POINT_TO_POINT)
& length_edge(...)

FILTER_VECTOR external_corner1_edge(...,
output_type = POINT_TO_POINT)
& length_edge(...)

FLAG_ON_CORNER_PROJECTION_BOUNDARY convex_to_concave_boundary = INCLUSIVE

SQUARE_CORNER = TRUE angle = RIGHT

LONGEDGE[LONGEDGE_TO_EDGE] #NA#

EDGE_45 #NA#

NON_PARALLEL & EDGE_45 #NA#

NO_CUT #NA#

NO_CUT_FILTER = FALSE (default) edge_endpoints = CORNER (default)

NO_CUT_FILTER = TRUE edge_endpoints = ALL

SHADOW = TRUE & look_thru = NONE


SHADOW_OTHER_LAYER = FALSE (default)

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-16
IC Validator Reference Manual Version N-2017.12-SP2

Table B-4 Hercules Commands and Equivalent IC Validator external_corner1() Function


(Continued)

Hercules command IC Validator external_corner1() function

SHADOW = FALSE look_thru = ALL

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#


& SHADOW_EDGE_TOUCH = TRUE

CHECK_90_ALSO = TRUE #NA#

PARALLEL_POINT_PROJECTION = TRUE & #NA#


EDGE_METRIC = OPPOSITE &
OUTPUT_EDGES (default)

PARALLEL_POINT_PROJECTION = FALSE & #NA#


EDGE_METRIC = OPPOSITE & OUTPUT_EDGES

EDGE_METRIC = RADIAL & OUTPUT_EDGES #NA#

EDGE_METRIC = SQUARE & OUTPUT_EDGES #NA#

HORIZONTAL_ONLY = TRUE #NA#

OUTPUT_EDGES = TRUE external_corner1_edge(...)

RECTANGULAR = TRUE #NA#

REGION = TRUE & WIDTH = value #NA#

VERTICAL_ONLY = TRUE #NA#

WIDTH = value #NA#

FLAG_INSIDE_EDGE_TOUCH = TRUE #NA#

INSIDE_EDGE( #NA#
FLAG_INSIDE_PNT_TOUCH = TRUE)

FLAG_OUTSIDE_EDGE_TOUCH #NA#

FLAG_OUTSIDE_PNT_TOUCH #NA#

DIMENSION #NA#

SEGMENT #NA#

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-17
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-4 Hercules Commands and Equivalent IC Validator external_corner1() Function


(Continued)

Hercules command IC Validator external_corner1() function

SEGMENT[ANGLE_OPTION] #NA#

SEGMENT_RANGE #NA#

Table B-5 compares the Hercules commands and equivalent IC Validator internal1()
function.
Table B-5 Hercules Commands and Equivalent IC Validator internal1() Function

Hercules command IC Validator internal1() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) #NA#

FLAG_DISCONNECTED = FALSE #NA#

NODAL = TRUE #NA#

FLAG_ACUTE_ANGLE = FALSE intersecting = {}

FLAG_ACUTE_ANGLE = TRUE (default) intersecting = {ACUTE} (default)

INSIDE = TRUE #NA#

OVERLAP = TRUE #NA#

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE relational = {POINT_TOUCH}

TOUCH = TRUE #NA#

TOUCH_FILTER #NA#

NON_PARALLEL = FALSE (default) orientation = {PARALLEL}

NON_PARALLEL = TRUE orientation = {ACUTE, PARALLEL}


(default)

NON_PARALLEL_ONLY = TRUE orientation = {ACUTE}

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-18
IC Validator Reference Manual Version N-2017.12-SP2

Table B-5 Hercules Commands and Equivalent IC Validator internal1() Function (Continued)

Hercules command IC Validator internal1() function

PARALLEL = TRUE orientation = {PARALLEL},


orthogonal = BOTH,
extension = NONE_INCLUSIVE

PARALLEL_POINT_PROJECTION = TRUE projection = {IN, ON, OUT} (default)


(default)

PARALLEL_POINT_PROJECTION = FALSE extension = NONE,


projection = {IN}

CHECK_SAME_POLYGON = FALSE (default) #NA#

CHECK_SAME_POLYGON = TRUE #NA#

FLAG_ACUTE_EDGE = TRUE adjacent_edge(layer, length < value,


angle1 < 180, angle2 < 180)

FLAG_ADJACENT_EDGE = FALSE (default) intersecting = {}

FLAG_ADJACENT_EDGE = TRUE intersecting = {ACUTE} (default)

FLAG_NOTCH_ACUTE #NA#

SET_CORNERS_TO_SPACING = FALSE extension = NONE_INCLUSIVE

SET_CORNERS_TO_SPACING = TRUE (default) extension = RADIAL,


corner_configuration = ALL,
projection = {IN, ON, OUT} (default)

BOX_CORNER = TRUE extension = SQUARE

CONCAVE_TO_CONVEX #NA#

CONCAVE_TO_EDGE #NA#

CONCAVE_TO_EDGE #NA#
[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE #NA#
[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX #NA#

CONVEX_TO_CONVEX[POINT_PROJECTION] #NA#

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-19
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-5 Hercules Commands and Equivalent IC Validator internal1() Function (Continued)

Hercules command IC Validator internal1() function

CONVEX_TO_CONVEX_FILTER #NA#

CONVEX_TO_EDGE #NA#

CONVEX_TO_EDGE[ #NA#
INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONVEX_TO_EDGE[ #NA#
OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_EDGE_FILTER #NA#

FILTER_VECTOR #NA#

FLAG_ON_CORNER_PROJECTION_BOUNDARY #NA#

SQUARE_CORNER = TRUE #NA#

LONGEDGE[LONGEDGE_TO_EDGE] projection_length

EDGE_45 orthogonal = NEITHER

NON_PARALLEL & EDGE_45 orthogonal = ONE_OR_NEITHER

NO_CUT #NA#

NO_CUT_FILTER = FALSE (default) #NA#

NO_CUT_FILTER = TRUE #NA#

SHADOW = TRUE & #NA#


SHADOW_OTHER_LAYER = FALSE (default)

SHADOW = FALSE #NA#

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#

SHADOW = TRUE & SHADOW_OTHER_LAYER = TRUE #NA#


& SHADOW_EDGE_TOUCH = TRUE

CHECK_90_ALSO = TRUE orientation = {PERPENDICULAR}

PARALLEL_POINT_PROJECTION = TRUE & internal1_edge(


EDGE_METRIC = OPPOSITE & extension = NONE_INCLUSIVE)
OUTPUT_EDGES (default)

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-20
IC Validator Reference Manual Version N-2017.12-SP2

Table B-5 Hercules Commands and Equivalent IC Validator internal1() Function (Continued)

Hercules command IC Validator internal1() function

PARALLEL_POINT_PROJECTION = FALSE & internal1_edge(extension = NONE,


EDGE_METRIC = OPPOSITE & OUTPUT_EDGES projection = {IN})

EDGE_METRIC = RADIAL & OUTPUT_EDGES internal1_edge(extension = RADIAL)

EDGE_METRIC = SQUARE & OUTPUT_EDGES internal1_edge(extension = SQUARE)

HORIZONTAL_ONLY = TRUE direction = {HORIZONTAL}

OUTPUT_EDGES = TRUE internal1_edge(...)

RECTANGULAR = TRUE output_type = EXTENTS

REGION = TRUE & WIDTH = value width = value

VERTICAL_ONLY = TRUE direction = {VERTICAL}

WIDTH = value width = value

FLAG_INSIDE_EDGE_TOUCH = TRUE #NA#

INSIDE_EDGE( #NA#
FLAG_INSIDE_PNT_TOUCH = TRUE)

FLAG_OUTSIDE_EDGE_TOUCH #NA#

FLAG_OUTSIDE_PNT_TOUCH #NA#

DIMENSION not_rectangles(...)

SEGMENT length_edge(...)

SEGMENT[ANGLE_OPTION] adjacent_length(layer, angle1, angle2)

SEGMENT_RANGE length_edge(...)

AppendixB:B:Hercules™
Chapter Hercules™Runset
RunsettotoICICValidator
ValidatorRunset
RunsetMigration
Migration
Dimensional Functions B-21
IC
IC Validator
Validator Reference
Reference Manual
Manual N-2017.12-SP2
Version N-2017.12-SP2

Table B-6 compares the Hercules commands and equivalent IC Validator


internal_corner1() function.
Table B-6 Hercules Commands and Equivalent IC Validator internal_corner1() Function

Hercules command IC Validator internal_corner1() function

CELL_LEVEL = FALSE (default) processing_mode = HIERARCHICAL (default)

CELL_LEVEL = TRUE processing_mode = CELL_LEVEL

FLAG_DISCONNECTED = TRUE (default) #NA#

FLAG_DISCONNECTED = FALSE #NA#

NODAL = TRUE #NA#

FLAG_ACUTE_ANGLE = FALSE #NA#

FLAG_ACUTE_ANGLE = TRUE (default) #NA#

INSIDE = TRUE #NA#

OVERLAP = TRUE #NA#

OVERLAP = TRUE & INSIDE = TRUE #NA#

POINT_TOUCH = TRUE #NA#

TOUCH = TRUE #NA#

TOUCH_FILTER #NA#

NON_PARALLEL = FALSE (default) #NA#

NON_PARALLEL = TRUE #NA#

NON_PARALLEL_ONLY = TRUE #NA#

PARALLEL = TRUE #NA#

PARALLEL_POINT_PROJECTION = TRUE type = {PARALLEL_POINT_PROJECTION}


(default)

PARALLEL_POINT_PROJECTION = FALSE #NA#

CHECK_SAME_POLYGON = FALSE (default) #NA#

Appendix B: Hercules™ Runset to IC Validator Runset Migration


Dimensional Functions B-22
IC Validator Reference Manual Version N-2017.12-SP2

Table B-6 Hercules Commands and Equivalent IC Validator internal_corner1() Function


(Continued)

Hercules command IC Validator internal_corner1() function

CHECK_SAME_POLYGON = TRUE #NA#

FLAG_ACUTE_EDGE = TRUE #NA#

FLAG_ADJACENT_EDGE = FALSE (default) #NA#

FLAG_ADJACENT_EDGE = TRUE #NA#

FLAG_NOTCH_ACUTE #NA#

SET_CORNERS_TO_SPACING = FALSE #NA#

SET_CORNERS_TO_SPACING = TRUE (default) #NA#

BOX_CORNER = TRUE region = SQUARE

CONCAVE_TO_CONVEX type = {CONVEX_TO_CONCAVE}

CONCAVE_TO_EDGE #NA#

CONCAVE_TO_EDGE #NA#
[INSIDE_CORNER_TO_OUTSIDE_EDGE]

CONCAVE_TO_EDGE #NA#
[OUTSIDE_CORNER_TO_INSIDE_EDGE]

CONVEX_TO_CONVEX type = {CONCAVE_TO_CONCAVE}

CONVEX_TO_CONVEX[POINT_PROJECTION] type = {CONCAVE_TO_CONCAVE},


concave_to_concave_boundary =
INCLUSIVE_PARALLEL

CONVEX_TO_CONVEX_FILTER internal_corner1_edge(...,
type= {CONCAVE_TO_CONCAVE},
output_type = POINT_TO_POINT)
& length_edge(...)

CONVEX_TO_EDGE type = {CONCAVE_TO_EDGE}

CONVEX_TO_EDGE[ #NA#
INSIDE_COR

Das könnte Ihnen auch gefallen