2009년 9월 1일 화요일

Verilog in Source Insight

그 동안 Verilog source 편집을 AcroEdit으로 하다가, 얼마 전에 SourceInsight로 갈아탔다.
SourceInsight는 아피스 다닐 때 효석형으로부터 알게 된 유용한 소스 편집 툴이다.

Windows 환경에서 작업할 때는 보통 소스 편집기와 디버거가 내장된 IDE (MS VC++, Java Netbeans)를 사용하는데,
Unix 환경에서 작업하면 Windows 환경에서 소스를 편집해서 FTP로 Unix로 복사해서 컴파일 및 테스트하는 방법을 사용한다.
원래 vi나 emacs에 능숙하면 Unix에서 바로 작업할 수도 있을텐데, vi나 emacs를 습득하기 위한 learning curve가 나에게 너무 가파르고 (우선 당장 작업해야 하는 경우가 많아서), FTP로 복사하는 것에 큰 불편함을 느끼지 못한다 (지금까지 작업했던 프로젝트의 규모에서는;  물론 메이플스토리 같은 엄청난 규모의 프로젝트는 매번 FTP 복사하기엔 무리가 있을 것이다.ㅎ)
흔히 사람들은 vi나 emacs가 엄청나게 편리하다고 얘기하는데,
AcroEdit 같은 편집기도, macro, replace word 등의 기능을 충분히 지원하고 (이미 그 단축키들을 외우고 있고)
어쨌거나 마우스가 없던 시절을 위해 설계된 vi, emacs가, 마우스를 사용하는 여타 편집기보다 강력할 수 있을지 의문이다.ㅎㅎ

아무튼 본론으로 돌아가서, 위와 같은 이유로 전에는 AcroEdit을 사용했는데, 문득 SourceInsight를 사용하면 더 좋지 않을까 하는 생각이 들었다.  AcroEdit은 프로젝트 개념이 없어서 (다시 보니 있구나.ㅎㅎ 아무튼; ),  매번 관련 source를 일일이 열어야 하는 불편함이 있었다.  그리고 결정적으로 keyword highlight이 되지 않는 것이 가독성을 떨어뜨린다.

본래 SourceInsight도 Verilog 언어를 기본적으로 지원하진 않는다.  대신 language를 추가하는 기능이 있고, 홈페이지에서 Verilog 지원 파일을 제공한다.  하지만 이 파일에 심각한 결함이 있다:

verilog.PNG

본래 Verilog syntax에서는 위와 같이 선언 후에 oPixel_0, oPixel_1을 이어 쓸 수 있는데, verilog.clf 파일에서는 이를 인식하지 못한다.  각자 선언을 다른 줄에 해 주면 문제 없지만, 이렇게 코드를 작성하는 것은 불편하며, 이미 작성된 코드를 바꾸기도 싫다.
그리고 전체 코드가 다음과 같이 일부 highlight 되지 않는 것도 불편하다:

verilog2.PNG

Source Insight는 custom language를 정의할 수 있는 인터페이스를 제공하고 있으며, verilog.clf도 이를 이용해서 만들어진 것이다.
Custom language의 세부 사항은 Options - Document Options - Language - Properties 에서 확인 가능하다.

sourceinsight.PNG

여기에서 주요 keyword에 대한 선언 방식이 regular expression으로 정의되어 있는 것을 볼 수 있다.
Source Insight에서 사용하는 regular expression에 대한 설명은 홈페이지에서 제공한다.

컴파일러 수업에서 regular expression을 배웠으므로, Verilog의 올바른 문법에 맞게 고치려는 시도를 해 보았다.

wire\w+\[.*\]\w+\([a-zA-Z][a-zA-Z0-9_]*\)
wire\w+\([a-zA-Z][a-zA-Z0-9_]*\)

wire\w+\[.*\]\w+\([a-zA-Z][a-zA-Z0-9_]*\)\w*,\w*\([a-zA-Z][a-zA-Z0-9_]*\)
wire\w+\[.*\]\w+\([a-zA-Z][a-zA-Z0-9_]*\)(\w*,\w*\([a-zA-Z][a-zA-Z0-9_]*\))+

위와 같이 whitespace, comma, whitespace 후에 새로운 keyword를 받으면 될 것 같지만, 안 된다;
여기까지 포스팅 하고, 추가 분석은 다음에 시간 나면.ㅎㅎ

덤으로, AcroEdit에서 tab는 2칸 띄우는데, SourceInsight에서는 5칸?이어서 보기에 안 좋다.
AcroEdit에서는 tab이 ‘\t’(ASCII 0×09) 대신 ‘ ‘(ASCII 0×20)을 2개 입력하는 것인가?

아무튼 결론은 좋은 editor를 사용하는 것이 중요하다는 거 ;)

Entry Filed under: Electrical Engineering

댓글 없음:

댓글 쓰기