가장 많은 리소스와 영역을 사용하는 FPGA 디자인 영역을 식별하는 방법은 무엇입니까?


11

저는 큰 FPGA 디자인을 연구하고 있으며 현재 사용중인 FPGA의 리소스 한계 인 CSG225 패키지의 Xilinx LX16에 매우 가깝습니다.

디자인도 거의 완료되었지만 현재는 FPGA에 더 이상 맞지 않습니다. 적합하도록 부품을 끌 수 있지만 설계를 완료하고 타이밍 및 크기 요구 사항을 충족 시키려면 리소스 사용량을 줄여야합니다.

내 디자인에서 가장 많은 리소스를 소비하는 부분을 식별하는 데 도움이되는 도구가 보고서에 있는지 알고 싶습니다. 내 디자인은 분할되지 않았으며 약 12 ​​개 이상의 VHDL 모듈로 나누어 져 있습니다.

자일링스 타이밍 보고서는 환상적이지만 이제는 공간 절약 측면에서 최고의 벅을 얻을 수있는 곳을 알아야합니다.

또한 어떤 유형의 리소스가 부족하거나 해당 리소스에 어떤 영향을 미치는지 말하기가 어렵습니다.

또 다른 성가심은 디자인이 커질수록 타이밍을 충족시키는 데 사용되는 구성 요소가 더 이상 이상적인 배치가 아니기 때문에 실패하기 시작한다는 것입니다.

현재는 Post-Place 및 Route Static 타이밍 보고서를 사용하고 SmartXplorer를 사용합니다. 타이밍 최적화를 위해 디자인 전략을 사용하고 있습니다.

내 디자인의 일부를 끄고 나면 다음과 같은 결과가 나타납니다.

슬라이스 레지스터 사용률 : 42 % 슬라이스 LUT 사용률 : 96 % 완전히 사용 된 LUT-FF 쌍의 수 : 38 % 레지스터에 가벼우 나 게이트 사용량이 많습니까?

개발자가 영역을 최적화하거나 최소한 코드에 대한 통찰력을 제공하는 데 도움이되는 도구가 있습니까?

업데이트 : 모듈 수준 사용률을 살펴본 결과 전체 LUT의 약 30 %를 차지하는 작은 접착제 비동기 fifo가 곳곳에 있음을 알았습니다. 고속 버스를 위해 크로스 클럭 도메인 접착제로 사용하고 있습니다. 시계가 밀접하게 관련되어 있기 때문에 이것을 제거 할 수 있어야합니다. (120MHz 입력, DCM을 통해 100MHz 및 200MHz 생성)


신호 사이에 많은 상호 연결이있는 것처럼 보입니다. 최적화 수준, 리소스 공유 등을 변경하여 문제를 해결할 수 있다고 확신합니다. 어떤 도구를 사용하고 있습니까? ISE 또는 Vivado?
FarhadA

1
ISE를 사용하고 있습니다 (Vivado는 스파르탄 -6를 지원하지 않음). 이 작업을 수행했으며 * .mrp 파일에 섹션 13-계층 별 사용률이 포함되어 있습니다. 데이터 형식이 개선되면 데이터를 게시하겠습니다.
Marcus10110

답변:


5

이 질문을 Xilinx 포럼에 게시했습니다 : http://forums.xilinx.com/t5/Implementation/How-to-determine-what-part-of-the-design-consumes-the-most/td-p / 393247

이 답변은 주로 의견에 근거합니다. Deepika, Sikta 및 Gabor에게 감사합니다.

먼저 맵 프로세스 속성 (-세부 사항)에서 '상세 MAP 보고서 생성'을 활성화하십시오.

그런 다음, Design Summary를 열고 Module Level Utilization으로 이동하십시오. 독점적이고 포괄적 인 디자인 활용을 보여주는 완전한 계층 구조입니다.

각 줄에는 0/5392와 같은 숫자 쌍이 표시됩니다. 즉, 해당 모듈에는 해당 특정 요소 중 0이 포함되어 있지만 해당 모듈과 모든 하위 모듈에는 총 5392 개의 요소가 포함되어 있습니다.

여기 내 출력이 있습니다 (일부 확장) 이용 보고서

크기를 줄이려고 할 때 Gabor는 신스 툴에서 더 큰 FPGA로 전환하여 현재 FPGA에 맞지 않을 때에도 완전히 맵핑 할 수 있도록하여 툴을 더 빠르게 실행할 것을 권장합니다.


3

레지스터의 절반 만 사용하면서 거의 모든 논리 리소스를 사용하고있는 것 같습니다. 모든 LUT를 무엇을 먹고 있는지 파악해야 할 것 같습니다. RAM, 시프트 레지스터 및 상태 시스템과 같은 특정 구성 요소를 최적화하고 공간을 좀 더 효율적으로 만드는 방법이 있습니다. 신디사이저에서 결과 .log 파일을보십시오. 어떤 종류의 구성 요소가 추론되는지 알려줍니다. 구성 요소를 올바르게 추론하고 있는지 확인하십시오. 그렇지 않으면 특히 효율적인 넷리스트를 생성하지 않을 수 있습니다. 합성 로그 파일을 보면 많은 것을 알 수 있습니다. 코드를 약간만 변경하면 신디사이저가 다양한 구성 요소를 유추 할 수 있으므로 일부 템플릿에 대해서는 신디사이저 설명서를 참조하십시오. 속도 대신 영역을 최적화하기 위해 신시사이저를 전환해야 할 수도 있습니다. 또한 추론 설정이 해제되어 있지 않은지 확인하십시오. 한때 Virtex 6 HXT 565 (354,240 6 입력 LUT / 이중 FF 쌍, 32의 Spartan 3E 500 (9,312 4 입력 LUT / FF 쌍, 5.6KB 블록 RAM)의 40 %를 소비하는 설계 컴포넌트를 합성하려고 시도했습니다. MB 블록 RAM). 자일링스 파가 완성되는 데 7 시간이 걸렸으며 칩의 약 40 %를 차지했다. ?!?!?!? 추론 블록 RAM이 꺼졌고 신시사이저가 몇 KB의 RAM을 LUT로 바꿨습니다. 가장 효율적인 결정은 아닙니다. 설정을 변경 한 후 칩의 1 %가 차지했습니다. 그림을 이동. 312 Virtex 6 HXT 565 용 4 입력 LUT / FF 쌍, 5.6KB 블록 RAM (354,240 6 입력 LUT / 이중 FF 쌍, 32MB 블록 RAM). 자일링스 파가 완성되는 데 7 시간이 걸렸으며 칩의 약 40 %를 차지했다. ?!?!?!? 추론 블록 RAM이 꺼졌고 신시사이저가 몇 KB의 RAM을 LUT로 바꿨습니다. 가장 효율적인 결정은 아닙니다. 설정을 변경 한 후 칩의 1 %가 차지했습니다. 그림을 이동. 312 Virtex 6 HXT 565 용 4 입력 LUT / FF 쌍, 5.6KB 블록 RAM (354,240 6 입력 LUT / 이중 FF 쌍, 32MB 블록 RAM). 자일링스 파가 완성되는 데 7 시간이 걸렸으며 칩의 약 40 %를 차지했다. ?!?!?!? 추론 블록 RAM이 꺼졌고 신시사이저가 몇 KB의 RAM을 LUT로 바꿨습니다. 가장 효율적인 결정은 아닙니다. 설정을 변경 한 후 칩의 1 %가 차지했습니다. 그림을 이동.


3

도구 출력에서 ​​전체 '자원 사용량'섹션을 게시하는 것이 좋습니다.

모든 블록 RAM을 사용합니까? 도메인이 충분히 제한되어 있고 사전 계산에 가치가있을 정도로 복잡하면 논리 / 수학 함수를 동등한 RAM 조회 테이블로 대체 할 수있는 것이 일반적입니다.

메모리 추론뿐만 아니라 승수에도 동일하게 적용됩니다. 권장되는 인스턴스화 템플릿에서 약간 벗어난 경우에도 승수를 DSP48A 장치로 유추 할 수 있습니다.

PCIe 컨트롤러를 사용하는 경우 TLP 페이로드에 예약 된 총 버퍼 공간 또는 최대 TLP 패킷 크기를 줄일 수 있습니까? 이렇게하면 입력 / 총 대역폭 비용으로 IP 코어의 RAM / 논리 사용량을 줄일 수 있습니다.

(Altera) Quartus를 사용하면 디자인 계층보기에서 항목을 여러 개 선택하고 사후 영역 사용 색상이 코딩 / 클러스터 된 것을 볼 수 있습니다. 이를 통해 디자인 모듈의 상대적 사용법을 시각적으로 알 수 있습니다.


감사. 멀티 플라이어에 하드 IP 매크로를 사용하고 있으며 CoreGen을 사용하여 FIFO를 만들었지 만 분산 RAM (블록 RAM 대신)을 사용하기 위해 작은 fifo를 선택했습니다. 사용법을 살펴 보겠습니다.
Marcus10110
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.