ASIC SoC2010. 12. 2. 15:37

High Performance SoC Modeling with Verilator


이번에 정리하는 것은 Verilator를 이용해서 OpenRISC 프로세서를 시뮬레이션하는 것입니다. 기본적인 플로우는 ICARUS라는 GNU Verilog 시뮬레이터 환경을 바꾸어서 진행하는 것입니다.

관련한 원본 자료는 아래 페이지에 있습니다.

http://www.embecosm.com/download/ean6.html

진행하는 플랫폼은 MAC이지만, Verildator는 Platform Independent하므로 대부분의 플랫폼에서 작동할 것으로 생각됩니다.

플랫폼별 차이점이 있다면, 나중에 기회가 되면 정리하겠습니다.
- 즉 귀찮아서 하지 않을 수도 있다는 의미입니다.

전제 사항들...


(1) Verilator를 설치하고 테스트 하는 방법은 앞서 정리한 블로그 자료를 참조하시기 바랍니다.
     역시 플랫폼 독립적이므로, 다른 플랫폼에서도 거의 비슷하게 동작할 것입니다.
    
(2) Linux 혹은 MAC의 터미널 환경에 대해서 잘 알고 있다는 가정하에서 설명이 진행됩니다.


다른 책에도 맨날 나오는 내용이지만,  S/W와 하드웨어의 파티셔닝과 그에 다른 시스템의 성능 평가가 중요한 부분인지에 대한 설명입니다.


시스템의 성능에 대해서 정밀한 분석은 하드웨어와 그 하드웨어에 의해서 움직일 임베디드 소프트웨어에 기반합니다.

로레벨의 BSP나 디바이스 드라이버 같은  Embedded Firmware의 구현은 SoC Peripheral의 정확한 동작에 기반하여 구현됩니다.

소프트웨어의 최적화. 이것은 Codec  개발에서 특히 중요한 부분입니다.  특히 이 것은 프로세서와 메모리 캐쉬 MMU등의 상호간 동작에  아주 깊은 영향을 받습니다. 따라서 ISS와 TLM은  잘못된 결과를 도출하는 것을 방지하여 줍니다.


Modeling Language


   Verilator는 Verilog를 C/C++로 변환하여서 컴파일하게 됩니다.
  당연히 C++ 컴파일러의 최적화 효율에 영향을 받게 됩니다.
  그리고 64비트 시스템 환경에서 더 빨리 운용이 됩니다.

OpenRISC는

  www.opencores.org에서 여러명이 설계한 프로세서 입니다.
  명령어 체계상에서는 32비트 외에도 64비트나 DSP등도 있습니다.
  최근에는 좀더 performance를 올린 프로세서를 만드는 프로젝트도 시작하고 있습니다.
  국내외에서 알게 모르게 여러 IP내부 프로세서나 SoC 프로세서로 사용하고 있습니다.

  OpenRSIC 1000은 Verilog로 만들어진 프로세서를 의미하고
  OpenRISC 1200은 OpenRISC Core + SoC Platform을 의미합니다. 완전한 SoC 플랫폼이며, 줄여서 ORPSoC라고 합니다.  

   OpenRISC 1000은 Processor외에도 CACHE나 MMU등을 가지고 있습니다.
  관심을 가질만한 부분은 l.nop라고 하는 nop 명령어입니다. 이 명령어는 하위에 immediate field를 가지고 있는데 이 field를 이용해서 몇가지 옵션을 주고 운용하는 기능을 부여할 수 있습니다. 일종의 MIPS의 Instruction Extension 기능인 UDP 기능을 생각하시면 됩니다.
  여기서는 Simulation시에 몇가지 특수 용도로 사용하지만,  실제 하드웨어에는 영향을 주지 않습니다.
 

The OpenRISC Reference Platform System-on-Chip (ORPSoC)



사용자 삽입 이미지

OPRSo의 전체 구조는 위와 같습니다.
전체 크기는 15만 게이트에 메모리 별도입니다.
이 회로는 Xilinx나 Altera의 FPGA 보드에서 잘 동작합니다.

OPRSoC에는 Flash Memory가 2MB 붙어 있고, 2MB의 SRAM이 연결되어 있습니다.
그외의 메모리는 FlipFlop 스타일 (SRAM스타일) 의 I/F를 가지고 있습니다.

   

 




Posted by GUNDAM_IM