No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
pCell to HFSS Macro Translator Tutorial
1. Tao-Yi Lee
Advisor: Dr. Yu-Jiu Wang
Institute of Electronics, RFVLSI Lab
National Chiao -Tung University
pCell to HFSS Macro
Translator Tutorial
2. 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
3. Setting an Environment Variable
• Right click on My Computer, click “properties”
4/18/2014 Cadence pCell to HFSS Macro Translation 3
4. Console View
• Use the information in it for debugging (e.g. when
program crashes)
4/18/2014 Cadence pCell to HFSS Macro Translation 4
5. 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
6. 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
7. 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>
8. Translate *.vbs and Load Manually After
Some Modifications
4/18/2014 Cadence pCell to HFSS Macro Translation 8
ProjectVariables
Metallization Parameters
Dielectric Parameters
Boolean Operations
“AutoIdentifyPorts” Operations
GUI Translator
(ANTLR)
SKILL Source
Code
Vbs raw macro
for HFSS
Parameterized
vbs template for
HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSS
vbs macro
for HFSSText Substitution
HFSS API call
HFSS Setup Project
Frequency Sweep
Analysis Setup
Parameterized
Boundary Condition
9. 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
10. 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:DropboxANTLRHFSS_APIexamplesT65_SYM_CT_ANTLRnominal.hfss"
Set oProject = oDesktop.GetActiveProject
oProject.SaveAs "G:HFSS_SIMULATIONST65_SYM_CTHFSS_FILENAME.hfss",
true
Set oDesign = oProject.SetActiveDesign("BEOL_6X1Z1U")
Set oEditor = oDesign.SetActiveEditor("3D Modeler")
Set oProject = oDesktop.GetActiveProject
11. 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
12. 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
13. 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
14. 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)
15. 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
16. 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