web page logo for 3Di

Introduction

The 3Di format started as a simple description of polygons in the X-Y plane that have a height and thickness attribute. Artwork developed this format as part of the effort to model IC packages and substrates in 3D. We also added property tables that allow one to tag each geometry with useful information: net names, materials, groups and such.

 

The 3Di file is currently produced by Cadence's SIP program and Artwork's NETEX-G/ODB software and Artwork's AWROut plug-in for Allegro -- but in any PCB, IC or micro-electronic design application can produce this file format and then view or check it using 3D-VU. We are documenting this format in case others who wish to develop 3D IC packaging tools would like to use this sd s building block.



3Di Format block diagram header history table list of tables DRC Rules Wire Models(Profiles) Boolean Boundaries Geometries Geometries Components geometry properties/attributes extrusion

Click on any block in the image to get more details.



Header

The first section in the 3Di file should be the header where the version is specified along with the units/resolution. This section is mandatory since without units information the rest of the data is meaningless.

3Di <version> <units> <precision>

Example

3Di 2.2.1 microns 2




Table History

Describes the tools that produced this file. This section is optional. Often more than one tool is used to generate the final output. For example, when exporting from Cadence when the user has specified a data window the initial 3Di file exported is then "clipped" using the 3DiBool program.

<index> <product_name> <product_version> <write_date>

Example

TABLE HISTORY
1 Cadence 3D Design Viewer v16.6.1 [August 9, 2011 12:56:54]
2 3DiBool v1.10 [August 9, 2011 12:57:02]




Boolean

A directive that tells the 3DiBool program how to clip this file. It is generally not necessary for a 3Di parser to be able to read or otherwise interpret this section.

BOOLEAN
BOOL <number> <name>
CLIP <n_points>
<x1> <y1> ... <xn> <yn>
BOOL <number> <name>
SIZE <sizing_value> <table> <index>
BOOL <number> <name>
ARCS <arc_sag>

Example

BOOLEAN
BOOL 1 Sample Clipping      operation, ID and name
CLIP 4                      clip with 4 vertices (autoclosing)
100.0 100.0                 x,y
300.0 100.0                 x,y
100.0 200.0                 x,y
100.0 200.0                 x,y
BOOL 2 Sample Sizing        operation, ID, and name
SIZE 5.0 NET 57             size up by 5.0 mils all members of table NET, index 57



List of Tables

Tables are used when it is more efficient to list values in the table and then refer to them by an index. In order to use tables effectively it is necessary to list the table names before any tables are populated or references are made in the geometry section. There are a number of "standard" tables that 3Di uses and they are listed in the example below. Additional tables can be defined and used since a proper 3Di reader will ignore any table entries it does not understand.

Not all the standard tables shown below will always be present because their existence depends both on the source of the data and the specific 3Di generator.

TABLE <name>

Example

TABLE OBJECT        typically object attribute such as pin, via, trace, pad, shape
TABLE LAYER typically the source layer name such as M1, VIA12
TABLE LAYER_TYPE typically an attribute such as conductor, dielectric
TABLE COLOR an RGB value (0-255) or RGBA where A=transparency
TABLE NET the net name associated with a conducting element
TABLE NET_PINS a pin number or label associated with a net index
TABLE STACK-UP similar to layer but related to a stack up
TABLE WIRE_MODEL if wires are present, wire models are defined this could be used
TABLE CONNECT if connection data was extracted the ID of each element could be put here




DRC Rules

The 3DVU program has an optional DRC rule checking module. A user can define a number of rules that check clearances: wire to wire, body to body and wire to body. These rules can be saved in the 3Di database.

In most cases this section will be empty unless a user opened the 3Di file in 3DVU, defined rules, and then saved the file.

DRC_RULES
RULE <number> <name>
[IGNORE_SAME_NET YES]
<type> <n_inputs> <parameters>
GEOM
<table> <index>
.
.
GEOM
<table> <index>
.
<marker>

Example

DRC_RULES
RULE 1 Wire-Wire Spacing Rule
SPAC 2 25.000000               space rule with 2 inputs and 25 um spacing
GEOM                           first item is a geometry of OBJECT 6 (obviously a wire)
OBJECT 6
GEOM                           second item is a geomety of OBJECT 6 (another wire)
OBJECT 6
GEOM                           the marker is a geometry with COLOR=30 and is a sphere
COLOR 30
SPHE 0.0 0.0 0.0 50.0 12




Wire Models

Bond wires are defined in the geometry section by the wire endpoints. The path that the wire follows is derived from a wire model or profile. More information can be found on the page: Custom Wire Models.

WIRE_MODELS
WIRE_MODEL <number>
<name> <radius> <points> <direction>
STEP
HOR [X] | ANG <value>
[TURN <value>]
VER [X] | ANG <value>
.
.
STEP
.
SWITCH
.
STEP
.

Example

WIRE_MODELS
WIRE_MODEL 1
PROFILE 1 12.500000 4 FORWARD
STEP
HOR 0.000000
VER X 0.250000
STEP
HOR 500.000000
VER X 0.000000

JEDEC_5P 12.700000 5 FORWARD
STEP
ANG 85.000000
VER 250.000000
STEP
HOR X 0.125000
VER -50.000000
SWITCH
STEP
HOR X 0.500000
TURN 5.000000
ANG 5.000000




Boundaries

A directive used primarily by Artwork's engine that converts from 3Di into either STEP/parasolids. It is used to define cutouts routed into the PCB. These cutouts run from the very top to the very bottom of the design.

BOUNDARIES
BOUNDARY
TYPE <type>                       only type supported = DIELECTRIC
COUNT <n_children>                parent poly plus all children (cutouts)
2DPG <n_points>                   2D polygon
<x1> <y1> ... <xn> <yn>

Example

BOUNDARIES

BOUNDARY
TYPE DIELECTRIC
COUNT 5                           this boundary has total 5 polygons
2DPG 65                           first polygon is always the "parent"
-0.097929 -0.393858
0.121863 -0.393858
0.129469 -0.392346
.
.
-0.097929 -0.393858
2DPG 17                           child or "cutout" polygon
-0.116000 0.246409
-0.125793 0.248357
.
.
-0.116000 0.246409
2DPG 24
-0.095395 -0.359758
-0.104464 -0.357996
.
.
-0.086226 -0.358632
-0.095395 -0.359758
2DPG 17
0.085000 -0.346590
.
.
2DPG 17
0.113000 0.318472
0.101700 0.320720



The next section of the 3Di file is the GEOMETRY section.