공간, 무게 ,전력 및 비용절감이 가능한 자일링스 부분 재구성용 소프트웨어 플랫폼 - PlanAhead |
부분 재구성을 사용하면 단일 FPGA의 기능을 획기적으로 개선하여 훨씬적은 디바이스로도 운영이 가능하다. 자일링스 부분 재구성용 소프트웨어플랫폼인 PlanAhead는 공간, 무게, 전력 및 비용 절감이 가능한 효율적인환경을 제공한다. 글 | Nij Dorairaj, Eric Shiflet, Mark Goosman, 자일링스 |
자일링스 버텍스(Virtex) 플랫폼 FPGA 제품군은 디자인상의 일부모듈을 부분 재구성(PR) 기법을 사용하여 FPGA 동작 중에 재프로그래밍 할수 있다. 이와 같이 강력한 기능 덕분에 여러 디자인 모듈이 기본 디자인 운영에 방해를 받지 않으면서 단일 디바이스에서 자원을 시분할 방식으로 사용할 수 있다. 부분 재구성은 디바이스 프로그래밍과정으로, FPGA에서 미리 정의되어 제한된 부분을 다시 구성하면서 디바이스의 나머지 부분을 계속 사용할 수 있도록 지원한다. 이와 같은 기능은 일부 써드 모듈을 재정의하면서 문제가발생해서는 안 되는 환경에서 디바이스를 운영할 경우 특히 중요하다. 부분 재구성을 사용하면 단일 FPGA의 기능을 획기적으로 개선하여 훨씬 적은 디바이스로도 운영이 가능하다.이 기술의 활용 분야로는 재구성이 가능한 통신 및 암호 시스템 등이 있다. 버텍스 컨피규레이션 부분 재구성은 버텍스와 스파르탄 제품군 모두에서 지원된다. 여기에서는 부분 재구성 기법의 구현과 버텍스-II 및 버텍스-II Pro FPGA 적용을 중점적으로 다룬다. 버텍스 FPGA의 사용자 프로그래밍 기능은 휘발성의 메모리 셀로 제어되고 전원을 켠 상태로 구성해야 한다. 이 메모리 셀은 구성 메모리라고도 하며 LUT(Look-Up Table) 방정식, 신호 라우팅, IOB(Input/Output Block) 전압 표준 및 기타 디자인을 정의한다. 구성 메모리를 프로그램하려면 구성 제어 로직과 구성 메모리 데이터가 비트스트림 형태로 제공되며, 이러한 로직과 데이터는 JTAG, Select-MAP, 직렬 또는 ICAP 구성 인터페이스를 통해 디바이스로 전달된다. 프로그램된 버텍스 FPGA는 부분 비트스트림을 사용하여 부분적으로 재구성할 수 있다. 부분 재구성을 사용하여 FPGA 디자인의 일부 구조를 변경하면서 디바이스의 나머지 부분을 계속 사용할 수 있다 활용 사례 부분 재구성은 동일한 FPGA 디바이스 자원을 시분할 방식으로 사용할 수 있는 다기능 시스템에 유용하다. 이러한 시스템에서는 FPGA의 한 부분이 계속 작동하면서 다른 부분을 사용하지 못하도록 하고 부분적으로 재구성하여 새로운 기능을 제공할 수 있다. 이는 그림 1처럼 마이크로프로세서가 소프트웨어 프로세스 간 컨텍스트(Context) 전환을 관리하는 것과 유사 하다. FPGA의 부분 재구성을 제외하면 전환되는 것은 소프트웨어가 아닌 하드웨어이다. 부분 재구성은 전체 재구성 과정에서 접근할 수 있는 지속적인 작업을 필요로 하는 애플리케이션의 비트스트림 보다 이점이 있다. 그림 2에서와 같이 수평 및 수직 동기화를 활용하는 그래픽 디스플레이가 대표적인 예이다. 이와 같은 애플리케이션이 운영되는 환경 때문에 라디오와 비디오 링크의 신호는 보존해야 하지만 작업 도중에 형식과 데이터 처리 형식을 업데이트 하고 변경해야 한다. 부분 재구성을 사용하면 시스템은 실시간 링크를 관리하면서 FPGA 내부의 다른 모듈을 변경할 수 있다
방법 부분 재구성 디자인을 성공적으로 구현하려면 엄격한 디자인 방법론을 따라야 한다. 다음은 따라야 할 지침 중 일부이다. - 교환할 모듈(부분 재구성 모듈 또는PRM)과 나머지 디자인(정적 로직)사이에 버스 매크로를 삽입한다. - 종합 지침을 따라 부분적으로 재구성된 넷리스트를 작성한다. - PRM의 플로어플랜을 작성하고 모든 정적 모듈을 클러스터 한다. - 버스 매크로를 배치한다. - PR 전용 디자인 규칙을 준수한다. - 부분 재구성 구현 흐름을 실행한다. PlanAhead 소프트웨어는 상기 지침을 관리할 수 있는 단일 환경 또는 플랫폼을 제공한다. 다음은 PlanAhead 디자인 툴을 사용하여 부분 재구성 디자인을 구현하는데 사용되는 절차 목록이다. - 넷리스트 가져오기 - 부분 재구성을 위한 플로어플랜수행 - 디자인 규칙 확인 - 넷리스트 내보내기 - 구현 흐름 관리 - 비트스트림 크기 추정 넷리스트 가져오기 PlanAhead 소프트웨어는 XST나 Synplify와 같은 합성된 넷리스트를 사용한다. 계층 넷리스트(단일 edf/ngc 또는 다중 edf/ngc 파일)도 가져올 수 있으며, 일반 지침을 따라 디자인을 PlanAhead 디자인 툴에 가져가서 디자인 플로어플래닝을 할 수 있다 부분 재구성을 위한 플로어플래닝 이 부분은 부분 재구성 흐름에서 중요한 과정이다. PlanAhead 소프트웨어에서 플로어플래닝은 물리적인 블록인 Pblock과 관련된 디자인 파티션 기반으로 한다. Pblock에는 로직을 제한하기 위해 FPGA 디바이스에서 정의된영역(직사각형)이 존재할 수 있다. 직사각형 없이도 Pblock을 정의할 수 있고 ISETM 소프트웨어는 배치 과정에서 로직을 그룹화 한다. Pblock 옆에 배치되는 넷리스트 로직은 AREA_GROUP 제한을 받게 된다. 부분 재구성의 주요 플로어플래닝은 다음과 같다. 1. PRM 설정 - 구조 내에 정의된 영역을 사용해 Pblock을 작성하여 PRM 영역을 할당한다. - Pblock에 RANGES를 할당한다. - PRM에서 MODE=RECONFIG 특성을 정의한다.(Pblock 속성 ->특성 섹션) 2. 정적 로직 설정 - PRM을 제외한 모든 최상위 모듈을 단일 Pblock으로 그룹화해야한다. 이를 정적 로직 블록이라고한다. 이 블록에는 RANGE가 정의되어 있지 않고 정적 로직을 단일Pblock으로 클러스터 한다. 모든최상위 모듈(PRM 제외)을 선택하고 Pblock에 할당한다. 그림 3은Pblock에서 그룹화된 정적 로직인 AG_base를 보여주고 있다. - PlanAhead 디자인 툴에서 플로어플랜이 완료되면 그림 4처럼 물리적 계층이 구성됩니다. 3. 버스 매크로 배치 - 버스 매크로는 PRM을 정적 로직에 연결하는 물리적 포트이다. PRM에서 정적 로직으로의 모든 연결은 버스 매크로를 통과해야 한다. 버스 매크로는 RTL에서 블랙박스로 나타나고 .nmc 파일의 형태로 미리 정의된 라우팅 매크로로 구성된다. 버스 매크로는 PRM 경계에 배치된다. PRM에 연결된 정적 로직은 배치되는 과정에서 버스 매크로로 마이그레이션 된다. 디자인 규칙 확인 흐름의 복잡성을 고려할 때 초기 RTL과 평면도 작성 과정에서 실수가 발생할 수도 있다. PlanAhead-PR 디자인 툴은 디자인 위반을 확인해 준다. PRAdvisor도 이 기능에 통합되어 디자인 개선 방법에 관한 의견을 제공한다. PR 디자인 규칙은 다음과 같이 확인한다. 1. 버스 매크로 DRC 버스 매크로 연결 및 배치와 관련된 모든 디자인 규칙을 확인한다. 버스 매크로 DRC의 대표적인 예로는 PRBP 확인이 있다. DRC에서는 버스 매크로배치와 관련된 모든 규칙을 확인한다. 그림 5는 PRBP DRC가 실패한 디자인의 예를 보여준다. 이 경우 인터리브/네스트(Interleaved/Nested) 매크로는 SLICE_X41Y*에 배치해야 한다. 2. DRC 플로어플랜 작성 여기서는 플로어플래닝 규칙을 다룬다. 클록 개체(글로벌 클록 버퍼, DCM)와 I/O를 배치하고 정적 로직을 클러스터해야 한다. 3. 로직 DRC 글리칭(Glitching) PRM 영역 위와 아래의 글리칭 로직 구성 요소(SRL 및 분산형 RAM)를 확인한다. 4. 타이밍 어드바이저 (Advisor)/DRC 타이밍 관련 문제를 확인한다. DRC타이밍의 대표적인 예로는 PRTP가 있다. 정적 모듈은 구현 단계에서 PRM 이전에 구현된다. 일반 타이밍 제한은 정적 및 PRM 사이의 경로를 처리하지 않는다. 버스 매크로가 동기화되어 있다면 문제는 발생하지 않는다. 그러나 비동기화 매크로라면 정적 모듈은 그림 6처럼 비동기 경로의 파급을 알지 못할 수 있다. 해당 경로가 타이밍과 관련되어 있는 경우 중요하다. 이 정보를 정적 모듈로 전달하는 방법으로는 버스 매크로 출력 넷에서 TPSYNC 제한을 지정하는 것이 있다. PlanAhead 소프트웨어는 .UCF 파일에 추가할 수 있는TPSYNC 제한을 추천한다.
일단 디자인 플로어플랜이 완성되고 DRC 확인기를 전송하면 내보내기가 준비된다. PlanAhead 디자인툴은 초기 계층 넷리스트를 특정 포맷(별도 디렉토리의 정적 및 PRM)의 PR 스타일 넷리스트로 내보낸다. export 디렉토리는 그림 7처럼 나타난다 구현 플로우 관리
- 초기 계획 수립 - 정적 모듈 구현 - PRM 구현(모든 PRM의 각 버전을 위한 구현) - 조립 부품 및 비트스트림 생성(결과는 통합 디렉토리에 저장됨)툴을 실행하려면‘Tools > Run Partial Reconfig’를 선택하여 플로우 마법사를 시작해야 합니다. 이 마법사는 각 구현 단계를 안내한다. 구현을실행하거나 PlanAhead 사용자 인터페이스 외부의 명령줄에서 사용되는 스크립트를 생성할 수 있다.
Pblock 통계 보고서에는 PRM 비트 스트림 크기를 보고하는 부분이 포함된다(그림 9). 이 정보는 외장 플래시 및 DDR과 같은 구성 메모리 스토리지의 크기를 추정하는 데 사용할 수 있다. 이정보를 이용하여 비트스트림 메모리 인터페이스를 기반으로 모듈을 교환하는데 소요되는 시간을 계산할 수 있다. 결론 PlanAhead 소프트웨어는 부분 재구성을 위한 최초의 그래픽 환경을 제공한다. PlanAhead 디자인 툴을 부분 재구성 애플리케이션을 위한 플랫폼으로 사용하면 최신 애플리케이션의 동적 운영 환경을 처리하는 과정에서의 복잡성을 획기적으로 줄여 이전에는 다수의 FPGA가 필요했던 애플리케이션도 단일 디바이스로 운영이 가능하다. PlanAhead 소프트웨어가 제공한 방법은 생산성을 극대화하고 부분 재구성을 사용하는 설계자들의 작업 시간을 단축할 수 있도록 지원한다. 부분 재구성을 활용하는 디자인 기능 덕분에 새로운 장이 열렸다. Plan-Ahead 디자인 툴은 버텍스-II와 버텍스-II Pro FPGA를 대상으로 하는 디자인을 위한 부분 재구성의 이점을 활용할 수 있는 플랫폼을 제공하여 디자인 기능을 획기적으로 개선해 준다. 향후 버텍스-4 멀티 플랫폼 FPGA를 대상으로 하는 디자인의 지원을 통해 부분 재구성의 활용 범위가 한층 확대될것이다.
<자료제공: 월간 반도체네트워크 2006년 02월호> |