Author Archives: babyworm

verilog-mode: verilog coder를 위한 Emacs의 친구..

태초에 두가지 에디터를 종교로 삼는 집단이 있었으니, 한 부류는 vi를 숭배했으며 또한 부류는 emacs를 숭배하였다.

종종 신앙으로까지 불리울 정도로 [[Emacs]]나 [[vi]]는 폭넓은 사용자 층을 지니고 있습니다. 물론, 국내에서는 unix/linux환경보다는 압도적인 PC환경이고, 설계도 왠만하면 PC에서 수행하려는 경향이 강한지라.. [[ultraedit]]나 [[acroedit]]를 좋아하시는 분들이 더 많습니다.

물론, 한번 빠져들면 종교가 될 정도로 강력한 vim+ctags 의 조합은 대부분의 PC용 에디터보다 훨씬 좋았습니다. 그러한 종교를 개종 시킬만큼 강력한 강적이 나타났으니 바로 [[verilog-mode]] 입니다.
최근 [[linux]]의 emacs에는 대부분 verilog-mode가 같이 깔려 있는데, 특히 top module에서 하위 모듈을 instantiation할때 엄청나게 편합니다!!!!!

간략하게 설명드리자면, [[verilog]] mode는 emacs에서 사용되는 verilog 입력 모드인데, AUTO라는 강력한 기능이 있습니다. 예를 들어, /*AUTOARG*/같은 경우

module aaa(/*AUTOARG*/);

와 같이 적어두고, 필요한 입출력들을 기술하면 module의 argument는 자동적으로 생성됩니다.

가장 강력한 기능이라 생각하는 부분은 /*AUTOINST*/기능인데, 이 기능은 만일 aaa라는 모듈을 instantiate할때

aaa U0_aaa(/*AUTOINST*/)

라고만 적어두면, 자동적으로 aaa.v를 읽고, 그 입출력을 분석해서 /*AUTOINST*/라고 되어 있는 부분에 name based instantiation을 수행합니다.

회사 후배들에게 농담으로 하는 말로, 1시간은 낑낑댈거, 10초면 합니다. 단순히 Ctrl-C, Ctrl-A를 눌러서 원하는 하위 모듈을 instance할 수 있으니까요. 그래서, 재미삼아 xemacs에서 verilog mode를 한번 쓴 이후에는 계속 emacs에 적응중입니다. (물론, vim에서 emacs batch command로 설정해서 verilog mode를 사용할 수도 있습니다. 그런데, 스타일이 별로입니다. (탭이 들어가죠..전 탭을 싫어해서.))

emacs 자체도 상당히 강력한지라 (역시 종교라니까요~), 즐겁게 작업할 수 있습니다.

개인적으로는 verilog mode의 단점으로 몇몇 환경 설정에서 단점이 보였습니다.
우선, /*AUTOARG*/ 나 /*AUTOINST*/ 에서 출력, 입력 순으로 나열되는 것입니다.
이건, 사실 예~~~전의 primitive를 만들때의 design rule이고, 요즘 RMM 룰로 보았을때는 클럭,리셋,입력,출력의 순이 되어야 정상인데 말입니다.

그래서, input/output 순서가 가능한한  RMM의 형식에 맞도록 수정된 verilog-mode를 만들어 봤습니다. Lisp를 잘 몰라서, 대충만 바꿨지만 쓰는데 문제는 없어 보입니다.

또, 국내 실정상 linter를 잘 쓰지 않기 때문에 이 부분은 nc-verilog에서 문법 체크만 하는 옵션으로, 헤더는 개인적인 license헤더로 수정되어 있습니다.  필요한 경우 그 부분만 수정하시면 되겠습니다.

verilog-mode에 유용한 자료로서, 저자가 SNUG에서 발표한 verilog-mode의 간략한 설명입니다.

이걸 보시면, verilog-mode가 어떤것인지 아주 쉽게 이해가 되실것입니다.
.. 여담이지만, 외국 SNUG에서는 이런 좋은 발표가 많은데… 유독 SUNG korea의 경우는 좀 약한 면이 없잖아 있어서 아쉽습니다.

verilog mode에 대한 자세한 사항은 http://www.verilog.com/ 혹은 http://www.veripool.com/ 에서 해당 자료를 얻을 수 있습니다.

25GB 저장공간을 제공하는 무료 웹하드!

AMD에서 만든 AMD LIVE! Media Vault 이라는 서비스가 생겼습니다.
오늘 회사 후배가 알려주었는데, 무료인 경우에도 제공되는 저장공간이 무려 25G 입니다.

http://amd.streamload.com/Brands/AMD/home/home.aspx (더이상 존재하지 않는군요.. 2012 Apr. 16)

단지, 몇가지 제약 사항이 있습니다.
우선 한달동안 다운 받을수 있는 총량은 1G..(에게~).
한번에 올릴수 있는 파일의 크기 제한은 25M

자유로운 웹하드라 볼수는 없지만, 자료 보관 용도로는 괜찮을 듯 싶습니다. e-book같은 거 주르륵 넣어놓고 보는 것도 괜찮을듯 하구요..

가입은 아주 간단합니다.

sign-up에 들어가서 요금제(당연히 무료겠죠?) 선택하고, 계정명/패스워드 입력, 이메일 입력
이게 전부입니다.

해본 결과 별로 불편한 점도 없구요.. 쓸만 하군요..

프로세서/비메모리 반도체 설계를 희망하시는 분들께..

간혹, 학부의 후배들이 반도체 설계쪽 일을 하려면 어떻게 해야 하냐고 물어보더군요.
뭐, 저같은 경우는 해당 연구실에 들어가라고 하지만.. 참 추상적인가 봅니다.

비메모리 반도체라는 것은 사실 상당히 넓은 범위를 의미하므로, 제가 하는 쪽 분야 즉, 로직 설계 부분(소위  front-end라고 하는..)에 대해서만 이야기를 하고자 합니다.

학부때 필수적으로 알아야 하는/혹은 들어두어야 하는 과목들은 다음과 같습니다.

1. 디지털 로직: 로직에 대한 기본이 있어야만 이 일을 제대로 할 수 있습니다. 어려울거 없고, 학부 정도의 디지털 로직 부분의 기초만 탄탄하면 됩니다. 사실 디지털 로직은 대학의 전자공학/컴퓨터 공학과에 처음 배우는 것이고 그 이전의 배경지식이 필요없으므로, 가장 편한 과목중의 하나입니다.

2. C/C++ , 컴퓨터 언어: C/C++는 사실 엔지니어간에 있어서 기본 언어입니다. (그야말로 언어! 입니다.) 어떤 동작을 구현하자.. 이런걸 그냥 C/C++로 짜서 전달하는 경우도 많습니다. 그리고, C의 경우 컴퓨터 구조를 많이 포함하고 있어서 도움이 됩니다.

3. 컴퓨터 아키텍쳐: 컴퓨터 아키텍쳐는 딱히 프로세서 설계를 지망하지 않더라도, 하드웨어 설계에 필요한 I/O 프로토콜등의 기본적인 대부분의 지식이 들어 있습니다. 하드웨어 설계를 지망하시는 분들께는 매우 매우 중요한 과목입니다. 소프트웨어 하시는 분들도 “최적화된” 소프트웨어를 작성하시는데 아키텍쳐의 지식이 중요합니다.

아마도 위의 3가지 과목은 하드웨어 설계를 희망하시는 분들께는 가장 중요한 기본 과목이 아닐까 생각합니다. 또한 위의 과목은 “소프트웨어 개발”을 하고자 하시는 분들께도 중요합니다.

하드웨어 설계를 하시고자 하시는 분들은 이외에도 아래 과목을 반드시 들어야 합니다.

디지털 설계: 학교마다 이름이 다릅니다만, 실무적인 일들.. HDL을 다룬다던지 하는 첫 과목입니다. 조금 진보적인 교수님들은 디지털 로직 과정에서 HDL을 다루기도 합니다만..  HDL을 배울때는 반드시 HDL로 로직을 만들었을때 어떻게 구현될 것인가.. 즉 어떤 회로가 나올 것인가를 배워두는 것이 좋습니다. 🙂
게다가 HDL은 하드웨어 설계를 하시는 분들에게는 주된 설계 방법이므로, verilog던 VHDL이던 한가지는 “정통하게” 배워두시는 것이 좋습니다. 그리고, 다른 언어도 읽을 수 있을 정도는 되셔야 합니다.

교양적으로 들어야 하는 과목은 무수히 많습니다만..

  • 전기회로/전자회로/물리전자: 설계시에 여러가지를 이해하는데 많은 도움을 줍니다.
  • 신호처리/디지털 신호처리: 요즘 프로세서가 대부분 신호를 다룹니다. 그래픽, 영상, 음성.. 이런것에 대한 알고리즘을 하드웨어로 만드는 일이 많은데.. 이런일을 하게 될때 도움이 됩니다.
  • 디지털 통신: 통신 프로토콜을 아는 것이 I/O등의 프로토콜을 만ㄴ드는데 참 많이 도움이 됩니다. 물론, 이쪽 설계를 하는 경우도 많고요..
  • 소프트웨어공학: 의외시겠지만.. 소프트웨어 공학에서 배우는 team work 개념은 회사에서 일할때 많은 도움을 줍니다.

실무에서 도움을 줄만한  것들로는

리눅스/유닉스 관리도 해보셨으면 도움이 되고요.. 스크립팅 언어를 배워두는 것도 중요합니다. 노가다를 줄이기 위해서.. ^^;

아마도, 제가 있는 비메모리 설계 분야가 인력 부족을 심하게 겪고 있는 분야가 아닌가 생각됩니다. 발전 가능성도 많고요.. 잘 아시는 대기업들과 많은 중소기업들이 이쪽 분야에 많이 배치되어 있습니다.
위에서 보셨겠지만, 수학/물리의 기본이 적더라도 시작할 수 있는 분야이기도 합니다. 🙂

많은 분들이 도전하셨으면 합니다.