skill translator usage guide
TRANSCRIPT
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