Bir Modelsim test tezgahını harici bir uyaranla arayüzleyebilir misiniz?


10

Hem sürücü yazılımı hem de FPGA geliştirme yapan bir ekip üzerinde çalışıyorum. FPGA simülasyonu Modelsim'de yapılıyor ve sürücü yazılımı C'de yazılıyor. Entegrasyon riskini en aza indirmek için, donanıma koymadan önce ürünümüzün iki yarısı arasındaki etkileşimi modelleyebilmek isterim.

Modelsim zaman ve değerleri girmek için bir metin dosyası biçiminde uyaran sağlayan bir testbench destekler biliyorum. Modelsim'in bir boruyu harici bir uygulamaya (sürücümüz gibi) bağlamanıza ve yazılımın değerleri test bankına sokabileceği, daha sonra sonuçları gözlemleyebileceği bir tür dağıtılmış simülasyon çalıştırmanıza izin veren bir moda sahip olup olmadığını merak ediyorum. .

Bir metin dosyası girişi ile yapamadığım hile ürünün iki yarısı etkileşim var. Yazılımın FPGA simülatörüne "yazma" değerlerine sahip olması, sonuçları okuması ve daha sonra okuduğu sonuçlara bağlı olan FPGA'ya yeni değerler yazması gerekiyor. Metin dosyaları, girdilerin çıktıdan bağımsız olmasını gerektirir.

Hem StackExchange hem de google'da arama yaptım, ancak aradığım davranışı tanımlamak veya mevcut olmadığını belirlemek için aramamı daraltmak için bir dizi anahtar kelime bulamadım.

Yanıtlar:


9

Unix Adlandırılmış Borular Üzerinden ModelSim Simülasyonunun Harici Kontrolü

Özet: Bu tezde, bir ModelSim simülasyonunu harici bir program aracılığıyla kontrol etme yöntemini sunuyoruz. ModelSim ve harici program arasındaki iletişim, her uygulamaya normal dosyalar olarak görünen Adlandırılmış Kanallar ("FIFO") kullanılarak gerçekleştirilir. İşlemler Arası İletişim (IPC) için FIFO'ların normal dosyalara karşı kullanımı arasındaki temel fark, başka bir uygulama FIFO'dan okumaya çalışana kadar bir uygulamanın FIFO'ya yazılmaya çalışılması ve tam tersi. Bu, IPC'nin güvenilirliğini artırır. Bu yöntemin başlıca avantajları şunlardır: 1) Yalnızca genel dosya işlemleri kullanıldığından, harici uygulama hemen hemen her programlama dilinde yazılabilir; 2) Doğrulama mühendisine standart doğrulama yazılım paketlerini minimum yeniden yazma ile yeniden kullanma yeteneği verir; 3) Birden Çok Test Altında Cihaz (DUT) birbiriyle iletişim kurarak, son sistemin daha doğru bir simülasyonu oluşturulabilir; ve 4) ModelSim'in simülasyon motoru çok iş parçacıklı olmasa bile, bir Tek Sistemli Görüntü (SSI) kümesi veya çok işlemcili bilgisayarda genel simülasyonun performansı kolayca artırılabilir. Davranışsal VHDL için dosya giriş / çıkış (G / Ç) uygulaması nedeniyle ModelSim bu FIFO'ları doğrudan okuyamaz veya yazamaz. Bu sınırlama için bir geçici çözüm ModelSim'in Yabancı Dil Arabirimi (FLI) kullanılarak gösterilmiştir. Bu makale aynı zamanda VHDL'de yeni nesil kayan nokta rutinlerinin doğrulanmasında kullanılan bu yöntemin çalışan bir örneğini göstermektedir. Özellikle, C ++ ile yazılmış açık kaynaklı IEEE Uyumluluk Denetleyicisi yazılım paketi,

Ve yabancı bir programlama arabirimi gerektiren FIFO'larla ilgili sorun, VHDL dosya G / Ç verileri mevcut olana kadar engelleme ile düzgün bir şekilde başa çıkamayacağıdır.

Maalesef tez web'de mevcut değil.

Model Sim ® Yabancı Dil Arabirimi Sürüm 5.6d , PDF 3.4 MB.

Linux x86 Platformunda c - VHDL Co-Simulation ve Simulator Control için ModelSim Yabancı Dil Arabirimini Kullanma Andre Pool - fli@andrepool.com - Sürüm 1.5 - Kasım 2012'de oluşturuldu, son güncelleme Eylül 2013 , PDF, 320KB (Ve asla FIFO'lardan bahsetmez) .

Linux x86 Platformunda c - VHDL Ko-Simülasyonu ve Simülatör Kontrolü için ModelSim Yabancı Dil Arayüzünün Kullanılması (Eşleşen github kod deposu).

Master · texane / vhdl · GitHub'da ghdl: vhdl / src / sim / ghdlex_mein'de VHPI Yabancı işlev çağrılarını kullanan biraz daha açık kaynak var .

GHDL_discuss listesindeki Martin Strubel'den bir güncellemeye benzeyen: 14 Nisan 2014 tarihinde fifo.c için bir tarih gösteren http://www.section5.ch/downloads/ghdlex-0.051.tgz .

FLI, tanımı gereği sizi VHPI desteklerinin (IEEE Std 1076-2008, VHDL LRM'nin bir parçası olan) durumundan emin olmayan Modelsim'e kilitler.

Bir soket veya dosya kullanmak FIFO, yazılım ve donanım sürecinin hız tamponlaması sağlayarak farklı hızlarda çalışmasını sağlar. Yazılım sisteminiz, donanım simülasyonundan daha büyük büyüklükte siparişler ise (ve genellikle) her zaman gerekli değildir.

VHDL'ye UNIX (POSIX) işlevselliği sağlama çabası vardır, Daha önceki bir kağıda bir işaretçi içeren Public Domain VHDL paketlerine bakın SNUG San Jose 2002 1 VHDL Test Tezgahları için C / UNIX İşlevleri Bir slaytla birlikte VHDL Test Tezgahları için C / UNIX İşlevleri Unix borular ve rsh ile ilgili ek notlarla ayarlanır . Bu, adlandırılmış boruların nasıl açık tutulacağını gösterir. Tüm VHDL kodu da indirilebilir. Bunun amacınıza ulaşmanın en kolay yoluna yol açacağını düşünüyorum.

Modelsim'e özgü bir boruya bağlanmanıza izin veren bir şey var mı? Muhtemelen hayır, Windows altında daha çok. Bu yapılabilir mi? Evet, ama yol korkusuz olanlar için değil. Veri kullanılabilirliğini beklerken bir ucunu ya da diğerini ya da her ikisini de kilitleyebilirsiniz.

Bir yabancı programlama arayüzü teorik olarak 'borunun' bir veya diğer ucu için bir alt süreç oluşturmanıza izin verir, bu da iki uç arasında iletişim kurmak için paylaşılan bir bellek modeli kullanabileceğiniz anlamına gelir.


Harika araştırılmış cevap için teşekkürler! "Yabancı Dil Arayüzü" tam olarak ihtiyacım olan referans belgelerini çıkarmak için gerekli olan cümledim, bunu asla tahmin edemezdim! Buraya erken entegrasyon geliyorum!
Cort Ammon

5

Cocotb'a bakmak isteyebilirsiniz . Python tabanlı bir eş-simülasyon kütüphanesi, tasarım hedeflerinden biri, tanımladığınız metodolojiyi etkinleştirmek, değiştirilmemiş üretim yazılımını ve RTL'yi kolayca simüle etmekti.

Depoda, pingbir simülasyona ve kod boyunca yürüyen bir eğiticiye karşı değiştirilmemiş komut çalıştırmanın bir örneği var .

Kullanıcı alanı sürücüleri, yapılandırma yardımcı programları vb. İçin, yazılımınızı değiştirmeden çalıştırmak için birkaç seçeneğiniz vardır :

  1. Cihaza erişiminiz birkaç işleve (örneğin bir okuma ve yazma çağrısı) kaybolursa, simülasyona erişimi gerçekleştirirken engellenen bir simülasyon kütüphanesine bağlanabilirsiniz. Bu, yapılandırma için çok iyi çalışır.

  2. Yazılımınız aygıta erişmek için bellek eşlemli G / Ç ve dereferences işaretçileri kullanıyorsa, işler biraz daha karmaşık hale gelir - koruma bitleri ayarlanmış ve tuzak erişimine sahip bir paylaşılan bellek alanı oluşturmanız gerekir .

Ağ kullanıyorsanız, TUN / TAP gibi sanal arabirimler kullanılabilir ( yukarıda belirtilen öğreticiye bakın ), USB aktarımı veya diğer yaygın ana bilgisayar arabirimleri için benzer seçenekler olabileceğinden şüpheleniyorum.

Cocotb, çeşitli simülatörler ve VHDL (VHPI aracılığıyla) veya Verilog / SystemVerilog tasarımlarıyla (VPI aracılığıyla) çalışır. Maalesef Modelsim, VHPI'yi uygulamadığından, bir VHDL kullanıcısı olarak FLI ile sıkışıp kaldınız, bu da arayüz olarak neredeyse hiç kullanışlı değildir. Sen olabilir Mentor inilti bir endüstri standardı arabirimi kullanmaya çalışırsanız ve onları ikna etmeye veya VHPI destekleyen başka simülatörü değerlendirilebilir.

Ne yazık ki, genel olarak takım satıcılarının VHDL piyasasıyla özellikle ilgilenmedikleri, VHDL ile ilgili herhangi bir işlevselliği uygulamalarının zamanına göre değerlendirildikleri görülüyor ...

Yasal Uyarı: Ben bir Cocotb geliştiricisiyim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.