Tag Archives: synopsys

합성할 때 시뮬레이션에 사용한 list을 이용하기

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; GeSHi has a deprecated constructor in /babyworm/www/wordpress/wp-content/plugins/better-wordpress-syntax-based-on-geshi-disable/includes/geshi/geshi.php on line 259 Deprecated: Function create_function() is deprecated in /babyworm/www/wordpress/wp-content/plugins/better-wordpress-syntax-based-on-geshi-disable/includes/geshi/geshi.php on line 4736
합성 스크립트 만들다가 얼마전에 모 선배가 합성에 필요한 파일 리스트 만드는 거 귀찮다고 한 것이 기억나서 만들어봤습니다.
뭐, TCL을 사용하시는 분들이면 다들 생각하실 만한 것이라 팁이라고 할 것 까지야 없겠습니다만, 처음 접하시는 분들에게는 도움이 될 것 같아서 올립니다.
보통 ncverilog로 시뮬레이션 할때 (다른 것도 마찬가지지만…), .f 파일로 불리는 파일리스트를 만들어서 사용하는데, 합성할때 이걸 왠만하면 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
set LIST_FILE "../../vlist.f"
set RTL_FILES ""
if [ catch { open $LIST_FILE r } fileID ] {
      puts stderr "ERROR: $fileID"
      puts stderr "Can not open file ${LIST_FILE}"
      quit
  } else {
   while { [gets $fileID lbuffer] >= 0 } {
      if {[ regexp {(^/{2})} $lbuffer test1 ]} { continue }
      if {$lbuffer == ""} { continue }
      lappend RTL_FILES $lbuffer
    }
  }
  close $fileID
  foreach design $RTL_FILES {
    analyze -format verilog $design
  }
  elaborate $DESIGN_TOP
set LIST_FILE "../../vlist.f"
set RTL_FILES ""
if [ catch { open $LIST_FILE r } fileID ] {
      puts stderr "ERROR: $fileID"
      puts stderr "Can not open file ${LIST_FILE}"
      quit
  } else {
   while { [gets $fileID lbuffer] >= 0 } {
      if {[ regexp {(^/{2})} $lbuffer test1 ]} { continue }
      if {$lbuffer == ""} { continue }
      lappend RTL_FILES $lbuffer
    }
  }
  close $fileID
  foreach design $RTL_FILES {
    analyze -format verilog $design
  }
  elaborate $DESIGN_TOP
위의 코드 보시면 아시겠지만, 파일을 읽어서 리스트에 넣는 것 이외에는 특별한 것이 없습니다.
단지, 공백행 처리와 주석 처리 부분이 들어가 있습니다.
만일 f 파일에서 ++ 옵션을 사용하시는 분은 여기에 대한 처리를 추가해 주시면 편합니다. (필요하시다면 해당 부분에 간단한 parser를 걸어도 되구요)
요즘은 directory단위로 읽을 수 있는 acs_read_hdl가 더 널리 사용되는 추세입니다. list 파일이 없다면 이것이 절대적으로 편하지요. 디렉토리만 지정하면 subdirectory 뒤져서 파일을 끌고 오니까요.
단, 필요없는 파일은 EXCLUDE_LIST로 지정해야 되어서 약간 귀찮을 때가 있긴합니다.
list가 있다면 위의 코드를 사용하는 것이 더 편하시겠지요.
여하튼.. 도움이 되면 좋겠습니다.
참고적으로 list file에 $MY_HOME/aaa/aaa.v 와 같은 형태로 지정된 경우 위와 같은 analyze를 사용할 수 없습니다. 이때는 간단하게 subfunction을 하나 만들고 synopsys에서 제공하는 parse_proc_arguments 함수를 이용해서 이걸 처리하면 됩니다.[1]더 간단하게는 eval을 사용하면 됩니다만 복잡해지면 subfunction이 더 편하죠
이 방법은 나중에 설명하죠 ^^;
참고적으로 합성 과정에서 define할 것이 없다면 analyze 대신 read_verilog를 사용하셔서 위의 문제를 쉽게 해결 할 수 있습니다. read_verilog는 이미 parse_proc_arguments 를 사용하고 있거든요

Notes & References

Notes & References
1 더 간단하게는 eval을 사용하면 됩니다만 복잡해지면 subfunction이 더 편하죠

Chip IDEA가 MIPS에서 Synopsys로 넘어갔군요.

IP 업계에서는 꽤나 유명한 Chip IDEA가 몇년전에 MIPS로 인수되더니만, 어제는 다시 Synopsys로 인수되었다고 하네요. 

ChipIDEA는 아날로그 IP 분야에 있어서 상당한 이름을 가지고 있고, 거기에 걸맞는 상당한 가격(?)을 가지고 있는 회사이기도 하지요. 2007년인가 MIPS로 인수되어 MIPS Analog business group(ABG)이라는 이름으로 사업을 전개해왔었는데, 이번에 시납시스로 인수된 것이지요. 
MIPS가 프로세서 플랫폼이라는 관점에서 ABG와 상당한 시너지를 기대했던것으로 기대했는데, 생각보다 좋은 결과가 없었던지 MIPS가 많이 어려웠던지 둘중에 하나겠지요. 상당히 탄탄한 디지털 IP 군인 DesignWare를 지니고 있는 Synopsys에 있어서는 매우 좋은 결과를 이끌어낼 수 있는 M&A임에는 틀림 없을 것 같습니다. 향후 시납시스가 지향하는 방향도 대충 짐작이 가구요. 
사실 지난 한달동안은 이런 저런 일로 인하여 개인적으로 매우 바쁘고 정신없었습니다. 모모 국책 과제 입찰에 참여해서 제안서쓰고, 과제 발표 준비하고, 협상하고 등등의 일을 처리해야 했고, 지난주에는 강의도 있었고..  또 다른 국책 프로젝트의 T/O 날자도 다가오고 있고 해서 정신 없습니다. 워낙 일이 많이 벌어지고 있어서, 집중력을 길게 가져가는 것보다 순간 순간 집중하고 하나씩 해결해 나가려고 노력중입니다. 
이 이야기는 아마도 이번달에도 뜸할 것 같다는 슬픈(?) 이야기죠 ^^;

책 몇가지

ASIC/processor 관련 책을 많이 보시라는 이야기를 해 드리고 있습니다만, 책이 워낙에 비싸죠.
모모 사이트와 당나귀를 적절히 이용하면 왠만한 책은 pdf로 구할 수도 있습니다만..
클리앙에서 http://www.scribd.com/ 라는 곳에 대한 소개가 있어서 가 봤는데, 괜찮은 책이 많군요. Google 검색을 통해서 갔을때는 그냥 단순히 리포트같은거 모아둔 사이트라고 생각했는데..
잠깐 검색해서 보이는 책 몇권 소개해 드릴께요.
시납시스 툴을 이용하여 합성하고 STA 하는 방법에 대하여 나와있는 책이죠. 예전에 본 책입니다만, 아직도 유효한 부분이 많고, 처음 ASIC flow를 사용해 보시는 분은 한번 읽어두면 좋습니다. 간단한 예제 스크립트도 쓸만하구요.
물론, Synopsys Tool에 있어서 가장 좋은 책은 Manual이에요.. 워낙에 잘쓰여져 있으니까요. 이 책은 메뉴얼 보기에 시간이 없을 때 보시면 좋습니다. 분량도 적고…
아마도 이책 모르시는 분은 없으실 거라 생각됩니다. 설계 방법에 대하여 Verilog/VHDL 을 모두 사용하여 설명한 아주 훌륭한 책입니다. 제가 예전에 처음 VHDL만 사용하다가 verilog쓰기 시작하면서 처음 본 책이고, 가장 많이 참고한 책중에 하나입니다.
Assertion based verification에 대하여 관심을 가지시는 분들이 반드시 보여야 한다고 생각하는 책입니다. 이 책의 저자인 Foster에서부터 ABV가 정착되었다고 해도 과언이 아니니까요(제가 알기로는 그런데, 실제로 그런지는 잘 몰라요 ^^; 논문 Survey를 해본건 아니니까요.. 이런 무책임한 ㅋㅋ)
ARM System Developers Guide-Designing and Optimizing System Software(http://www.scribd.com/doc/6654432/ARM-System-Developers-GuideDesigning-and-Optimizing-System-Software)
상당히 유명한 책이죠. 제가 본 느낌으로는 약간은 Application note의 집합과 같다는 생각이 들었습니다만, ARM 프로세서를 ‘사용하시는 분께’ 아주 유용한 책이라는 느낌입니다. 사용하시는 분이라는 점을 강조한 이유는 최적화 프로그래밍 방법에 방점이 찍혀 있는 책이기 때문입니다. 국내에 번역서도 제 생각으로는 괜찮은 수준으로 번역되어 있습니다. (몇몇 눈에 띄는 부분이 있습니다만, 그래도 몇몇 번역서에 비하면 아~주 잘한 번역입니다.)
이외에도 좋은 문서와 책이 널려 있군요. 가끔 시간되면 몇권 더 소개해드리죠. 제가 읽은 책이 검색 되는 경우에만 소개해 드릴 수 있다는 것이 문제지만요 ^^;
아.. 요즘 보고 있는 책 중에서는 processor design: System on Chip Computing for ASIC and FPGA라는 책이 괜찮더군요. 이에 반해서, 기대를 많이 하고 봤던 Designing Embedded Microprocessor; Low power perspective 는 기대를 많이하고 구입한 책이라 그런지 기대에는 좀 못미치는 책이었습니다.