Automation using Python script VBS 와 Python 을이용한시뮬레이션자동화 Brandon Kim ANSYS Korea 1 2017 ANSYS, Inc. November 17, 2017
Script 란? Script 는별도의 compile 과정없이 Window 나 Tool 안에서 source code 상태로바로실행가능한프로그래밍언어를말합니다. ANSYS 는 VBS (Visual Basic Script) 와 IronPython Script 를지원합니다. HFSS, Designer, Q3D, Maxwell, Simplorer 와같은전자해석 tool 에서 user 가수행하는모든작업을사람이알아볼수있는 script code 형태로 저장가능합니다. 이렇게저장된 script 를편집하거나필요시 GUI 를덧붙임으로서 자동화프로그램을제작할수있습니다. 2 2017 ANSYS, Inc. November 17, 2017
Automation Script Process Script 저장시작 작업수행 - Project/Design 추가 - 회로 / 모델 Drawing - 해석설정및해석 - 결과 Plot 및 Export Script 저장종료 Script 수정및재실행 기본적으로자동화 Script code 는만드는게아니라저장한후에수정하여사용 User 가선택하고입력하는모든작업과정을 Script 로저장할수있음 3 2017 ANSYS, Inc. November 17, 2017
Script 예제 : Series Cap S-para analysis 직렬 cap 에대해 S parameter sweep 을수행하고, cap 값을변경해가면서 S11 결과를각각 csv 파일로저장하는예제 Script file 4 2017 ANSYS, Inc. November 17, 2017
Recording / Stop Script Tools 메뉴에서 Record Script To File을선택한후각종작업을수행한다음, 다시 Stop Script Recording을선택하면저장이종료됩니다. 5 2017 ANSYS, Inc. November 17, 2017
VB / Python Script 선택 Record Script To File 선택후파일형식을선택하는화면에서어떤 language 로 script 를저장할지선택할수있습니다. 6 2017 ANSYS, Inc. November 17, 2017
Python Vs. VBS Interface (GUI) External Function Hide Source Code IronPython.Net base Read.py,.dll file are possible Compile to DLL, EXE file Visual Basic Script Message box Input box Write in script file Visual Basic Script 는 Excel/Word 등과호환성이좋으며, VB6 등을이용하여초보자도쉽게 GUI를제작할수있다. Python은 GUI 제작이 code base로되어있어서다소까다롭지만, Machine Learning tool과의연계성이나 code의유연성, 암호화측면에서유리하다 ( 현재는 Python이대세 ) 7 2017 ANSYS, Inc. November 17, 2017
Python code Vs. VBS code (Drawing Box) Python VBS 예 ) Box 의 x,y,z 방향크기값 두 script code 를비교해보면, 비슷한내용인데약간의문법만다를뿐입니다. Python 쪽이특징별로줄맞춤이잘되어있어서원하는변수위치를찾기편합니다. 8 2017 ANSYS, Inc. November 17, 2017
저장된 Python Script file 저장된 file 을열어보면수행된작업을기록한 Python Script 를확인할수있습니다. 9 2017 ANSYS, Inc. November 17, 2017
저장된 Script 내용자세히살펴보기 1. 기본선언부및 Project / Design 생성 2. Capacitor 배치 3. Capacitor 값입력 4. Port 추가 5. Linear Analysis Setup 추가 6. 해석수행및 S11 Plot 7. 그래프를 csv 파일로저장 10 2017 ANSYS, Inc. November 17, 2017
1. 기본선언부및 Project / Design 생성 script 공통선언문 ( 수정불필요 ) 신규 Project 생성 Circuit Design 추가. 아래두줄은 Circuit design 추가시자동으로해당 design을선택해주고편집모드를시작해주는선언문 11 2017 ANSYS, Inc. November 17, 2017
2. Capacitor 배치 script Cap 이추가된것임을 확인할수있음 Cap 이배치된좌표 12 2017 ANSYS, Inc. November 17, 2017
3. Capacitor 값입력 Script 입력된 cap 값확인 13 2017 ANSYS, Inc. November 17, 2017
4. Port 추가 Script 14 2017 ANSYS, Inc. November 17, 2017
5. Linear Analysis Setup 추가 Script 다른설정영역으로넘어갈때는자동으로 module 변환줄이추가됨 Linear Frequency (S 파라미터해석 ) 추가 주파수 sweep 범위및 step ( 본예제의경우는 1MHz 에서 100MHz 까지 log scale 로 100 point 설정 ) 15 2017 ANSYS, Inc. November 17, 2017
6. 해석수행및 S11 Plot S11 을지정하여 plot 16 2017 ANSYS, Inc. November 17, 2017
7. 그래프를 csv 파일로저장 저장하고자하는 Plot 이름 저장하려는 folder 위치및파일명 저장된 CSV 파일 17 2017 ANSYS, Inc. November 17, 2017
Script 재실행 메뉴의 Tools Run Script를선택하고저장된 script 파일을선택하면, 저장된과정이그대로재현되면서 Drawing, 설정, 해석및결과 export까지자동으로수행됨. 18 2017 ANSYS, Inc. November 17, 2017
Script 수정후재실행 Cap 값의위치를찾아서 200pF 로수정후저장 다시 Run Script Script 를다시실행하면자동으로변경된 cap 값으로 다시회로를구성하여해석된결과를표시. 19 2017 ANSYS, Inc. November 17, 2017
Script 자동화에앞서 앞에서보였던것처럼, user가수행하는각종작업을모두사람이알아볼수있는 Text 형태의 Script file로저장할수있습니다. ( 외계어아닙니다 ) 해석결과와무관한 Zoom / Pan 과같은 UI 기능은저장되지않습니다. ( 예외적으로 Fit All은저장 ) 각각의 Script line을살펴보면, 중요한입력변수들의위치를알아보기쉽게잘정리되어있습니다. Script 를수정하여다른형태의동작을구현하려면, 먼저변경을원하는값을 프로그램변수로만들어주는것이편리합니다. 20 2017 ANSYS, Inc. November 17, 2017
프로그램변수설정하기 변수명과값을숫자로입력 변수를단위와함께 script 의해당위치에삽입 Python은별도의변수선언이필요없으며, 그냥변수명과값만지정하면값의특성에따라알아서정수형, 실수형, 문자형중에서지정됩니다. 변수를 script에넣을때는단위와함께넣어야하며, 단위 (pf) 는문자형변수이기때문에이를합치기위해서는숫자형변수를문자형으로바꾸어주는 str( ) 구문이추가됩니다. 21 2017 ANSYS, Inc. November 17, 2017
반복문 (for) 추가하기 C1 값을 100 pf 에서 1000pF 까지 100pF 씩증가시켜가면서반복 For 문을이용하면변수를정해진범위안에서 sweep하면서구문을반복할수있습니다. Python에서 for문은별도의반복범위종료선언 (next) 가없으며, 탭키를이용하여한칸안쪽으로들어간구문들을반복하게됩니다. ( 파란색화살표위치 ) 22 2017 ANSYS, Inc. November 17, 2017
Export 파일이름자동으로지정하기 For 문영역안에 export 구문을추가하고 (tab 키이용 ) 위와같이저장할파일명중간에 변수값을포함하게하면알아보기쉬운파일명을자동으로생성할수있습니다. 23 2017 ANSYS, Inc. November 17, 2017
Lesson 1 1. 해석과정을 script 로저장 2. Script 수정 3. 변수별로해석된결과를 외부파일로각각저장 위와같은기본적인 script 활용을통해, user가 tuning하고싶은변수범위의해석결과를별도의외부파일로자동적으로생성해낼수있습니다. 이렇게생성된변수별결과파일들을 Machine Learning Tool의 training data로사용할수도있습니다. 24 2017 ANSYS, Inc. November 17, 2017
Python Example #2 : Q3D Extractor 1. Create Box 4 duplicate 2. Auto Net assign & Simulation Setup 3. Analysis & export GC 25 2017 ANSYS, Inc. November 17, 2017
Example #2 : Q3D Python Script 26 2017 ANSYS, Inc. November 17, 2017
Q3D Python Script Trace (box) 그리기 시작좌표및방향별크기 이름및재질, 색상, 기타설정부 27 2017 ANSYS, Inc. November 17, 2017
Q3D Python Script Trace 복제하기 (4 개 ) 복제할원본개체 복제방향및거래, 개수 28 2017 ANSYS, Inc. November 17, 2017
Q3D Python Script 해석설정및해석, 데이터추출 Net 자동인식하기 Simulation Setup 설정하기 저장후해석하기 GC 데이터를 CSV 파일로 export 하기 29 2017 ANSYS, Inc. November 17, 2017
Run Script 모든 project 를닫고저장된 Python script 파일을실행하면동일한작업을재현 Script 내용만다를뿐, Designer, HFSS, Q3D, Maxwell 등의 ANSYS Tool 은모두동일한과정으로자동화가능합니다. 30 2017 ANSYS, Inc. November 17, 2017
Python script 변수추가하기 Trace 와길이와폭을변수로추가 변수에기반한모델생성 31 2017 ANSYS, Inc. November 17, 2017
Python Script 의수정및재실행 Script 내의변수값을변경하면서다시 Run script 를실행하면변경된값에기반하여재수행 For 문을통해특정범위로변수를 sweep 도가능 If 문을추가하여조건문으로도생성가능 32 2017 ANSYS, Inc. November 17, 2017
Python Script 로자동 export 된데이터 CSV 형태로추출된 capacitance matrix 데이터 별도의 python code 를추가하여결과값으로 Data 처리및분류도가능 예 ) 여러 cap 값중특정 net 과 net 간의 mutual cap 값만지정하여저장 33 2017 ANSYS, Inc. November 17, 2017
다양한변수값에기반한결과파일 export Width = 0.4, Length = 1.3 Width = 0.5, Length = 1 Width = 0.5, Length = 1.5 Width = 0.5, Length = 2 Width = 0.7, Length = 1.8 Width = 1, Length = 1.2 다양한변수화조건에따라생성된 Cap 값데이터 34 2017 ANSYS, Inc. November 17, 2017
ML Tool 로의적용례 Simulation Tool X Input Width = 0.4, Length = 1.3 Width = 0.5, Length = 1 Width = 0.5, Length = 1.5 Width = 0.5, Length = 2 Width = 0.7, Length = 1.8 Width = 1, Length = 1.2 ML (Tensorflow) Y Output 이러한변수별결과 data 를 ML Tool 의 Training data set 로바로활용가능 35 2017 ANSYS, Inc. November 17, 2017
Siwave R18.2 Python Script Siwave의경우는 R18.2 부터 Python Script가 Help와함께지원됩니다. Siwave는 PCB CAD 환경해석특성상 HFSS/Designer/Q3D/Maxwell 등과달리 script recording 방식이아니며, help를참조로 user가 code를직접제작해야해서약간더까다롭습니다. 36 2017 ANSYS, Inc. November 17, 2017
자동화 Visual 환경구축 Via 자동생성 wizard VB6 / Visual studio 환경을활용하면, script code에기반한입력용 GUI 제작이가능합니다. 입력창을 UI로구성하고, 실행은 ANSYS script code로구성하면자동으로 tool을실행하고 Drawing과설정, 해석및결과 plot/export까지예쁘게자동화할수있습니다. 37 2017 ANSYS, Inc. November 17, 2017
자동화 tool GUI 사례 Coupled line 자동설계 / 분석 tool (HFSS/Designer 용 ) 전송선로자동분석 tool (HFSS 용 ) DDR 자동화분석 tool (Siwave/Designer 용 ) Touch Panel 자동설계 / 분석 tool (Q3D 용 ) Touch Panel Linearity 분석 tool (Q3D 용 ) TDR 자동해석기 (Siwave 용 ) 38 2017 ANSYS, Inc. November 17, 2017
Simulation 보조용 tool GUI 사례 Siwave HFSS RLC 소자변환기 GDS import 후 net name 생성기 3D Bonding wire 자동생성기 Solderball 생성기 39 2017 ANSYS, Inc. November 17, 2017
Python Visual Studio Download https://www.visualstudio.com 에서무료다운로드가능 40 2017 ANSYS, Inc. November 17, 2017
Visual Studio Install Install 과정에서 Python 개발을선택하고설치합니다. 41 2017 ANSYS, Inc. November 17, 2017
Visual Studio ANSYS Python Script 환경구성 ANSYS EM tool 이설치된폴더안에들어있는 Python script 관련파일들을등록하여새로운환경을추가합니다. 42 2017 ANSYS, Inc. November 17, 2017
Visual Studio Python project 만들기 43 2017 ANSYS, Inc. November 17, 2017
ANSYS Python coding in Visual Studio 환경을구축하고나면 Visual Studio 안에서 ANSYS tool을 control하는 python code를제작하고관리할수있으며, GUI coding도가능합니다. Window GUI 환경을구축하기에는 VB6 환경이초보자에게는좀더편리합니다. Visual Studio에서 TensorFlow와같은 ML tool환경도함께 coding 가능합니다. 44 2017 ANSYS, Inc. November 17, 2017
Conclusion VBS 또는 Python script를잘활용하면, simulation tool의 Drawing, 설정, 해석및결과 plot과같은모든동작을 code로구현하여동작시킬수있습니다. ANSYS가오래전부터사용해오던 VBS는 Excel/Word와호환성이좋고 GUI 환경구축이편리하지만, 현재의대세는 Python 이라고할수있습니다. 여기에 for문과 if문의조합으로사용자가원하는 logic을구현하면특정변수를자동으로 sweep하면서결과까지생성해내는자동화해석이가능합니다. 추가적으로 GUI coding을수행하면폼나게 Window Program처럼만들어사용할수도있습니다. TensorFlow와같은 python 기반의 Machine Learning tool과연계하여, 외부에서 ANSYS tool을 control하여해석및 data 추출이가능합니다. 45 2017 ANSYS, Inc. November 17, 2017