2009년 4월 21일 화요일

Emailing: FPGA 기반의 ASIC 프로토타이핑, SystemVerilog로 개선하려면

인터페이스 설계

 


FPGA 기반의 ASIC 프로토타이핑, SystemVerilog로 개선하려면

게재:2009년03월02일


By Roger Do
Mentor Graphics
 
ASIC은 고성능의 복잡한 설계 개념을 포착하고 경쟁사들이 그에 견줄만한 디자인을 쉽게 구현하지 못하도록 하기 위한 솔루션을 제공한다.

그러나 ASIC의 개발에는 상당한 투자가 요구된다. 그 개발 비용은 90nm ASIC/SoC 디자인의 경우 2,000만 달러에 육박하며, 45nm SoC의 경우에는 4,000만 달러에 이를 것으로 예상된다. 따라서 갈수록 더 하이볼륨 제품만이 ASIC으로 구현될 수 있게 되는 추세이다.

마스크 셋 비용 외에 총 개발비도 늘어나고 있는데, 이는 첫 번에 제대로 된 디자인을 얻을 가능성이 줄어들었기 때문이다. 서베이에 따르면, 디자인의 복잡성이 계속 늘어남에 따라 오늘날의 SoC 디자인들 가운데 첫 번째 실리콘에 버그가 없는 것은 3분의 일에 불과하게 되었으며, 모든 리스핀 가운데 절반 가까이가 기능 로직 오류로 인해 야기된다고 한다. 이 때문에 현재 검증 매니저들의 기능 검증 방법들을 강화할 방도가 모색되고 있다.

진정한 ASIC 디자인에 착수하기 전에 개념들이 건실하고 디자인들을 구현할 수 있음을 보여주기 위해 ASIC 검증 방법의 일환으로서 FPGA를 이용하여 ASIC 디자인의 시제품을 제작하는, 비용이 보다 적게 드는 방법의 인기가 높아지고 있다.

ASIC 디자인의 시제품을 FPGA로 제작하면 상이한 성능을 얻게 될 때도 많지만 동일한 로직 기능성을 얻게 될 때가 많다. 게다가 디자인을 FPGA 프로토타입 상에서 실제 스티뮬러스를 이용해 실제 동작 속도로 실행시키면 훨씬 더 철저하고 현실적인 기능 커버리지는 물론 임베디드 소프트웨어와의 초기 통합도 가능해진다. 따라서 FPGA 프로토타이핑을 효과적으로 사용하여 기존의 기능 검증 방법들을 보완 및 확장할 수 있다.

ASIC 디자인의 크기는 FPGA 디바이스들보다 훨씬 빠른 속도로 증가했기 때문에 때로는 ASIC 하나의 시제품을 제작하기 위해 여러 개의 FPGA 디바이스들을 사용해야만 할 때도 있다. 여러 개의 디바이스를 사용할 경우 장애물이 되는 것은 ASIC 디자인의 모든 논리적 블록들을 여러 FPGA 디바이스들에 걸쳐 연결시키는 작업이다. 물리적으로는 FPGA 디바이스들의 고속 I/O 블록들을 사용함으로써 물리적 디바이스들 간의 연결성이 단순화되었다. 그러나 디자인 블록들을 논리적으로 연결시키는 방법들은 많은 수작업적 노력이 요구되고 오류에 취약하다. 그래서 발전된 RTL 언어인 SystemVerilog와 Mentor Graphics사의 Precision Synthesis와 같은 첨단 혼합언어 합성 툴들을 도입함으로써 연결 프로시저도 단순화되었다.

SystemVerilog

SystemVerilog는 전혀 새로운 RTL 언어는 아니다. 기존의 Verilog HDL에 풍부한 확장 세트를 추가한 SystemVerilog는 Verilog 95 및 Verilog 2001과 역호환성을 갖는다. Verilog에 대한 이러한 확장들 가운데 다수가 모든 크기의 디자인들에 대한 정확하고 합성 가능한 모델들을 보다 손쉽게 작성할 수 있도록 해주므로 현재 Verilog를 가지고 일하고 있는 모든 엔지니어들에게 그야말로 큰 도움을 준다. SystemVerilog가 연결성 면에서 갖는 이점들은 다음의 요소들 덕분이다:

1. 효율적인 코딩 방법들을 이용한 보다 콤팩트한 RTL 기술(記述).

2. 디자이너들이 보다 추상적인 수준에서 인터페이스 기술(記述)을 가지고 모델화할 수 있도록 해주는 캡슐화

FPGA 프로토타이핑에 SystemVerilog를 사용한다고 해서 ASIC 디자인 전체를 SystemVerilog로 작성해야만 그 혜택을 누릴 수 있는 것은 아니다. 연결성의 장애물은 단지 SystemVerilog를 사용하여 각 FPGA의 최상부 수준 모듈을 기술하는 것만으로도 단순화시킬 수 있다.

디자인 크기의 증가로 인해 디자인을 나타내는 데 필요한 RTL 코드의 라인 수도 늘어났다. 디자인 버그는 사실상 작성된 코드의 라인 수에 비례한다고 할 수 있다. SystemVerilog는 디자인 사양을 개선하고 수식을 보다 간결하게 만들며, 검증과 디자인의 통일을 가져온다. 이 모든 점들 덕분에 타임투마켓을 앞당기고 디자인 버그를 초기에 알아낼 수 있게 된다. 사실 SystemVerilog를 사용하면 Verilog RTL보다 2~5 배 더 콤팩트한 결과물을 얻을 수 있다.

캡슐화

모듈을 FPGA 디바이스의 I/O 블록들에 연결시키는 일도 또 다른 문제다. 모듈들이 ASIC 디자인으로부터 분리될 경우, FPGA 디바이스들 간의 연결에 필요한 I/O들의 총 개수는 이제 이 디바이스들 상에 제공되는 개수보다 많다.

모든 I/O들을 수용하기 위해서는 핀들을 다중화해야만 할 때가 많다. SystemVerilog는 FPGA 프로토타이핑을 위해 이러한 기능을 제공하는 데 도움을 줄 수 있는 기능을 ASIC 디자인을 수정할 필요 없이 제공한다.

Verilog는 모듈 포트들을 통해 하나의 모듈을 다른 모듈에 연결한다. 이를 위해서는 목표하는 하드웨어 디자인에 대한 상세한 지식이 필요한데, 이는 디자인을 구성하는 각 모듈의 특정 포트들을 정의하기 위해서이다. 여러 모듈들이 동일한 포트들을 다수 갖는 경우가 많으므로 각 모듈에 대해 중복적인 포트 정의가 요구된다. 예를 들어, 데이터 버스 프로토콜에 연결된 모든 모듈은 동일한 포트들을 정의해야만 한다.

SystemVerilog 인터페이스는 하나의 위치에 기술 내용을 집중시킴으로써 통신 모델들의 추상화를 위한 객체지향 패러다임을 제공한다. 인터페이스에 대한 기술내용을 로컬화하고 이를 추상적인 포트 타입으로 사용하며, 합성 프로세스가 디자인을 통해 하드웨어에 적절히 확산되도록 할 수 있는 이러한 능력은 설계 프로세스에 커다란 이점을 제공한다.

설계 팀들은 버스에 대한 사양을 작성했다가 통합 테스팅에 가서야 그 사양이 충분히 명확하지 못하여 둘 이상으로 해석할 수 있으므로 디자인 가운데 몇 부분을 재작업해야 한다는 사실을 발견하게 되는 경우가 많다.

인터페이스는 모듈들과는 독립적으로 "interface"와 "endinterface"라는 키워드들 사이에 정의된다. 모듈들은 인터페이스를 마치 그것이 단일 포트인양 사용할 수 있다.

가장 단순한 형태의 인터페이스는 한 뭉치의 선로들로 간주할 수 있다. 그러나 인터페이스는 단지 상호연결되는 일련의 신호 덩어리 이상이다. 인터페이스는 버스 신호들을 토대로 통신 프로토콜들을 지정하기 위해 데이터 타입 선언, 작업, 함수, 연속할당문 및 프로시저 블록들도 포함할 수 있다. 인터페이스는 또한 인터페이스를 사용하는 각 모듈에 공통적인 기능성도 포함할 수 있으며, 내장 프로토콜 점검 기능도 포함할 수 있다. 따라서 인터페이스들을 이용하여 I/O 블록들에 연결되는 FPGA 디자인의 최상위 수준에서 신호들을 다중화할 수 있다.

인터페이스를 사용할 경우, 엔지니어 한 명은 그 인터페이스를 소유하고 다른 엔지니어들이 버스에 연결하기 위해 사용할 수 있는 API를 제공함으로써 그 버스와의 데이터 전송 세부사항들을 감출 수 있다. 이는 스케일러빌러티 면에서, 그리고 그 기술 내용이 단일 장소에 있다는 점 때문에 이점을 제공한다. 또 다른 신호를 인터페이스에 추가해야 할 경우에는 버스를 지나가는 모든 모듈을 수정할 필요 없이 이를 수행할 수 있다.

인터페이스의 또 다른 이점은 이들을 동일한 API를 지원하는 다른 인터페이스들로 손쉽게 교환할 수 있다는 점이다. 예를 들어, 어떤 디자인이 원래 직렬 버스를 갖도록 설계되었는데 그 다음에 보니 병렬 버스가 필요함을 알게 되었을 경우 인터페이스만 교환하면 디자인의 나머지 부분들은 수정하지 않아도 된다. 이는 임의의 디자인의 목표를 재설정할 수 있는 매우 신속한 방법이다. 또는 FPGA 프로토타이핑의 경우에는 로직 블록들 가운데 어떠한 것에도 영향을 미치지 않고 버스 정의를 ASIC 디자인과 FPGA 디자인 간에 바꿀 수 있다.

SystemVerilog는 modports를 이용하여 인터페이스에 대한 여러 뷰를 정의할 수 있도록 해준다. 예를 들어, 인터페이스에 연결되어 있는 각 모듈은 인터페이스 포트에 로컬인 신호의 방향을 지정하고 공유할 수 있다. 다수의 모듈들이 동일한 인터페이스를 참조할 경우 코드 크기를 크게 줄일 수 있다. 각 모듈 상의 모든 포트들을 열거할 필요 없이 인터페이스를 반영하는 포트 하나만으로도 충분하기 때문이다.

갈수록 더 경쟁이 심해지고 제품 수명 사이클은 점점 더 짧아짐에 따라, 디자이너들이 고성능의 복잡한 디자인을 개발할 시간은 더욱 줄어들고 있다. 이와 동시에 ASIC 개발 비용은 급속히 증가하고 있어 비용에 민감한 많은 어플리케이션들의 경우 철저한 테스트와 시뮬레이션 없이는 ASIC 디바이스를 사용하는 것이 적합치 못하게 되었다. 이러한 문제들을 해결하기 위해 채택되고 있는 FPGA 프로토타이핑은 비용이 훨씬 많이 드는 ASIC 디자인에 본격적으로 뛰어들기 전에 시스템들을 검증할 수 있도록 해주는 적시의 비용효율적인 설계 방법을 제공하고 있다.

그러나 FPGA 프로토타이핑도 어려움이 없는 것은 아니다. 그 주된 장애물 가운데 하나는 FPGA 내의 로직 블록들과 여러 FPGA 디바이스들 간의 로직 블록들을 모두 연결시키는 것이었다. SystemVerilog를 채택하면 연결성 문제 가운데 다수를 다른 HDL 언어들을 사용할 때보다 단순하고 효율적인 방식으로 해결할 수 있다.



<이번호 저널 2009년 3월>호에서 이 기사 및 다른 기사들도 찾아볼 수 있습니다.



본 기사는 에 있는 전자 엔지니어 기사에서 인쇄한 것입니다:
http://www.eetkorea.com/ART_8800564435_839581_NT_9e8b6d32.HTM

 
 

댓글 없음: