Tek RTL, Birçok üretici: RunX'in Çoklu Üretici FPGA Stratejisi
Tek RTL, Birçok üretici: RunX’in Çoklu Üretici FPGA Stratejisi
2021 yılında, bir radar alt sistemi geliştiren bir mühendislik ekibi, Xilinx distribütöründen gelecek on yıl boyunca donanım tasarım biçimlerini değiştirecek bir rakamla karşılaştı: yıllardır hacimli üretimde olan sıradan bir FPGA için 52 hafta.
RTL’i yalnızca Xilinx’te çalışan ekiplerin tek seçeneği vardı: beklemek. Mantığını rafta iki haftalık teslim süresiyle bekleyen bir Lattice ya da Microchip parçasına yeniden hedefleyebilenler üretmeye devam etti. Aynı pazar, aynı kriz, tamamen farklı sonuçlar; aradaki fark yıllar önce alınmış bir tasarım kararıydı, şans değil.
Çoklu üretici FPGA stratejisinin gerekçesi bu, ve RunX olarak etrafında inşa ettiğimiz strateji de bu. Pazarlama dilindeki gelişigüzel “üreticiden bağımsız” anlamında değil (bu ifadenin ne kadarını abarttığına birazdan geleceğiz), ama Xilinx, Altera, Lattice ve Microchip silikonu arasında yeniden tasarım gerektirmeden taşınabilecek RTL yazma konusunda disiplinli, mühendislik odaklı bir yaklaşım.
Bu yazı bunu nasıl yaptığımızın uzun versiyonu: gerçekten zor olduğu yerler, doğru yapıldığında çözülmüş bir problem olduğu yerler, ve neden bu ekstra çabanın ihtiyaç duymadan önce ödenmeye değer olduğu, sonra değil.
Her FPGA Ailesinde Akıcılık
Çoklu üretici RTL, ekibin silikonu gerçekten tanımasıyla başlar, sadece veri sayfasını okumuş olmakla değil. RunX’te bu, dördünde de gerçek tasarım ve üretim (tapeout) geçmişi demek:
- Xilinx/AMD yüksek uçlu SoC ve yapay zeka hızlandırıcı işleri için en derin ekosistem, en geniş sabit IP kataloğu ve büyük tasarımlar için en olgun araç seti.
- Altera telekom ve ağ altyapısında uzun süredir güçlü bir isim; Agilex nesli özellikle ölçekte güç verimliliği etrafında kurulu.
- Lattice düşük güç, küçük ayak izi gerektiren uç (edge) ve kontrol katmanı nişinin sahibi; kart alanı ve bekleme akımının ham lojik sayısından daha önemli olduğu tasarımlar.
- Microchip büyük ölçüde eski Actel/Microsemi antifuse ve flash tabanlı hatlar üzerine kurulu; radyasyon toleransı, güvenlik ve kalıcı (non-volatile) yapılandırmanın gerçekten önemli olduğu yer (havacılık, savunma, güç verildiğinde bitstream’in SRAM tabanlı bir parçadan okunmasına tahammül edemeyen her şey).
Premium bir parçanın doğru tercih olmadığı, maliyet duyarlı yüksek hacimli işler için Gowin gibi bütçe segmentindeki seçeneklerde de uygulamalı tecrübe taşıyoruz.
Bu genişlik bir slayt maddesi değil. Her üretici nişini gerçek sebeplerle kazandı, ve bu sebepleri bilmek bir mimari kararın, hangi üreticinin DSP dilim şeklinin bu filtreye en iyi uyduğu, hangi üreticinin güvenlik modelinin gereksinimleri gerçekten karşıladığı, devreye alma aşamasında hata olarak keşfedilmek yerine ilk günden doğru verilmesini sağlar. Bu aileleri gerçekte neyin ayırdığına dair daha derin bir giriş isterseniz, bir tane yazdık: Doğru FPGA Ailesini Seçmek.
Dürüst Sınır: Tam Üretici Bağımsızlığı Yoktur
Pek çok pazarlama malzemesi, “RTL’ini bir kez yaz, her yerde sentezle” fikrini her tasarım için çözülmüş bir problem olarak satar. Basit tasarımlar için bu kabaca doğru: bağlantı lojiği, temel durum makineleri, düşük hızlı çevre birimleri minimal zorlukla taşınır. Belirli bir karmaşıklığın ötesinde doğru olmaktan çıkar, ve aksini iddia etmek bir projenin bu farkı mimari aşamasında değil devreye alma aşamasında keşfetmesine yol açar, bunu öğrenmek için mümkün olan en pahalı zaman.
Gerçekte nerede çöktüğü
- Yüksek hızlı, PHY’a dokunan arayüzler. SerDes, PCIe, Aurora, 10G/25G Ethernet MAC’leri ve PHY’leri, üreticiden üreticiye tamamen farklı yapılandırma, kalibrasyon ve elektriksel özelliklere sahip sabit makrolardan inşa edilir. Bir SerDes’in jenerik bir RTL tanımı yoktur; üretici ilkellerini doğrudan örneklersiniz.
- Kart seviyesi unsurlar. Harici DDR denetleyicileri, saat ağaçları ve güç sıralaması, RTL kağıt üzerinde ne kadar benzer görünürse görünsün, fiziksel olarak farklı kartlarda fiziksel olarak farklı problemlerdir.
- 1:1 karşılık gelmeyen ilkeller. Xilinx’in URAM’ı, UltraScale+ parçalarına özgü büyük, düşük gecikmeli bir “ultra RAM” bloğu, Altera’da doğrudan bir karşılığa sahip değil. Altera’nın ALM’i (bir çift küçük arama tablosunu, düz bir Xilinx LUT/MUX diliminden daha esnek paketleyen yapı) de temiz biçimde geri eşlenmiyor.
- Aynı şekilde olmayan kumaş. Altera’nın ALM tabanlı kumaşı bazı lojik desenlerini Xilinx’in LUT/MUX-dilim kumaşından daha yoğun paketleyip daha ucuza yönlendirebilir; diğer desenler için tam tersi doğru. Bir üreticide rahatça zamanlama kapatan bir tasarım, sıfır RTL hatasıyla, başka bir üreticide sıkışabilir.
- 1:1 olmayan yumuşak IP. Üretici bellek denetleyicileri, PCIe çekirdekleri ve DSP kütüphaneleri parametreleme, gecikme ve protokolde farklılık gösterir. Bir Xilinx MIG tabanlı DDR denetleyicisini Altera EMIF tabanlıyla değiştirmek doğrudan bir değişim değildir.
İşte bu yüzden “sadece yeniden hedefle” saf bir tavsiye, ve işte bu yüzden sahte üretici bağımsızlığı satmıyoruz. Bunun yerine, gerçekten mümkün olan her katmanda taşınabilirlik için mühendislik yapıyoruz, ve mümkün olmayan katmanlar hakkında müşterilerle sözleşme öncesi açığız. Sonraki beş bölüm tam olarak bu: aradaki farkın gerçekten kapandığı katmanlar.
Sadece Mantığı Değil, Bus’ı da Standartlaştırın
Çoklu üretici tasarımdaki en yüksek etkili kararlardan biri, tek bir üreticiye özgü RTL satırı yazılmadan önce verilir: IP bloklarınız birbirleriyle hangi ara bağlantı standardı üzerinden konuşuyor?
AXI4 (ARM kökenli, Xilinx/AMD ekosisteminde baskın) ve Avalon (Intel/Altera’nın Platform Designer/Qsys’e bağlı yerel standardı) iki gerçek seçenek. Kaçırılması kolay nokta: ARM IP’si gömülü ve SoC tasarımına geniş çapta hakim olduğundan, AXI sadece Xilinx parçalarının çok ötesinde fiili endüstri standardı haline geldi. Üçüncü taraf IP’nin çoğu, doğrulama IP’sinin çoğu ve SoC seviyesi akışların çoğu onu varsayılan kabul ediyor.
Bu yüzden dahili RTL mimarimizi AXI üzerinde standartlaştırıyoruz, öncelikle Altera veya Microchip parçalarını hedefleyecek tasarımlar için bile, teknik olarak Avalon’un “beklenen” seçim olacağı yerlerde. Somut olarak bu şu demek:
- Özel IP bloklarını varsayılan olarak AXI4 (veya AXI4-Lite/Stream) arayüzleriyle inşa etmek.
- Bir proje Altera donanımına indiğinde, her bloğu yeniden yazmak yerine sınırda ince, iyi doğrulanmış bir AXI-Avalon köprüsü kullanmak.
Bu, tasarımın yeniden kullanılabilir çekirdeğini, gerçek mühendislik değeri taşıyan asıl IP mantığını, tamamen üreticiden bağımsız tutar ve tüm çeviri işini tek bir sınır katmanına hapseder. Ayrıca standartlara uygun bir blok, hangi üretici inşa ederse etsin hazır AXI doğrulama IP’sine karşı doğrulanabilir; üçüncü taraf entegrasyonu neredeyse önemsizleşir; ve her mühendis, blokların birbirleriyle nasıl konuştuğu için tek, tutarlı bir zihinsel model kazanır.
Üreticiye Göre Ayarlanmış Tasarım: Davranışı IP Bazında Eşleştirmek
Bir tasarımı üreticiler arasında yeniden hedeflemek için kullandığımız gerçek yöntem, yeniden sentezin işe yaramasını ummak yerine:
- Referans uygulamasından başlayın simülasyonda doğrulanmış, idealde donanımda kanıtlanmış Xilinx hedefli bir tasarım.
- IP bazında parçalara ayırın, tek bir monolitik yeniden sentez yerine.
- Her bloğu izole biçimde yeniden uygulayın ve doğrulayın, orijinal için kullanılan aynı test bankına ve beklenen çıktılara karşı, tam sisteme entegre edilmeden önce.
Bu, “yeniden hedefle ve umut et”ten daha iyi çalışır: doğrulamayı bir seferde bir bloğa izole etmek, uyuşmazlığın küçük, sınırlı bir arama alanına sahip olması demek. Hangi bloğun neden saptığını hemen bilirsiniz, düzinelerce bloklu bir sistemi baştan sona hata ayıklamak yerine. Ve her blok orijinali doğrulamak için kullanılan aynı test bankına karşı kontrol edildiğinden, elde ettiğiniz “hatasız derlendi” değil, birebir karşılaştırılabilir bir davranışsal kanıt.
Bu şekilde yapıldığında, yeniden hedeflenen tasarımın davranışı orijinaline neredeyse aynı olur. Her açıdan otomatik olarak bit bit aynı değil (zamanlama, sıfırlama sıralaması ve uç durumlar üreticiler arasında hâlâ farklılık gösterebilir, ki tam olarak bu yüzden IP bazında kontrol önemli), ama aynı güvenle kullanılabileceği kadar kapsamlı doğrulanmış.
Kart Seviyesi Gerçeklik: Neden Bu İş Simülatör Değil Donanım İster
Önceki bölüm tasarımın sınırının temiz olduğunu varsayar: RTL girer, RTL çıkar, her şey bir test bankında kanıtlanabilir. Bir tasarımın kart üstü unsurları olduğu anda, harici DDR, saat dağıtımı, güç sıralaması, aynı PCB’deki diğer çipler, hiçbir simülatör bu farkı tek başına kapatamaz, çünkü artık karşılaştırdığınız altın bir referans vektörü değil. Fizik: sinyal bütünlüğü, osiloskopta ölçülen zamanlama marjları, termal davranış, gerçek güç raylarında gerçek silikon.
DDR genişliği örneği bunu somutlaştırıyor. Bir üreticinin denetleyicisi DDR’a belirli bir genişlikte basitçe arayüz kurarken, başka bir üreticinin denetleyicisi tamamen farklı bir genişliği doğal olarak destekleyebilir, bir parçada on altı bit, diğerinde yirmi dört bit. Farklı RTL bu uyuşmazlığı düzeltmez. Doğru dişli oranını (fabric ile DDR arayüzü arasındaki saat ilişkisini) ayarlayacak kadar derin bir anlayış gerekir, böylece bant genişliği ve zamanlama marjı her iki parçada da gereksinimleri karşılamaya devam eder.
Dişli oranını yanlış ayarlarsanız kart açılır, çalışır ve yük altında sessizce veriyi bozar: RTL simülasyonunda hiç ortaya çıkmayan, gerçek donanımda ise saatler süren bir stres testinin sonunda, genellikle takvimin en kötü noktasında ortaya çıkan bir arıza.
İşte bu yüzden kart seviyesi adaptasyonu kendi başına, ellerin donanımda olduğu bir disiplin olarak tutuyoruz, bir bitstream’i teslim edip ummak yerine. Uçtan uca bir ekip kartı güç açılışından sinyal bütünlüğü doğrulamasına kadar sahiplenir.
Akıllı Çıkarım: Araç İçin Yazmak, Ona Karşı Değil
Çıkarım (inference), bir sentez raporunda yaşamamış okuyucular için: üreticiye özgü bir ilkeli elle örneklemek yerine, jenerik, iyi yapılandırılmış RTL yazarsınız, ve her üreticinin sentez aracı bunu tanıyıp otomatik olarak kendi en uygun donanım ilkeline eşler. Aynı kaynak bir üreticide BRAM bloğuna, başka birinde farklı şekilli bir bellek ilkeline, dizi yeterince küçükse düz LUT tabanlı dağıtık belleğe çıkarılabilir.
“Akıllı” kısmı, hangi kodlama deseninin, sıfırlama/etkinleştirme yapısı, yazma sırasında okuma davranışı, dizi tanımlama stili, her üreticide çıkarımı başarılı kılacağını blok bazında bilmektir. Bu arıza modu hem devasa bir alan/zamanlama cezası hem de bir sentez günlüğünde gözden kaçması gerçekten kolay bir şey, tam olarak izlemiyorsanız. RunX tasarımcıları RTL’i en baştan her üreticinin çıkarım kurallarını akılda tutarak yazar ve doğru ilkele çıkarılıp çıkarılmadığını her yapıda kontrol eder.
Bir üretici ilkelini doğrudan isimle örneklemek, sadece bir parçada var olan çok özel bir özellik gerektiğinde bazen kaçınılmazdır. Ama bu son çare aracıdır, varsayılan değil: doğrudan örnekleme, yapısı gereği üreticiye kilitli olan tek teknik.
PS Seviyesi Farklılıklar: İşlemci Bile Aynı Çip Değil
SoC sınıfı FPGA’larda üretici farkları mantıkta durmaz. Xilinx’in Zynq ailesi, kumaşı sabit, ARM tabanlı bir İşlemci Sistemi (PS) ile eşleştirir: belirli Cortex çekirdekleri, kendi boot ROM’u, kendi sabit çevre birimi denetleyicileri (belirli UART/SPI/I2C/USB/Ethernet yapılandırmaları) ve PS ile programlanabilir mantığın AXI üzerinden konuştuğu sabit bir yol. Altera’nın HPS’i de ARM tabanlı, ama tamamen farklı bir boot akışı, çevre birimi karışımı ve PS-kumaş ara bağlantısıyla.
Bu önemli, çünkü yukarıdaki RTL seviyesi tekniklerin (bus standartlaşması, IP bazında eşleştirme, akıllı çıkarım) hiçbiri bu katmana dokunmaz. PS veya HPS sentezlediğiniz bir şey değil; kendi boot süreci, kendi yapılandırma yazmaçları ve üretici başına ayrı ayrı doğrulanması gereken kendi yazılım/donanım yazılımı (firmware) yığını olan sabit silikon.
RTL seviyesinde taşınabilir bir tasarım bile işlemci seviyesinde önemli, üreticiye özgü bir yazılım devreye alma çabası gerektirebilir. Bunu bir dipnot olarak ele almak, bir programın takviminin en yaygın geç kayma sebeplerinden biridir, tam da ekip en zor kısmın geride kaldığını düşündüğü anda. Bunu en baştan kendi iş akışı olarak planlıyoruz, her hedef üreticide PS/HPS devreye almasını sahiplenen mühendislerle.
Hızlı Özet
| Katman | Taşınabilir olması için ne doğru olmalı |
|---|---|
| bus mimarisi | IP blokları varsayılan olarak AXI konuşur; sınırda tek bir ince köprü Avalon’u halleder |
| Simülasyon seviyesi eşleştirme | Her IP, orijinalin test bankına ve vektörlerine karşı IP bazında ayrı ayrı doğrulanır |
| Kart seviyesi donanım | Donanımda çalışan bir ekip, kart başına dişli oranlarını, sinyal bütünlüğünü ve güç sıralamasını sahiplenir |
| Akıllı çıkarım | RTL her üreticinin özel çıkarım kurallarına göre yazılır, her yapıda kontrol edilir |
| PS seviyesi devreye alma | Boot akışı, çevre birimi sürücüleri ve donanım yazılımı kendi üretici-başına iş akışı olarak ele alınır |
İş Gerekçesi: Bunu Neden Baştan Ödemeli?
Yukarıdakilerin hiçbiri bedava değil. Gerçek bir çoklu üretici RTL stratejisi tipik olarak yüzde 10 ila 20 daha fazla tekrarlanmayan mühendislik (NRE) maliyeti ve takvimi gerektirir, çünkü kasıtlı olarak üreticiye özgü kısayollara yaslanmıyorsunuz: tasarımın daha fazlasını kendiniz yazıp doğruluyorsunuz, tek bir sentez geçişi yerine IP bazında doğrulama çalıştırıyorsunuz, tek kart yerine birden fazla kartta donanım devreye alma personeli görevlendiriyorsunuz.
Bu gerçek, ölçülebilir bir maliyet, ve çoğu ekibin bunu varsayılan olarak ödememesinin tam nedeni de bu: bir distribütör tüm programın bağlı olduğu parça için 52 haftalık teslim süresi verene kadar ertelemesi kolay. Bu prim, tüketici elektroniğinin ay bazlı döngüleri değil, genellikle yıllar ve on yıllarla ölçülen bir ürün ömrü boyunca üç şey satın alır:
| Ne satın alır | Ne anlama gelir |
|---|---|
| Tedarik zinciri dayanıklılığı | ”Lattice’e taşı” planını sadece umut etmek değil, gerçekten uygulayabilmek |
| Üretimden kalkma koruması | Ürün hattı üretimden kaldırıldığında tam yeniden tasarım yerine sınırlı, iyi anlaşılmış bir yeniden hedefleme |
| Pazarlık gücü | Karşınızdaki üretici gidebileceğiniz başka bir yer olduğunu bildiği için fiyat alıcısı olmamak |
Bu yazının başındaki 52 haftalık rakam bir kerelik bir hikaye değil. Kıtlıklar ve tek kaynak riski, yarı iletken endüstrisinin tekrarlayan gerçekleri, kara kuğu olayları değil, ve çoklu üretici RTL’i erkenden alınmış bir sigorta poliçesi olarak ele alan ekipler bir sonraki sefer program takvimlerini yeniden müzakere etmeyen ekiplerdir. RunX’te her çoklu üretici tasarımına ilk günden inşa ettiğimiz strateji bu, bir kurtarma planı olarak değil.
Tasarımınızın düşündüğünüzden daha mı taşınabilir olduğunu, yoksa daha mı uzak olduğunu bilmek ister misiniz? Çoklu üretici hazırlık değerlendirmesi için RunX ile iletişime geçin.