Skill translator usage guide

Post on 07-May-2015

1.263 views 8 download

Transcript of Skill translator usage guide

Tao-Yi Lee

Advisor: Dr. Yu-Jiu Wang

Institute of Electronics, RFVLSI Lab

National Chiao -Tung University

pCell to HFSS Macro

Translator Tutorial

Operating Java GUI for Translator

• Download latest Jave runtime environment (JRE)

• For debugging, open a Java console

– Use the console in integrated design env. (e.g.

Netbeans, Eclipse)

– Use Windows “cmd” and type (PATH variable may need

to be set before use)

4/18/2014 Cadence pCell to HFSS Macro Translation 2

X:\> java –jar skill_to_hfss.jar

Setting an Environment Variable

• Right click on My Computer, click “properties”

4/18/2014 Cadence pCell to HFSS Macro Translation 3

Console View

• Use the information in it for debugging (e.g. when

program crashes)

4/18/2014 Cadence pCell to HFSS Macro Translation 4

Operate Modes

• Translate *.vbs and load manually after some

modifications

• Fully automated HFSS 3D modeling from SKILL

source only

4/18/2014 Cadence pCell to HFSS Macro Translation 5

Translate *.vbs and Load Manually After

Some Modifications• Get all the input files ready and hit “generate macro” to

translate *.il file

• Text edit the output vbs– Prepend custom variables

– Prepend IMD/substrate variables (thickness, Z-position, permittivity, etc.)

– Prepend metallization variables (thickness, Z-position, bulk conductivity, etc.)

– Append Boolean operations (unite, subtract)

– Append lumped port definitions

• Setup an *.hfss project, containing frequency analysis, and parameterized boundary conditions

4/18/2014 Cadence pCell to HFSS Macro Translation 6

Translate *.vbs and Load Manually After

Some Modifications

• Use regular expression processor in MATLAB to substitute parameters in vbs

• Modeling phase:

– Use vbs template from ANTLR to generate actual vbs’ for specific parameters

– Use MATLAB HFSS API to load vbs’

• Simulating phase:

– Equally (or Weighted) distribute HFSS projects (*.hfss) into different folders, depending on how many computers you have

– Call HFSS command to start remote simulations in parallel

4/18/2014 Cadence pCell to HFSS Macro Translation 7

hfss.exe -ng -Batchsolve -Remote -machinelist

list="em0.rfvlsi.ee.nctu.edu.tw" <design_name> <filename>

Translate *.vbs and Load Manually After

Some Modifications

4/18/2014 Cadence pCell to HFSS Macro Translation 8

ProjectVariablesMetallization Parameters

Dielectric ParametersBoolean Operations

“AutoIdentifyPorts” Operations

GUI Translator

(ANTLR)

SKILL Source

Code

Vbs raw macro

for HFSS

Parameterized

vbs template for

HFSS

vbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSvbs macro

for HFSSText Substitution

HFSS API call

HFSS Setup ProjectFrequency Sweep

Analysis Setup

Parameterized Boundary Condition

Detailed *.vbs Modifications Procedure

• A typical *.vbs script needs to have the following operations sequentially– Header and Project Initialization

– Custom variables

– Metal/IMD definitions

– Vias/box creation functions

– SKILL translated functions

– Top-level function call

– Boolean operations

– Lumped port auto-identification

4/18/2014 Cadence pCell to HFSS Macro Translation 9

Step 1: Header and Project Initialization

4/18/2014 Cadence pCell to HFSS Macro Translation 10

Dim oAnsoftApp

Dim oDesktop

Dim oProject

Dim oDesign

Dim oEditor

Dim oModule

Set oAnsoftApp = CreateObject("AnsoftHfss.HfssScriptInterface")

Set oDesktop = oAnsoftApp.GetAppDesktop()

oDesktop.RestoreWindow

oDesktop.OpenProject

"F:\Dropbox\ANTLR\HFSS_API\examples\T65_SYM_CT_ANTLR\nominal.hfss"

Set oProject = oDesktop.GetActiveProject

oProject.SaveAs "G:\HFSS_SIMULATIONS\T65_SYM_CT\HFSS_FILENAME.hfss",

true

Set oDesign = oProject.SetActiveDesign("BEOL_6X1Z1U")

Set oEditor = oDesign.SetActiveEditor("3D Modeler")

Set oProject = oDesktop.GetActiveProject

Step 2: Custom Variables

4/18/2014 Cadence pCell to HFSS Macro Translation 11

oProject.ChangeProperty Array("NAME:AllTabs",

Array("NAME:ProjectVariableTab", Array("NAME:PropServers", _

"ProjectVariables"), Array("NAME:ChangedProps",

Array("NAME:$M9_W", "Value:=", "W_VALum")))) ‘ capitalized

letters are for text substitution in MATLAB

oProject.ChangeProperty Array("NAME:AllTabs",

Array("NAME:ProjectVariableTab", Array("NAME:PropServers", _

"ProjectVariables"), Array("NAME:ChangedProps",

Array("NAME:$M9_S", "Value:=", "S_VALum")))) ‘ capitalized

letters are for text substitution in MATLAB

oProject.ChangeProperty Array("NAME:AllTabs",

Array("NAME:ProjectVariableTab", Array("NAME:PropServers", _

"ProjectVariables"), Array("NAME:ChangedProps",

Array("NAME:$OD", "Value:=", "OD_VALum")))) ‘ capitalized

letters are for text substitution in MATLAB

Step 3: Metal/IMD Definitions

4/18/2014 Cadence pCell to HFSS Macro Translation 12

Set oEditor = oDesign.SetActiveEditor("3D Modeler")

Function MetalHeight(iLayer)

Select Case iLayer

Case -2 'PO

MetalHeight=-2.0

Case -1 'OD

MetalHeight=-1.0 ‘ use hard-wired definitions

Case 0 'M1

MetalHeight="$M1_Z“ ‘ use variable definitions

Case 1 'M2

MetalHeight="$M2_Z“ ‘ use variable definitions

Case 8 'M9

MetalHeight="$M9_Z“ ‘ use variable definitions

Case Else 'AP

MetalHeight="$M10_Z“ ‘ use variable definitions

End Select

End Function

Step 4: SKILL translated functions

• Substitute sqrt() into Sqr()

• Substitute evenp() into a Mod 2 <> 0

• Substitute oddp() into a Mod 2 = 0

• Minor modifications may be needed when scripting

error pops up in HFSS, find your own solutions and

take notes

4/18/2014 Cadence pCell to HFSS Macro Translation 13

Step 5: Boolean Operations

4/18/2014 Cadence pCell to HFSS Macro Translation 14

A = oEditor.GetMatchedObjectName("Metal9*") ‘ unite all Metal9*

oEditor.Unite Array("NAME:Selections", "Selections:=", Join(A,",")),

Array("NAME:UniteParameters", "KeepOriginals:=", _

false)

A = oEditor.GetMatchedObjectName("Metal8*") ‘ unite all Metal8*

oEditor.Unite Array("NAME:Selections", "Selections:=", Join(A,",")),

Array("NAME:UniteParameters", "KeepOriginals:=", _

false)

A = oEditor.GetMatchedObjectName("Via8*") ‘ unite all Via8*

oEditor.Unite Array("NAME:Selections", "Selections:=", Join(A,",")),

Array("NAME:UniteParameters", "KeepOriginals:=", _

false)

Step 6: Boolean Operations

4/18/2014 Cadence pCell to HFSS Macro Translation 15

A = oEditor.GetMatchedObjectName("Metal9*")

oEditor.Subtract Array("NAME:Selections", "Blank Parts:=", "IMD_9aEQ", "Tool

Parts:=", Join(A,",")), Array("NAME:SubtractParameters", "KeepOriginals:=",

true) ‘subtract IMD_9aEQ from Metal 9

oEditor.Subtract Array("NAME:Selections", "Blank Parts:=", "IMD_9bEQ", "Tool

Parts:=", Join(A,",")), Array("NAME:SubtractParameters", "KeepOriginals:=",

true) ‘subtract IMD_9bEQ from Metal 9

oEditor.Subtract Array("NAME:Selections", "Blank Parts:=", "IMD_9cEQ", "Tool

Parts:=", Join(A,",")), Array("NAME:SubtractParameters", "KeepOriginals:=",

true) ‘subtract IMD_9cEQ from Metal 9

Step 7: Lumped Port Auto-identification

4/18/2014 Cadence pCell to HFSS Macro Translation 16

Set oModule = oDesign.GetModule("BoundarySetup")

oModule.AutoIdentifyPorts Array("NAME:Faces", 26981,

26993, 27005), false, Array("NAME:ReferenceConductors",

"M1"), "1", true ‘Indentify conductors on face 26981,

26993 and 27005. Reference conductor (GND) set to

metal 1. Get the numbers from your “HFSS nominal setup

project.” Open a face property window from ”Modeler”

tab.

oProject.Save ‘save project to HDD