Zephyrnet Logosu

Kat Planlama İpuçları

Tarih:

Yer planlaması söz konusu olduğunda, eski atasözü "daha az, daha fazladır" uygundur. Bir tasarım kat planı genel olarak mantığın kalıba nasıl yerleştirileceğini kontrol etmek için kullanılan bir dizi fiziksel kısıtlama olarak tanımlanır. İyi bir kat planı, yönlendirme sıkışıklığının azaltılmasına ve Vivado'nun belirli bir tasarım için elde edebileceği zamanlama sonuçlarının (QoR) kalitesinin iyileştirilmesine yardımcı olabilir. 

Tersine, kötü bir kat planı ters etki yaratabilir. Herhangi bir tür kat planı oluşturmadan önce tasarımcılar, konuyla ilgili 8. bölümde bulunan mükemmel tartışmaya başvurmalıdır. (UG906). Bu blog yazısı, kullanım kılavuzundaki bilgilere ek olarak sunulmaktadır.

Pblok Sınırları

Pblock sınırları, SLICE'lar, BRAM'ler, DSP'ler vb. aralıklarını kullanmak yerine pblock'un boyutunu tanımlamak için saat bölgeleri sınırlarından yararlanmanıza olanak tanır. Bu, saat çarpıklığının sınırlandırılmasına ve tasarımın genel saat yerleşimine yardımcı olabilir. 

Aşağıda pblock'ların yeniden boyutlandırılmasına ilişkin bazı örnekler verilmiştir:

create_pblock pblock_cr0
resize_pblock pblock_cr0 -add CLOCKREGION_X0Y0:CLOCKREGION_X0Y0

create_pblock pblock_slr1
resize_pblock pblock_slr1 -SLR1 ekle

Kullanıcılar, belirli türdeki siteleri pblock'un dışında bırakmak isteseler bile, saat bölgesini veya SLR tabanlı kat planlarını kullanabilirler. 

Aşağıdaki Tcl komutu, önceki örnekte oluşturulan saat bölgesi pblock'tan DSP sitelerini kaldırmak için bir pblock'un nasıl yeniden boyutlandırılacağını gösterir.

resize_pblock pblock_cr0 -kaldır [get_sites DSP* -of [get_clock_regions X0Y0]]

Pblok sınırları varsayılan olarak yumuşaktır; bu, Vivado'nun kapatma zamanlamasına yardımcı olması durumunda hücreleri daha sonraki yerleştirme aşamalarında pblok dışına taşıyabileceği anlamına gelir.

Bazı durumlarda bu davranışı önlemek için sınırı sertleştirmek mantıklı olabilir. Bu, pblock'un IS_SOFT özelliğini FALSE olarak ayarlayarak gerçekleştirilebilir. Bu, saat yerleşimini kontrol etmeye çalışırken faydalı olabilir.

set_property IS_SOFT FALSE [get_pblocks pblock_slr1]

Saat Mimarisi

Saatleme, bir tasarımın nasıl yerleştirileceğini ve yönlendirileceğini belirlemede büyük bir rol oynar. 

Tasarımın hedeflendiği cihaz ailesinde mevcut saatli ölçüm kaynaklarının anlaşılması, kat planlamasının önemli bir ön koşuludur. 

Yaygın olarak ortaya çıkan sorunlar şunlardır:

  • Önceki cihaz ailesi için ideal olan ancak mevcut cihaz ailesi için en iyi seçenek olmayan eski saat ölçümünün yeniden kullanılması (MBUFGCE_DIV, BUFGCE_DIV, vb.'nin kaçırılması)
  • Daha azının yeterli olacağı durumlarda ihtiyaç duyulandan daha fazla saatli ölçüm kaynağı kullanmak
  • Titremenin neden olduğu saat belirsizliğinin gözden kaçırılması

Tasarımcılar her zaman tasarımlarının saatli mimarisini optimize etmelidir. Bunu yapabilmek için tasarımlarında kullanılan tüm saatleri iyi anlamak önemlidir. Bir tasarımda kullanılan tüm saatleri görselleştirmek için hızlı bir kısayol sunan kullanışlı bir Tcl komutunu burada bulabilirsiniz.

show_schematic [get_cells -hiyerarşik -filtre { PRIMITIVE_TYPE =~ CLOCK.*.* } ]

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

Her bir saatin ve yük dağılımının çok daha ayrıntılı bir resmi saat kullanım raporunda (report_clock_utilization) mevcuttur. Her saatin yük yerleşimini gözden geçirmek, tasarımcıların Vivado'nun her saate bağlı mantığı nasıl yerleştirdiğini görmelerine yardımcı olabilir. Aşağıdaki küresel saat için cihaz hücresi yerleştirme özetini göz önünde bulundurun.

Saat kökü ve sürücünün (R) ve (D) ile gösterilen kalıbın sol üst köşesine alıcı-vericinin bitişiğine yerleştirilirken SLR70'e az sayıda yükün (1) yerleştirildiğine dikkat edin. Ayrıca yatay programlanabilir gecikmenin saat çarpıklığını dengelemek için 7 dokunuş gerektirdiğini unutmayın.

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

Bir kat planlama yaklaşımı, saatin yüklerinin yerleştirilmesini sert bir blokla sınırlamak olabilir. 

Örneğin:

create_pblock slr2_3
resize_pblock slr2_3 -SLR2:SLR3 ekle
set_property IS_SOFT FALSE [get_pblocks slr2_3]
add_cells_to_pblock slr2_3 [pb_cells'i ayarla [tüm_kayıtlar -saat ]]

Bu yaklaşımın bir uyarısı, tasarımcıların çift bağlantı noktalı BRAM/URAM'ların iki saate sahip olduğunu hatırlamaları gerektiğidir. Bu nedenle all_registers komutu, saatin saat girişlerinden herhangi birine bağlandığı anıları toplayacaktır. 

Bununla birlikte, herhangi bir grup nesneyi, bir kez Remove_cells_from_pblocks kullanılarak atandıktan sonra bir pblock'tan kaldırmak basit bir iştir. 

BRAM'lerin/URAM'ların yukarıdaki pbloktan nasıl çıkarılacağını gösteren bir örnek.

kaldır_cells_from_pblock slr2_3 [filtre $pb_cells {PRIMITIVE_TYPE =~ BLOCKRAM.*.*}]

Hiyerarşik Kat Planlama

Kat planı yapılacak büyük modüllerde KEEP_HIERARCHY kullanın. KEEP_HIERARCHY özelliği, sentez aracını mantıksal arayüzü korumaya ve hücrenin diğer örneklerle birleşmesini önlemeye zorlar.

Bu önemli kılavuz, özellikle tek bir modülün bir döngüde birden çok kez başlatılması durumunda sıklıkla gözden kaçırılır. Sonuç olarak, veriler ve kontrol sinyalleri genellikle aynı modülün örnekleri arasında paylaşılır. Bu, mantıksal olarak yalıtılmadıkları için modülleri fiziksel olarak yalıtmaya çalışırken zorluklara yol açar. 

Aşağıdaki görüntü, sentez sırasında KEEP_HIERARCHY kullanılmadan iki kez başlatılan tek bir modülü göstermektedir. Yerleştirme sırasında modülleri birbirine yaklaştırmaya yarayan modüller arasındaki yüksek derecede ara bağlantıya dikkat edin. İki modül aynı RTL parçasından gelse de sentezlenen sonuç, ikisi arasındaki önemli ara bağlantı nedeniyle kat planlaması için iyi bir uyum değildir.

no_keep_hier.jpg

İşte aynı iki modülün KEEP_HIERARCHY öznitelikleri ile mantıksal olarak izole edildiklerinde nasıl göründüğü.

Sonuç çok daha temiz ve iki modül artık ihtiyaç halinde hiyerarşik kat planlama kısıtlamalarıyla fiziksel olarak izole edilebiliyor. KEEP_HIERARCHY kullanmanın bir yan faydası, yerleştiricinin genellikle bir kat planının yardımı olmadan modülleri fiziksel olarak izole edebilmesidir.

keep_hier.jpg

Bir tasarımda modüllerin hiyerarşik bir kat planını oluşturmak kolaydır. Gerekli XDC kısıtlamaları (veya Tcl komutları) basittir ve üç satırda gerçekleştirilebilir. 

Burada bir modülü tek bir saat bölgesiyle sınırlandırmanın bir örneği verilmiştir.

create_pblock pblock_1
resize_pblock pblock_1 -add CLOCKREGION_X0Y0:CLOCKREGION_X0Y0
add_cells_to_pblock pblock_1 [get_cells [modül_A modül_B modül_C'yi listele]]

Bazı tasarımcılar pblock kullanmak yerine USER_SLR_ASSIGNMENT hiyerarşik hücre özelliğini kullanmayı tercih ederler. Bu yaklaşım iyidir, ancak USER_SLR_ASSIGNMENT özelliğinin flip floplar, LUT'lar, DSP'ler vb. gibi yaprak düzeyindeki hücreler için değil hiyerarşik hücreler için tasarlandığını unutmamak önemlidir. 

Kullanıcılar SLR tabanlı pblocks *OR* USER_SLR_ASSIGNMENT özelliklerini kullanmayı taahhüt etmelidir, ancak ikisini birden kullanmamalıdır. İki tekniğin karıştırılması yalnızca kafa karışıklığına yol açar.

Plato Ai. Web3 Yeniden Düşünüldü. Güçlendirilmiş Veri Zekası.
Erişmek için buraya tıklayın.

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

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?