제퍼넷 로고

평면도 팁

시간

평면도에 관해서는 "적은 것이 더 많다"는 옛 격언이 적합합니다. 설계 평면도는 로직이 다이에 배치되는 방식을 제어하는 ​​데 사용되는 일련의 물리적 제약으로 광범위하게 정의됩니다. 좋은 평면도는 라우팅 혼잡을 줄이고 Vivado가 주어진 설계에 대해 달성할 수 있는 타이밍 결과(QoR)의 품질을 향상시키는 데 도움이 될 수 있습니다. 

반대로, 잘못된 평면도는 반대 효과를 가져올 수 있습니다. 어떤 유형의 평면도를 작성하기 전에 설계자는 8장에 있는 주제에 대한 훌륭한 토론을 참고해야 합니다. (UG906). 이 블로그 게시물은 사용자 가이드 정보에 대한 보충 자료로 제공됩니다.

P블록 경계

Pblock 경계를 사용하면 SLICE, BRAM, DSP 등의 범위를 사용하는 대신 클록 영역 경계를 활용하여 pblock의 크기를 정의할 수 있습니다. 이는 클록 왜곡을 제한하고 설계의 전체 클록 배치에 도움이 될 수 있습니다. 

다음은 pblock 크기 조정의 몇 가지 예입니다.

create_pblock pblock_cr0
resize_pblock pblock_cr0 -CLOCKREGION_X0Y0:CLOCKREGION_X0Y0 추가

create_pblock pblock_slr1
resize_pblock pblock_slr1 -SLR1 추가

사용자는 pblock에서 특정 유형의 사이트를 제외하려는 경우에도 시계 영역 또는 SLR 기반 평면도를 사용할 수 있습니다. 

다음 Tcl 명령은 이전 예에서 생성된 클록 영역 pblock에서 DSP 사이트를 제거하기 위해 pblock의 크기를 조정하는 방법을 보여줍니다.

resize_pblock pblock_cr0 -제거 [get_sites DSP* -of [get_clock_regions X0Y0]]

Pblock 경계는 기본적으로 소프트합니다. 이는 Vivado가 타이밍 폐쇄에 도움이 되는 경우 이후 플레이서 단계에서 pblock 외부로 셀을 이동할 수 있음을 의미합니다.

어떤 경우에는 이 동작을 방지하기 위해 경계를 강화하는 것이 합리적입니다. 이는 pblock의 IS_SOFT 속성을 FALSE로 설정하여 수행할 수 있습니다. 이는 시계 배치를 제어하려고 할 때 유용할 수 있습니다.

set_property IS_SOFT FALSE [get_pblocks pblock_slr1]

클러킹 아키텍처

클러킹은 설계 배치 및 라우팅 방법을 결정하는 데 큰 역할을 합니다. 

설계 대상이 되는 장치 제품군에서 사용 가능한 클러킹 리소스를 이해하는 것은 평면도 계획의 필수 전제 조건입니다. 

일반적으로 발생하는 문제는 다음과 같습니다.

  • 이전 장치 제품군에 최적이었지만 현재 장치 제품군에는 최선의 옵션이 아닌 오래된 클러킹 재사용(MBUFGCE_DIV, BUFGCE_DIV 등 누락)
  • 더 적은 양이면 충분할 때 필요한 것보다 더 많은 클러킹 리소스를 사용합니다.
  • 지터로 인한 클럭 불확실성 간과

디자이너는 항상 디자인의 클럭킹 아키텍처를 최적화해야 합니다. 그러기 위해서는 그들의 디자인에 사용된 모든 시계를 잘 이해하는 것이 중요합니다. 다음은 디자인에 사용된 모든 시계를 시각화하는 빠른 지름길을 제공하는 유용한 Tcl 명령입니다.

show_schematic [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ CLOCK.*.* } ]

2021-09-08 10_14_35-xcoapps67_1 (xcoapps67_1 (jbieker)) - VNC 뷰어.jpg

각 개별 시계와 로드 분포에 대한 훨씬 더 자세한 그림은 시계 활용 보고서(report_clock_utilization)에서 확인할 수 있습니다. 각 클록의 로드 배치를 검토하면 설계자가 Vivado가 각 클록에 연결된 로직을 배치하는 방법을 확인하는 데 도움이 될 수 있습니다. 아래의 글로벌 시계에 대한 장치 셀 배치 요약을 고려하십시오.

(R)과 (D)로 표시된 다이의 왼쪽 상단 모서리에 있는 트랜시버에 인접하여 클록 루트와 드라이버가 배치되는 동안 SLR70에는 소수의 로드(1)가 배치되었습니다. 또한 수평 프로그래밍 가능 지연에는 클록 스큐의 균형을 맞추기 위해 7개의 탭이 필요합니다.

2021-09-08 12_48_33-xcoapps67_1 (xcoapps67_1 (jbieker)) - VNC 뷰어.jpg

한 가지 평면 계획 접근 방식은 하드 p블록으로 시계 부하의 배치를 제한하는 것일 수 있습니다. 

예 :

create_pblock slr2_3
resize_pblock slr2_3 -SLR2:SLR3 추가
set_property IS_SOFT FALSE [get_pblocks slr2_3]
add_cells_to_pblock slr2_3 [pb_cells 설정 [all_registers -clock ]]

이 접근 방식에 대한 한 가지 주의 사항은 설계자가 듀얼 포트 BRAM/URAM에 두 개의 클록이 있다는 점을 기억해야 한다는 것입니다. 따라서 all_registers 명령은 시계가 시계 입력 중 하나에 연결된 메모리를 수집합니다. 

그러나 Remove_cells_from_pblocks를 사용하여 할당된 개체 그룹을 pblock에서 제거하는 것은 간단합니다. 

다음은 위의 p블록에서 BRAM/URAM을 제거하는 방법을 보여주는 예입니다.

Remove_cells_from_pblock slr2_3 [$pb_cells 필터링 {PRIMITIVE_TYPE =~ BLOCKRAM.*.*}]

계층적 평면도

평면도를 계획할 대규모 모듈에는 KEEP_HIERARCHY를 사용하세요. KEEP_HIERARCHY 속성은 합성 도구가 논리 인터페이스를 유지하고 셀이 다른 인스턴스와 병합되는 것을 방지하도록 합니다.

특히 단일 모듈이 루프에서 여러 번 인스턴스화되는 경우에는 이 중요한 지침이 간과되는 경우가 많습니다. 결과적으로 데이터 및 제어 신호는 동일한 모듈의 인스턴스 간에 공유되는 경우가 많습니다. 이는 모듈이 논리적으로 분리되어 있지 않기 때문에 물리적으로 모듈을 분리하려고 할 때 어려움을 초래합니다. 

아래 이미지는 합성 중에 KEEP_HIERARCHY를 사용하지 않고 두 번 인스턴스화된 단일 모듈을 보여줍니다. 배치 중에 모듈을 서로 더 가깝게 끌어당기는 역할을 하는 모듈 간의 상호 연결 정도가 높다는 점에 유의하십시오. 두 모듈이 동일한 RTL 부분에서 나오더라도 둘 사이의 상당한 상호 연결로 인해 합성 결과는 평면도 계획에 적합하지 않습니다.

no_keep_hier.jpg

다음은 동일한 두 모듈이 KEEP_HIERARCHY 속성을 사용하여 논리적으로 격리된 경우의 모습입니다.

결과는 훨씬 더 깔끔해졌으며 필요한 경우 이제 계층적 평면도 제약 조건을 사용하여 두 모듈을 물리적으로 격리할 수 있습니다. KEEP_HIERARCHY 사용의 부수적인 이점은 배치자가 평면도의 도움 없이 모듈을 물리적으로 격리할 수 있다는 것입니다.

keep_hier.jpg

설계에서 모듈의 계층적 평면도를 쉽게 생성할 수 있습니다. 필요한 XDC 제약 조건(또는 Tcl 명령)은 간단하며 세 줄로 수행할 수 있습니다. 

다음은 모듈을 단일 클록 영역으로 제한하는 예입니다.

create_pblock pblock_1
resize_pblock pblock_1 -CLOCKREGION_X0Y0:CLOCKREGION_X0Y0 추가
add_cells_to_pblock pblock_1 [get_cells [목록 모듈_A 모듈_B 모듈_C]]

일부 설계자는 pblock을 사용하는 대신 계층적 셀 속성 USER_SLR_ASSIGNMENT를 사용하는 것을 선호합니다. 이 접근 방식은 괜찮지만 USER_SLR_ASSIGNMENT 속성은 플립플롭, LUT, DSP 등과 같은 리프 레벨 셀이 아닌 계층적 셀용으로 설계되었다는 점에 유의하는 것이 중요합니다. 

사용자는 SLR 기반 pblock *OR* USER_SLR_ASSIGNMENT 속성 중 하나를 사용하도록 약정해야 하지만 둘 다 사용할 수는 없습니다. 두 가지 기술을 혼합하면 혼란만 야기됩니다.

PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Floorplanning-Tips/ba-p/1286261

spot_img

최신 인텔리전스

spot_img