이번에는 batch file에 대해서 알아보기 위해 'run xdlrc_convert.bat' file 분석을 해보겠습니다.


setlocal

명령어로 local variation을 사용한다고 설정한다.


set /p ans=Run xdlrc_convert for all Virtex-5 devices? [y/n]

명령어는 ans라는 variable에 값을 받을 것인데, /p 옵션을 통해서 Run xdlrc_convert for all Virtex-5 devices? [y/n] 이라는 글도 같이 뜨도록 만들어 주는 것이다.


if not "%ans%"=="y" goto end

이것은 ans라는 variable에 y가 아니면 끝내는 명령어이다.


set V5DEVICES=xc5vfx30tff665

는 V5DEVICES라는 variable에 xc5vfx30tff665를 넣어주는 것이다.


set V5DEVICES=%V5DEVICES% xc5vfx70tff665

명령어는 위에서 V5DEVICES variable에 xc5vfx30tff665가 입력되었는데, 그 뒤에 xc5vfx70tff665도 붙여주는 것이다.

그럼 결과적으로 V5DEVICES variable 내부에는 'xc5vfx30tff665 xc5vfx70tff665'가 들어있게 된다.


아래에서도 계속해서 비슷하게 해서 V5DEVICES 내부에 'xc5vfx30tff665 xc5vfx70tff665 xc5vfx70tff1136' 이런식으로 들어가게 된다.


이 아래에는 이번에 새로 xdl 명령어를 추가하기 위해 추가한 

call C:\Xilinx\14.7\ISE_DS\settings64.bat

명령어를 입력해주게 되는데, 이것은 C:\Xilinx\14.7\ISE_DS\settings64.bat 파일을 실행시켜주는 것이다.


cd /D "%~dp0..\data"

명령어를 통해서 ~~\bil-master\data로 명령어를 실행시킬 path를 설정한다.

'~dp0'는 처음에 이 batch file을 실행시킬 때의 argument에 대한 것인데, 0번 째 argument로 현재 directory path를 들고 온 것이다. 그래서 ~dp0는 ~\bil-master\scripts\를 의미한다.


xdl -report -pips -all_cons %%i

명령어를 통해서 V5DEVICES에 넣어놓았던 xc5vfx30tff665 같은 특정 보드들을 하나씩 가져와서 해당 ISE 명령어를 돌린다.

이 결과로 ~\bil-master\data\에 .xdlrc file이 만들어진다.

(그런데 여기서 모든 보드를 위한 것들은 안만들어진다. 이유는 잘 모르겠는데 Webpack version이라 그런 것일 수도 있다는 생각을 했다. 일단 한개의 보드 용으로만 돌아가면 될 것이라 생각하여 지금은 넘어갔다)

(+. 옆에서 win10으로 했을 때는 동일하게 했는데 다른 보드도 성공했다.)


"%~dp0..\bin\win32\MSVC 2008\xdlrc_convert\Release\xdlrc_convert" %%i.xdlrc

위의 명령어는 번역하면 아래와 같다.

~\bil-master\bin\win32\MSVC 2008\xdlrc_convert\Release\xdlrc_convert.exe xc5vfx30tff665.xdlrc

여기서 xc5vfx30tff665.xdlrc는 예제이다. 이것은 for문이 돌아갈 때 마다 다음 보드명으로 바뀔 것이다. (xc5vfx30tff665.xdlrc 다음 xc5vfx70tff665.xdlrc 이런 식으로)

이 명령어의 결과로는 ~.xdlrc file을 이용하여 ~.dev file을 ~\bil-master\data에 만들어준다.

이것이 논문에서 봤던 ~.xdlrc file은 너무 커서 간략화시킨 file을 만들어준 것이다.


del %%i.xdlrc

이 명령어를 이용해서 ~.xdlrc file을 지워주었다. ~.xdlrc file은 너무 커서 ~.dev file을 생성하고 지워준다.

이번에는 BIL code를 구동하기 위해서 어떤 일들을 해야 하는지 알아보겠습니다.


일단 bil-master/scripts에 ‘copy cfgdbs.bat’ 부터 실행한다.


그 다음에 ‘run v5data_gen.bat’를 실행한다.


그리고 ‘run xdlrc_convert.bat’를 실행하려니 xdl명령어를 모른다는 문제가 생긴다.

(“‘xdl’ 은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다” 라고 나온다)

(그런데 결국 이것은 *.dev file을 만들려고 있는 것인데, 처음에 압축파일을 풀면 있기 때문에 안돌려도 된다.....)

그래서 ISE를 깔아야 하나 싶어서 ISE v14.7을 다운받았다.

내부에서는 Free Version인 Webpack을 선택하여 설치한다.

얘는 license가 필요없다.

근데 windows 환경은 얘를 설치만 해서는 xdl command가 뭔지 모른다.


그래서 windows command에서 xdl command를 알아들을 수 있도록 해주어야 한다. (ISE Tcl Console에서는 xdl command가 돌아가는 것을 확인했다.)

그래서 [Solved:  ‘xdl’ is not recognized as an internal or external… - Community Forums](https://forums.xilinx.com/t5/Implementation/xdl-is-not-recognized-as-an-internal-or-external-command/td-p/724809) 페이지를 확인하니, ‘setting64’라는 것을 xdl 전에 실행해야 한다고 나온다.

그래서 ‘run xdlrc_convert.bat’ 내부에서 xdl command 실행하기 전에

‘call C:\Xilinx\14.7\ISE_DS\settings64.bat’  명령어를 입력해놓았다.

이러니까 xdl command를 알아듣고 돌아갔다.


이 다음에는 v5cfgmap_gen을 실행한다.

그러면 \bil-master\data\에 *.map file들이 만들어진다.


그리고 run bitcorrelate.bat를 돌리면 잘 돌아가고 Configuration Database가 나오게 된다.

그러면 이제 논문의 Fig. 1에서 원하는 것들은 모두 돌아간 것이다.


이제 Configuration Database가 만들어졌으니 Fig. 2을 참조하여 계속해서 다른 프로그램을 돌리면 된다.

'Research > FPGA Security' 카테고리의 다른 글

[Analysis - BIL] Batch file (run xdlrc_convert.bat)  (0) 2018.04.06

이번 글에서는 학교 선택에 있어 어떤 사항들을 고려할지 이야기 해보려고 합니다. 고려할 때 우선적인 요소들부터 순서대로 정리하였고, 어떤 생각을 했는지 적었습니다.


1. 연구 주제

- 저의 가장 기본적인 research interest는 security입니다. 기본적으로 저는 security 분야의 연구라면 세부 분야는 크게 신경을 쓰지 않으려고 했습니다. 왜냐하면 박사과정은 아주 긴 과정이고 제가 좀 더 알아가는 동안 관심분야가 바뀔 수 있다고 생각했기 때문입니다. 하지만 너무 세부전공이 달라질 수는 없으니 중간정도가 좋지 않을까 하는 막연한 생각은 가지고 시작했습니다. 다행히 저희 과에서는 analog, digital, software에 관한 모든 과목들이 개설되어 core 과목들은 모두 들었기 때문에 최소한의 기본지식은 가지고 있었던 상황이었습니다. 또한, 모든 지원서를 security 관련으로 적었기 때문에 그냥 admission을 받은 곳에서 결정하면 되었습니다. Security 세부전공에 대해서는 아래에 추가 내용으로 붙여놓았습니다.


2. 교수님 [Personality/Specific Research Interest/Performance/Position(Assistant, Associate, Full)]

- 위에 대괄호로 정리해놓은 것들이 제가 교수님을 선택할 때 우선적으로 고려했던 순서입니다. 


가장 먼저 교수님의 인성이 중요하다고 생각했고, 그 기준은 학생을 대하는 태도 + 학생에게 얼마나 자유를 주는가 였습니다. 5년 정도 함께 생활할 분인데, 스트레스를 받으며 해서는 많은 성과를 낼 수는 있어도, 좋은 성과는 내기 힘들것이라 생각했습니다. 또한 제가 연구하고 싶은 시간에 자유롭게 연구를 해야 좋은 성과를 낼 수 있을 것이라 생각했습니다. 회사를 다녀보니 무작정 9시까지 출근해서 일하라고 하는 것은 정말 비효율적이었고, 원하는 시간에 일어나서 연구할 수 있는 환경을 원했습니다. 기본적으로 연구실 내부 및 주변 연구실 한국분들에게 어느정도 이야기를 듣고 지원하였기 때문에 이 부분은 큰 문제가 없을 것이라 생각했습니다. 초임 조교수님들 2분도 계셨는데, 사실 이분들에 대해서는 들을 곳이 없으니 약간 불안하긴 했습니다.


다음으로는 연구 세부분야에 관한 것 인데요, 보통은 이 부분을 연구 주제로들 이야기 합니다. 저는 학사출신이기도 하고 security 분야이기만 하면 된다는 생각에 크게 신경쓰지는 않았는데요, 그래도 admission 확률을 높이기 위해, 좀 더 많은 경험을 했었던 low level로 지원을 많이 하였습니다.


Performance는 제가 완전히 대가가 아니면 구별하기가 어려웠습니다. 이 부분은 사실 관련 전공자들의 도움을 받는 편이 좋은데요, 좋은 학교에서 테뉴어를 받았고, publication list를 보고 계속해서 괜찮은 conference에 논문을 내고 있는 곳에만 지원을 하였기 때문에 큰 문제는 없을 것이라 생각했습니다.


교수님이 tenure를 받았는지, assistant인지는 사실 크게 신경을 안썼던 것 같습니다. 



3. 미래 전망

- 졸업생들의 placement를 체크해 보는 것이 일단 가장 좋은 방법입니다. 그리고, 해당 세부분야에 대해서 여기저기 물어보는 것이 중요합니다. 저는 유학 가있는 선배들 및 목표 랩실 사람들에게 연락하여 물어봤습니다. 이런 미래 전망은 어드미션을 받고 나서 하는 것이 좀 더 자세히 알려주는 것 같습니다. 랩 홈페이지에서 alumni 부분에서도 많은 정보를 얻을 수 있었습니다.


4. 학위 취득 기간

- Gatech에서 제가 가려는 연구실에서는 보통 5년만에 다들 졸업하는 것 같았습니다. 그런데 전공에 따라서 이게 기본 7년 이상 올라가는 학교도 있었습니다. 만약 7년을 하게 되더라도 너무 늦는 나이는 아니라 생각하여 큰 신경은 쓰지 않았습니다. 하지만 나이가 많아지면 스트레스를 받긴 하겠다고 생각했습니다.


5. 이민비자(NIW) 가능성

- 연구주제와 연관 됩니다. 왜냐하면, 많은 논문을 작성할 수 있어야지 확률을 높일 수 있기 때문입니다. 미국에서 살고싶다면, 미리 어떤 것들을 해야 이민비자를 받을 수 있을지 알아보고 준비하는 것도 좋아보입니다.


6. Work Load

- 이 부분은 사실 처음부터 크게 신경 안썼습니다. 어쩌피 어딜 가나 회사보다 편하다는 이야기도 많이 들었고, 놀러 가는것도 아닌 이상 어느정도 각오는 하고 있었습니다.


7. 위치

- 처음에는 위치를 정말 많이 신경썼습니다. 하지만 나중에 든 생각으로는 어쩌피 학교 근처에서 계속 살 것도 아니고, 좋은 성과를 낸 다음에 졸업하고 옮기면 된다는 생각을 갖게 되었습니다. 하지만 그래도 추운 지역보다는 따뜻한 지역을 선호했는데, 다행히 합격한 곳들은 모두 최소 우리나라 정도여서 큰 문제가 없었습니다.


(추가 내용)


- Security는 여러 level로 나뉘어 있는데, 간단히 다음처럼 정리해 볼 수 있습니다. 먼저 theoretical level에서는 algorithm에 대한 것들이 있고 대표적인 학회로 Crypto, Eurocrypt 같은 학회들이 있습니다. 저는 수학을 많이 사용하는 학과도 아니었고, 이론에 관심이 있는 편이 아니라 여기는 아니라고 생각했습니다. Analog level에서는 crypto primitive design 및 side channel 같은 주제가 있습니다. 이러한 연구는 VLSI, ISSCC, HOST, CHES같은 학회에 논문들이 나옵니다. 이 부분은 회사에서 경험해 본 부분이었습니다. 그리고 digital level에서는 architecture, systems security에 관한 연구가 있습니다. 관련된 학회로는 Eurosys, ISCA, ASPLOS, MICRO, HPCA 정도가 있겠네요. 마지막으로 software level에서는 대부분의 사람들이 security에 대해 생각하는 것이기도 하고 너무 많아서 넘어가도록 하겠습니다. 여기에 관련되어있는 학회는 IEEE S&P, NDSS, CCS, Usenix 등이 있겠습니다. 사실 모든 세부분야에 학회를 다 알지 못하기 때문에 이런 것들이 있구나 하고 참고만 해주세요. 다음에 기회가 되면 좀 알아보고 적어보도록 하겠습니다.

+ Recent posts