Zephyrnet Logosu

Vivado Simulator'da PCI Express IP için Versal ACAP Entegre Bloğu için Hızlı Test Durumları Oluşturma

Tarih:

Vivado Simülatörü, belirli bir zaman veya zaman diliminde bir sinyali, kabloyu veya kaydı belirli bir değere zorlamak için etkileşimli bir mekanizma sağlar. Ayrıca nesneler üzerindeki değerleri belirli bir süre boyunca değişmeye zorlayabilirsiniz. Bu blog, temel arayüzlerde belirli veri modellerini zorlayarak Vivado Simulator kullanarak simülasyonda test senaryoları oluşturma tekniklerini açıklar.

PCI Express IP için Versal™ ACAP Integrated Block ile bir sistem tasarlarken, tasarımcılar, belirli bir gelen paket veya yanlış sinyal geçişi nedeniyle sistemin durduğu sorunlarla karşılaşabilir. Donanımda bu tür sorunları ayıklamak zor ve zaman alıcı olabilir, çünkü bu, ChipScope gibi araçlar kullanarak hata ayıklamayı gerektirebilir.

Hata ayıklamanın en kolay yolu, mümkünse belirli bir testbench yazarak sorunu simülasyonda yeniden oluşturmaya çalışmaktır. Bu yaklaşımla ilgili sorun, kullanıcının kapsamlı bir testbench kodu yazmak için önemli miktarda zaman harcaması gerekmesidir. Vivado Simulator'ın 'kuvvet' komut özelliği, belirli bir zamanda paketleri enjekte ederek ve sinyalleri değiştirerek sorunları yeniden oluşturmak için kullanılabilir.

PCI Express IP için Versal ACAP Entegre Bloğu, 'Kaynaklar' Penceresinde somutlaştırılmış IP üzerindeki 'Örnek Tasarımı Aç' seçeneğine sağ tıklanarak açılabilen örnek bir tasarımla birlikte gelir. Örnek tasarımı simüle etmek için kullanılan varsayılan simülatör, aşağıda 'ayarlar' bölümünde gösterildiği gibi Vivado Simülatörüdür.

1.png

Vivado'da PCI Express IP için Versal ACAP Integrated Block için oluşturulabilecek iki tür örnek tasarım vardır – BMD ve PIO. Varsayılan örnek tasarım, iki modu olan PIO'dur – Adres Hizalama Modu ve Dword Hizalama Modu. (Bkz. PG343)

  • Adres Hizalama Modu için, PIO tasarımı, PCIe için Uç Noktanın arkasında ACAP blok RAM'de 8192 baytlık bir hedef alan uygular. Bu 32 bitlik hedef alana, tek Dword G/Ç Okuma, G/Ç Yazma, Bellek Okuma 64, Bellek Yazma 64, Bellek Okuma 32 ve Bellek Yazma 32 TLP aracılığıyla erişilebilir. PIO tasarımı, kendisine çekirdek tarafından sunulan geçerli bir Bellek Okuma 32 TLP, Bellek Okuma 64 TLP veya G/Ç Okuma TLP isteğine yanıt olarak bir Dword yüküyle bir tamamlama oluşturur. Ayrıca, PIO tasarımı, bir G/Ç Yazma TLP isteği için başarılı bir durumla veri içermeyen bir tamamlama döndürür.
  • Dword Align Modu için, PIO tasarımı, ACAP blok RAM'inde 2048 baytlık bir hedef alan uygular. Bu hedef alan ve veri genişliği, AXI4-Stream arayüzüne göre değişir ve AXI4-Stream arayüzünün genişliğine eşittir. Bu hedef alana Memory Write 32 ve Memory Read 32 TLP'ler aracılığıyla erişilebilir. PIO, çekirdekten gelen geçerli bir Bellek Okuma 32 TLP isteğine yanıt olarak yük boyutuyla bir tamamlama oluşturur.

Aşağıdaki ekran görüntüsü, Dword Align Modu için oluşturulan PIO Örnek Tasarımından simülasyon dalga biçimi yakalamasını gösterir.

RP'nin RQ arayüzünde ilk paket MWr ve ikinci paket MRd'dir. Bu paketler, aşağıda gösterildiği gibi Uç Noktanın CQ arayüzünde görünür.

2.png

Aşağıdaki ekran görüntüsü, Kök Bağlantı Noktası (RP) RQ arabiriminde bir MWr paketinin Yakınlaştırılmış bir yakalamasını gösterir:

3.png

Aşağıdaki ekran görüntüsü, RP RQ arabiriminde bir MRd paketinin Yakınlaştırılmış bir şekilde yakalanmasını gösterir:

4.png

Aşağıdaki ekran görüntüsü, RP RQ arabiriminde bir MRd paketinin Yakınlaştırılmış bir şekilde yakalanmasını gösterir:

5.png

Benzer şekilde, Endpoint CQ arabirimindeki MWr ve MRd paketlerinin yakınlaştırılmış görünümleri aşağıda gösterilmiştir.

Bellek Yazma (MWr):

6.png

m_axis_cq_tuser:

7.png

8.png

9.png

Bellek Okuma (MRd):

10.png

m_axis_cq_tuser:

11.png

12.png

Vivado Simulator'ın 'force' komutu, Hafıza Okuma paketinden sonra ikinci Hafıza Yazma paketini göndermek için kullanılabilir.

Bu, bir Tcl dosyasına aşağıdaki komutu ekleyerek yapılabilir:

add_force {/board/RP/s_axis_rq_tlast} {1 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tdata} -radix hex {00000000000000000000000000000000000000000000000000000000000000000f0e0d0c0b0a090805060708010203040101a00900af08010000000000000010 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tuser} -radix hex {00000000000000000000000000015540000000f410000f 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tkeep} -radix hex {001f 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tvalid} {1 355.260us} {0 355.264us}

13.png

Tcl dosyasının konumu, xsim.simulate.tcl.post* Aşağıda gösterildiği gibi Simulation Settings GUI'deki alan:

14.png

Aşağıdaki ekran görüntüsü, eklenen kuvvet komutlarının bir sonucu olarak 355.260 ns'de ikinci MWr paketini göstermektedir.

15.png

Aşağıda, RP RQ arabiriminde zorlama komutu tarafından oluşturulan MWr paketinin Yakınlaştırılmış görünümü verilmiştir:

16.png

EP CQ arabirimindeki aynı paket aşağıda gösterilmiştir:

17.png

Yukarıdakiler, simülasyonda özel tasarım donanım sorununu yeniden üreterek, PCI Express sorunları için Versal ACAP Integrated Block'ta hata ayıklamak için Vivado Simulator 'force' komutunun yeteneğinin yalnızca bir örneğidir. 'Zorla' komutlarını kullanarak hata ayıklamak için kullanılabilecek diğer senaryolardan bazıları şunlardır:

  • Uç Noktadan okumak ve yazmak için birden çok MWr paketi oluşturun.
  • Uç Noktadan Kök Bağlantı Noktasına yukarı akışta paketler oluşturun.
  • IP'ye hatalı paket enjekte edin ve donanım davranışını taklit etmek için IP davranışını gözlemleyin
  • Test amacıyla 'tready' ve 'tvalid' gibi sinyallerin onaylanmasını veya onaylanmasını zorlayın

Notlar:

  • Yukarıda PCI Express IP için Versal ACAP Integrated Block'a atıfta bulunulmasına rağmen, benzer teknikler diğer IP çekirdeklerine ve özel tasarımlara uygulanabilir.
  • ModelSim'de 'force' komut kullanımı hakkında bilgi edinmek için bkz. (Xilinx Cevap 53776)
    Vivado Simulator 'kuvvet' komutları hakkında daha fazla bilgi için bkz. (UG900).

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/Generating-Quick-Test-Cases-for-Versal-ACAP-Integrated-Block-for/ba-p/1260248

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?