Kontrol Eksternal dari Simulasi ModelSim Via Unix Named Pipes
Abstrak: Dalam tesis ini, kami menyajikan metode mengendalikan simulasi ModelSim melalui program eksternal. Komunikasi antara ModelSim dan program eksternal dilakukan dengan menggunakan Named Pipes ("FIFOs"), yang muncul sebagai file normal untuk setiap aplikasi. Perbedaan utama antara menggunakan FIFO dibandingkan file normal untuk Inter-Process Communication (IPC) adalah bahwa aplikasi yang mencoba menulis ke FIFO dijeda hingga aplikasi lain mencoba membaca dari FIFO dan sebaliknya. Ini meningkatkan keandalan IPC. Keuntungan utama dari metode ini adalah 1) Karena hanya operasi file generik yang digunakan, aplikasi eksternal dapat ditulis dalam hampir semua bahasa pemrograman; 2) Ini memberi insinyur verifikasi kemampuan untuk menggunakan kembali paket perangkat lunak validasi standar dengan penulisan ulang minimal; 3) Dengan memiliki beberapa Perangkat Dalam Uji (DUT) berkomunikasi satu sama lain, simulasi yang lebih akurat dari sistem akhir dapat dibuat; dan 4) Kinerja simulasi keseluruhan dapat ditingkatkan dengan mudah pada kluster Single-System Image (SSI) atau komputer multiprosesor meskipun mesin simulasi ModelSim tidak multi-threaded. Karena penerapan input / output file (I / O) untuk VHDL perilaku, ModelSim tidak dapat membaca atau menulis FIFO ini secara langsung. Solusi untuk batasan ini ditunjukkan menggunakan ModelSim's Foreign Language Interface (FLI). Makalah ini juga menunjukkan contoh kerja dari metode ini yang digunakan dalam verifikasi generasi berikutnya dari rutinitas floating point di VHDL. Secara khusus, paket perangkat lunak IEEE Compliance Checker sumber terbuka, yang ditulis dalam C ++,
Dan masalah dengan FIFO yang membutuhkan antarmuka pemrograman Asing adalah bahwa file I / O VHDL tidak dapat menangani pemblokiran dengan anggun sampai data tersedia.
Sayangnya tesis ini tidak tersedia di web.
Model Sim ® Versi Bahasa Asing Antarmuka 5.6d , PDF 3.4 MB.
Menggunakan ModelSim Antarmuka Bahasa Asing untuk Simulasi Co-VHDL dan untuk Kontrol Simulator di Linux Platform x86 Andre Pool - fli@andrepool.com - Versi 1.5 - dibuat November 2012, pembaruan terakhir September 2013 , PDF, 320KB (Dan tidak pernah menyebutkan FIFO) .
Menggunakan ModelSim Bahasa Asing Antarmuka untuk c-VHDL Co-Simulasi dan untuk Kontrol Simulator pada Platform Linux x86 (Repositori kode github yang cocok).
Ada sedikit lebih open source, menggunakan panggilan fungsi VHPI Asing di ghdl:
vhdl / src / sim / ghdlex_mein di master · texane / vhdl · GitHub .
Dan apa yang tampak seperti pembaruan dari Martin Strubel pada daftar GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz menunjukkan tanggal untuk fifo.c 14 April 2014.
FLI secara definisi akan mengunci Anda di Modelsim, tidak yakin dengan keadaan dukungan VHPI mereka (yang merupakan bagian dari IEEE Std 1076-2008, VHDL LRM).
Menggunakan soket atau file FIFO memungkinkan proses perangkat lunak dan perangkat keras berjalan pada tingkat yang berbeda, dengan menyediakan buffering tingkat. Tidak selalu diperlukan jika sistem perangkat lunak Anda lebih cepat daripada simulasi perangkat kerasnya (dan umumnya demikian).
Ada upaya untuk menyediakan fungsionalitas UNIX (POSIX) untuk VHDL, Lihat paket Public Domain VHDL , yang berisi pointer ke makalah sebelumnya SNUG San Jose 2002 1 Fungsi C / UNIX untuk VHDL Testbenches C / UNIX Fungsi untuk VHDL Testbenches bersama dengan slide atur dengan catatan tambahan pada pipa Unix & rsh . Ini menunjukkan bagaimana agar pipa bernama tetap terbuka. Semua kode VHDL dapat diunduh juga. Saya berpendapat ini akan mengarah pada cara termudah untuk mencapai tujuan Anda.
Jadi, apakah ada sesuatu yang asli pada Modelsim yang memungkinkan Anda terhubung ke pipa? Kemungkinan tidak, lebih-lebih di bawah Windows. Bisakah itu dilakukan? Ya, tapi jalannya bukan untuk para pengecut. Anda bisa menemui jalan buntu di salah satu ujung atau yang lain atau mungkin keduanya menunggu ketersediaan data.
Antarmuka pemrograman Asing secara teoritis memungkinkan Anda untuk menelurkan proses anak untuk satu atau ujung lain dari 'pipa' yang juga berarti Anda dapat menggunakan model memori bersama untuk berkomunikasi antara kedua ujung.