CARME
CARME · Döngüde RTL
Önizleme

Sürücü ile donanım arasındaki hatayı, silikona girmeden bulun.

Gözden kaçan SoC hatalarının çoğu ne RTL'de ne de firmware'dedir. Birinin diğeri hakkında varsaydığı şeydedir. CARME ikisini, herhangi birinin ilk commit'inden itibaren birlikte çalıştırır ve sonraki her commit'te çalıştırmaya devam eder.

Firmware izi · RTL dalga biçimleri · tek zaman eksenirunning
41void dma_start(void) {
42 DMA0->SRC = (uint32_t)buf;
43 DMA0->LEN = 256;
44 DMA0->CTRL = DMA_EN | DMA_IRQ;
45 while (!done) __WFI();
46}
RTL'i döngüye koymanın dört yolu

Tek bir çevre biriminden SoC'nin tamamına.

01

Tek bir çevre birimi

Yeni bir UART, bir DMA motoru, bir kripto çekirdeği. Blok RTL'dir; CPU, bellek ve diğer çevre birimleri emüle edilir. Sürücü neredeyse tam hızda çalışır, yalnızca blok çevrim çevrim ilerler.

02

Bir hızlandırıcı alt sistemi

Bir NPU, bir video hattı, kendi belleği olan bir paket motoru. Alt sistem, ara bağlantısıyla birlikte RTL'dir; Linux ve kullanıcı alanı yığını emüle edilen Cortex-A ya da RISC-V çekirdeklerinde çalışır.

03

CPU

Kendi çekirdeğiniz RTL olarak, CARME'nin bellek ve çevre birimi modellerine karşı gerçek firmware çalıştırır. Emekliye ayrılan her komutu CARME'nin aynı ISA için başvuru modeliyle karşılaştırın ve farklı olan ilk komutta durun.

04

SoC'nin tamamı, parça parça

Tüm bloklar emüle edilerek başlayın. Yazıldıkça onları RTL ile değiştirin. Aynı testler geçmeye devam eder ya da hangi bloğun onları bozduğunu tam olarak söyler.

Neyi test edersiniz

Donanım ile yazılım arasındaki varsayımları.

  • Yeni IP'ye karşı sürücüler

    NasılÜreticinin ya da ekibinizin sürücüsü RTL üzerinde, daha FPGA'ya geçmeden

  • Açılış akışı

    NasılROM, önyükleyici, güvenli açılış ve işletim sistemi açılışı RTL açılış yolunda

  • Yazmaç haritaları

    NasılFirmware başlık dosyaları ve RTL yazmaç haritası tek bir .cmperiph'e karşı kontrol edilir

  • Kesmeler ve DMA

    NasılFirmware ile donanım arasındaki gecikme, sıralama ve yarış durumları

  • Düşük güç

    NasılSaat kapılama, güç alanları ve uyanma; bunları yöneten firmware ile birlikte

  • Hata yönetimi

    NasılRTL'e ya da veri yoluna hata enjekte edilir; firmware toparlanmak zorundadır

  • Performans

    NasılGerçek yazılım yükü altında RTL'in çevrim sayıları

  • Güvenlik

    NasılGerçek boot koduyla anahtar yönetimi, yaşam döngüsü ve debug kilidi

Ölçeklenen regresyonlar

Her commit'te RTL'e karşı firmware.

carme-test, .cmtest dosyalarını çekirdekler ve makineler arasında paralel çalıştırır. Her test bir checkpoint'ten başlar, firmware'i RTL'e karşı çalıştırır ve UART çıktısını, yazmaçları, belleği, veri yolu trafiğini ya da sinyalleri kontrol eder. Sonuçlar JUnit XML olarak çıkar; hatalar iz, dalga biçimleri ve onları birebir yeniden oynatan komut satırıyla gelir.

tests/dma_burst.cmtest
from carme import board
def test_dma_burst_to_ddr(rtl):
b = board("boards/my_soc.cmboard", rtl={"dma0": "-f rtl/dma.f"})
b.load("build/dma_selftest.elf")
b.uart("uart0").expect("DMA: 64 bursts OK", timeout_ms=200)
assert b.signal("dma0.u_ctrl.err_q") == 0
İki taraf birden

Projeyi baştan sona izleyen kapsam, hata ayıklama ve testler.

01

Firmware'den kapsam

Her firmware çalıştırması RTL kapsamına eklenir: kod, toggle, FSM ve fonksiyonel. Her çalıştırma firmware'i de ölçer: testlerin hangi satırlara ulaştığını. Tek çalıştırma, iki rapor; ikisindeki boşluk da yazılacak bir sonraki testi gösterir.

02

İkisi için tek hata ayıklayıcı

CPU'yu bir C satırında durdurun ve RTL'i o anda görün. Bir RTL sinyaline breakpoint koyun ve ona yol açan firmware'e inin. İzler ve dalga biçimleri Debug görünümünde tek zaman eksenini paylaşır.

03

RTL'den FPGA'ya ve silikona, aynı testler

RTL'e karşı çalışan .cmtest dosyaları, döngüdeki FPGA prototipine karşı ve daha sonra karta karşı hiç değişmeden çalışır. Projenin ilk günü yazılan bir test, son gününde de onu korumaya devam eder.

Sorular

Sık sorulan sorular.

Hangi HDL'ler döngüde olabilir?

SystemVerilog, Verilog ve VHDL, Lumina Sim ile serbestçe karışık. SystemC ve C++ modelleri de bağlanabilir.

RTL'i sisteme hangi veri yolları bağlar?

AXI4, AXI4-Lite, AXI-Stream, AHB, APB, Wishbone ve TileLink; ayrıca kesmeler, resetler, saatler ve GPIO. Özel arayüzler küçük bir adaptör kullanır.

RTL gerçek zamanı mı görür, emüle edilen zamanı mı?

CPU'larla paylaşılan emüle edilen zamanı. Her RTL saat kenarı bu zaman çizgisinde sabit bir noktaya karşılık gelir; bu yüzden çalıştırmalar tekrarlanabilir.

UVM ortamımı da kullanabilir miyim?

Evet. UVM ajanlarını CARME'nin sürmediği arayüzlerde tutun, geri kalanını firmware sürsün.

Bir sonraki tape-out'unuz, üzerinde firmware zaten çalışırken.

Gizlilik ayarları

Bu sitenin neleri kullanabileceğini seçin. Kararınızı her sayfanın altındaki Gizlilik ayarları bağlantısından dilediğiniz zaman değiştirebilirsiniz.

Sitenin çalışması için gerekenler ve burada yaptığınız seçimin kaydı. Kayıt tarayıcınızda tutulur; çerez kullanılmaz.

Her zaman açık

Ziyaretleri saymamıza ve hangi sayfaların işe yaradığını görmemize olanak tanır; reklam ya da siteler arası takip içermez. Şu anda hiçbir analitik aracı kullanmıyoruz, yani seçiminiz ne olursa olsun hiçbir şey yüklenmez.

Çerez politikası · Gizlilik politikası