PintoPin XML Interface

An XML interface is available for complete non-graphical execution of PinToPin. This enables rapid and repeatable model creation from previously captured “template” XML files. Additionally, XML documents are easily generated by most scripting languages, simplifying the integration of PinToPin in external applications.

For simplicity, the XML schema is included as an embedded resource in the Ansys.Ansoft.EdbBuilderUtils.dll assembly. Upon request, it can be provided as a stand-alone xsd file. Rather than focus on schema, this document instead describes common use cases of the XML interface.

Basics

The easiest way to generate a comprehensive, design-specific XML document is to translate and export to XML using the GUI, or to translate and export XML on the command-line:

PinToPinSetup translate.xml my_design.xml

Where translate.xml is:

<?xml version="1.0"encoding="utf-8"standalone="yes"?><c:Control SourceDataFileName="C:\fairbairn_new_DBdoctor165_BB.brd"xmlns:c="http://www.ansys.com/EDBBuilderUtils/SetupInfo"/>

Note the SourceDataFileName attribute provides the path to the input for PinToPin. All non-graphical XML execution requires this be provided.

Each XML document also allows for the following elements:

Options

Optionally specify the PortNamingConvention and ImportXNets option:

<Options>

<PortNamingConvention Value="$REFDES.$NETNAME"/>

<ImportXNets>False</ImportXNets>

</Options>

Stackup

The optional Stackup element includes material definitions and layers. It may be used to re-define materials or to change parameters in a stackup, as described in a later section.

Nets

Specify the net configuration. If a net is not included in the XML, it is not imported (unless captured by the ImportXNets option). Pwr/Gnd nets must have the Class=”Power/Ground” attribute:

<Nets>

<Net Name="B-MII-RXD0" PinsBecomePorts="true" Import="True"/>

<Net Name="B-MII-RXD1" PinsBecomePorts="true" Import="True"/>

<Net Name="GND" Class="Power/Ground" Import="True"/>

</Nets>

CutoutSubdesign

If appropriate, describe the clipping polygon for the design. Note the Clip element should always reference NetClass=”Power/Ground”.

<CutoutSubdesign>

<Auto Type="Conformal" Expansion="0.01"oundCorners="False"/>

<Clip NetClass="Power/Ground"/>

</CutoutSubdesign>

Definitions

Specify bondwire and part definitions:

<Definitions>

<CDNWirebond File="C:\Ansoft_Wire_Profiles.xml"/>

<PartMap>

<Part Name="ABC123">

<NPortModel Type="Touchstone" FileName="C:\test.s2p"/>

</Part>

</PartMap>

</Definitions>

Boundaries

Define the model extents:

<Boundaries>

<Extents Type="bbox" DielHorizFactor="0" AirboxHorizFactor="0.15" AirboxVertFactorPos="0.15" AirboxVertFactorNeg="0.15" UseRadiationBoundary="True"/>

</Boundaries>

Components

This element is used to specify the component configurations. When exporting from PinToPin, itcontains every component in the layout. However, only those components requiring solderballs or a model other than their default need be included. Many of the attributes are included to enable GUI execution directly from an XML file but are not requiredfor non-graphical model creation.

<Components schemaVersion="1.0">

<Component RefDes="U2" PartName="SQFP28X28_208" PartType="IC">

<DieProperties Type="Flip chip" Orientation="Chip down" Height="0"/>

<SolderballProperties Shape="Cylinder" Diameter="168um" MidDiameter="168um" Height="279um"/>

<PortProperties ReferenceOffset="0" ReferenceSizeAuto="True" ReferenceSizeX="0" ReferenceSizeY="0"/>

</Component>

<Component RefDes="C1" PartName="CC0603" PartType="Capacitor" NumPins="2">

<DieProperties Type="None" Orientation="Chip up" Height="0.0"/>

<SolderballProperties Shape="None" Diameter="610um" MidDiameter="610um" Height="1.02mm"/>

<PortProperties ReferenceOffset="0.0" ReferenceSizeAuto="True" ReferenceSizeX="" ReferenceSizeY=""/>

<RLCModel Type="Series" C="10uF"/>

</Component>

...

A minimal amount of information can be provided to enable solderball creation on a component. For example:

<Component RefDes="U2" PartType="IC">

<SolderballProperties Shape="Cylinder" Height="333um"/>

</Component>

Remaining parameters uses default values.

Setup

One or more simulation Setups can be provided. The Setup element is used to describe simulation parameters and frequency sweeps for HFSS analysis. The SIwaveSetup element is used to describe simulation parameters and frequency sweeps for SIwave analysis.

<Setup schemaVersion="1.0">

<Fadapt>5GHz</Fadapt>

<MaxNumPasses>10</MaxNumPasses>

<MaxMagDeltaS>0.02</MaxMagDeltaS>

<MinNumPasses>1</MinNumPasses>

<MinConvergedPasses>1</MinConvergedPasses>

<BasisOrder>Mixed</BasisOrder>

<UseIterativeSolver>False</UseIterativeSolver>

<IterativeSolverRelativeResidual>0.0001</IterativeSolverRelativeResidual>

<CurveApproxSettings>

<ArcAngle>12deg</ArcAngle>

<StartAzimuth>0</StartAzimuth>

<MaxArcPoints>10</MaxArcPoints>

<UseArcToChordError>True</UseArcToChordError>

<ArcToChordError>10um</ArcToChordError>

</CurveApproxSettings>

<FreqSweep Name="Sweep1" UseQ3DForDC="False">

<Interpolating RelativeErrorS="0.5" UseErrorZ0="False" PercentErrorZ0="1" EnforceCausality="False" EnforcePassivity="False" PassivityTolerance="0.0001">

<LinearStep Start="0" Stop="5000000000" Step="50000000"/>

</Interpolating>

</FreqSweep>

</Setup>

<SIwaveSetup Name="SIwave Setup 1">

<SISimulation>Balanced</SISimulation>

<FreqSweep Name="TestSweep1" ComputeExactDCPoint="True" Use3DDDM="False">

<Interpolating RelativeErrorS="0.2">

<LinearStep Start="0" Stop="10e9" Step="50e6"/>

</Interpolating>

</FreqSweep>

</SIwaveSetup>

<SIwaveSetup Name="SIwave Setup 2">

<PISimulation>OptimumAccuracy</PISimulation>

<FreqSweep Name="Sweep1" Use3DDDM="True">

<Interpolating>

<DecadeCount Start="1e3" Stop="10e9" Count="10"/>

</Interpolating>

</FreqSweep>

</SIwaveSetup>

Stackup Modification

Often, 3rd-party data does not contain material definitions and stackup suitable for simulation. In this case, the Stackup element can be used to make modifications.

Material definitions may be overridden by name:

<Material Name="FR-4">

<Permittivity>

<Double>4.5</Double>

</Permittivity>

<Permeability>

<Double>1</Double>

</Permeability>

<Conductivity>

<Double>0</Double>

</Conductivity>

<DielectricLossTangent>

<Double>0.002</Double>

</DielectricLossTangent>

</Material>

New materials can also be defined, then referenced in the stackup.

The Stackup/Layer element may be used to change specific attributes of a named layer, for instance to change the thickness of layer TOP:

<Layer Name="TOP" Type="conductor" Thickness="1.4"/>

Material, Fill Material, Thickness, RoughnessVal, and Color can all be changed.

It is not appropriate to know the stackup names to change properties. If Layer names are omitted, the Stackup are mapped by layer type, with layer properties modified for the first matching sequence of layers:

<Layers LengthUnit="mil">

<Layer Material="AIR" Thickness="2" Type="dielectric"/>

<Layer FillMaterial="AIR" Material="COPPER" Thickness="1.5" Type="conductor"/>

<Layer Material="FR-4" Thickness="7" Type="dielectric"/>

<Layer FillMaterial="FR-4" Material="COPPER" Thickness="1.4" Type="conductor"/>

<Layer Material="FR-4" Thickness="18" Type="dielectric"/>

<Layer FillMaterial="FR-4" Material="COPPER" Thickness="1.4"Type="conductor"/>

<Layer Material="FR-4" Thickness="7" Type="dielectric"/>

<Layer FillMaterial="FR-4" Material="COPPER" Thickness="1.4" Type="conductor"/>

<Layer Material="FR-4" Thickness="18" Type="dielectric"/>

<Layer FillMaterial="FR-4" Material="COPPER" Thickness="1.4" Type="conductor"/>

<Layer Material="FR-4" Thickness="7" Type="dielectric"/>

<Layer FillMaterial="AIR" Material="COPPER" Thickness="1.5" Type="conductor"/>

<Layer Material="AIR" Thickness="2" Type="dielectric"/>

</Layers>

Finally, layers can be deleted on the design altogether. This can be useful when trying to reduce model complexity:

<Layers>

<Layer Name="UNNAMED_000" Delete="True"/>

<Layer Name="TOP" Delete="True"/>

<Layer Name="UNNAMED_002" Delete="True"/>

<Layer Name="RDL" Delete="True"/>

<Layer Name="UNNAMED_004" Delete="True"/>

<Layer Name="UNNAMED_006" Delete="True"/>

<Layer Name="M1_TS" Delete="True"/>

<Layer Name="UNNAMED_008" Delete="True"/>

<Layer Name="UBM_BS" Delete="True"/>

<Layer Name="UNNAMED_010" Delete="True"/>

</Layers>

Component Models

Resistor, Capacitor, and Inductor components can be assigned S-parameter, series or parallel RLC, and netlist models, specified at definition level as:

<Definitions>

<PartMap>

<Part Name="PartA">

<NPortModel Type="Touchstone" FileName="TCM0403R-900.s4p"/>

</Part>

<Part Name="PartB">

<RLCModel Type="Series" L="1111nH"/>

</Part>

<Part Name="PartC">

<NetlistModel SolveIndependent="True">

R1@ID %0 1_@ID 22.000000

L1@ID 1_@ID %1 0.22n

R2@ID %2 1_@ID 22.000000

L2@ID 1_@ID %3 0.22n

</NetlistModel>

</Part>

</PartMap>

</Definitions>

When a PartMap is provided, all component instances of a given part are assigned that model. Each component can override the PartMap of its definition by specifying a Model override. For example, a resistor of type “PartA” can use an alternate S-parameter model with an instance override:

<Component RefDes="R201" PartName="PartA" PartType="Resistor">

<NPortModel Type="Touchstone" FileName="viawizard_HFSSDesign1.s4p"/>

</Component>

XML ENTITY references have been enabled to facilitate maintenance of Part definitions from external files. From the preceding example, this is accomplished by including the ENTITY reference as:

<?xml version="1.0" encoding="utf-8" standalone="no"?>

<!DOCTYPE doc[<!ENTITY partMapFile SYSTEM "C:\Components\partmap.xml">]>

The Definitions element is then given as:

<Definitions>

<PartMap>&partMapFile;</PartMap>

</Definitions>

Pin Groups

Pin Groups can be created for each component by referencing either Nets or explicit Pins. Once a Pin Group has been created, to use it in a Port definition, it must be referenced in a subsequent Port element. Various combinations of these constructs can be seen here:

<Component RefDes="U7" ...>

...

<!--Inclusion by net-->

<PinGroup Name="U7.GND_PG">

<Net Name="GND"/>

</PinGroup>

<PinGroup Name="U7.VCC_PG">

<Net Name="VCC"/>

</PinGroup>

<Port Name="U7.VCC" Z0="0.002">

<PinGroup Name="U7.VCC_PG"/>

<PinGroup Name="U7.GND_PG"/>

</Port>

<!--Port between two Pin Groups -->

<Port Name="U7.B-MII-RXD0" Z0="50">

<Pin Name="131"/>

<PinGroupName="U7.GND_PG"/>

</Port>

<!--Port between Pin and PG -->

<Port Name="U7.B-MII-RXD1" Z0="50">

<Pin Name="132"/>

<PinGroup Name="U7.GND_PG"/>

</Port>

</Component>

Surface Roughness

To define surface roughness models, include new xml elements under Options:

<c:Control xmlns:c=" http://www.ansys.com/EDBBuilderUtils/SetupInfo ">

<Options>

<PortNamingConvention Value="$REFDES.$NETNAME" />

<DefaultRoughness RoughnessVal="0.51" HallHuraySurfaceRatio="2.91" />

<DefaultTopRoughness RoughnessVal="0.52"/>

<DefaultBottomRoughness RoughnessVal="0.53" HallHuraySurfaceRatio="2.93" />

<DefaultInternalRoughness RoughnessVal="0.54" />

</Options>

<CutoutSubdesign>

<Auto Type="BBox" Expansion="0.05" RoundCorners="False" />

...

All of these are optional. Application proceeds as follows:

IF layer has an explicit roughness model use it

ELSE

IF layer is top-most conductor:

IF DefaultTopRoughness is defined use it

ELSE IF DefaultRoughness is defined use it

ELSE IF layer is bottom-most conductor:

IF DefaultBottomRoughness is defined use it

ELSE IF DefaultRoughness is defined use it

ELSE

IF DefaultInternalRoughness is defined use it

ELSE IF DefaultRoughness is defined use it