Contrôle externe d'une simulation ModelSim via des canaux nommés Unix
Résumé: Dans cette thèse, nous présentons une méthode de contrôle d'une simulation ModelSim via un programme externe. La communication entre ModelSim et le programme externe est réalisée en utilisant des canaux nommés ("FIFO"), qui apparaissent comme des fichiers normaux pour chaque application. La principale différence entre l'utilisation de FIFO et des fichiers normaux pour la communication inter-processus (IPC) est qu'une application qui tente d'écrire sur une FIFO est suspendue jusqu'à ce qu'une autre application tente de lire à partir de la FIFO et vice versa. Cela améliore la fiabilité de l'IPC. Les principaux avantages de cette méthode sont 1) Étant donné que seules des opérations de fichiers génériques sont utilisées, l'application externe peut être écrite dans presque tous les langages de programmation; 2) Il donne à l'ingénieur de vérification la capacité de réutiliser des progiciels de validation des normes avec un minimum de réécriture; 3) En faisant communiquer entre eux plusieurs appareils sous test (DUT), une simulation plus précise du système final peut être créée; et 4) Les performances de la simulation globale peuvent être facilement augmentées sur un cluster d'images système unique (SSI) ou un ordinateur multiprocesseur même si le moteur de simulation de ModelSim n'est pas multithread. En raison de son implémentation d'entrée / sortie de fichier (E / S) pour le VHDL comportemental, ModelSim ne peut pas lire ou écrire ces FIFO directement. Une solution de contournement pour cette limitation est illustrée à l'aide de l'interface en langue étrangère (FLI) de ModelSim. Cet article montre également un exemple de travail de cette méthode utilisée dans la vérification de la prochaine génération de routines à virgule flottante en VHDL. Plus précisément, le progiciel open-source IEEE Compliance Checker, qui est écrit en C ++,
Et le problème avec les FIFO nécessitant une interface de programmation étrangère est que les E / S de fichiers VHDL ne peuvent pas gérer correctement le blocage tant que les données ne sont pas disponibles.
Malheureusement, la thèse n'est pas disponible sur le web.
Interface de langue étrangère Model Sim ® version 5.6d , PDF 3,4 Mo.
Utilisation de l'interface en langue étrangère ModelSim pour la co-simulation c-VHDL et le contrôle du simulateur sur la plate-forme Linux x86 Andre Pool - fli@andrepool.com - Version 1.5 - créé en novembre 2012, dernière mise à jour en septembre 2013 , PDF, 320 Ko (et ne mentionne jamais les FIFO) .
Utilisation de l'interface en langue étrangère ModelSim pour la co-simulation c-VHDL et pour le contrôle du simulateur sur la plate-forme Linux x86 (référentiel de code github correspondant).
Il y a un peu plus open source, en utilisant les appels de fonction étrangers VHPI dans ghdl: vhdl
/ src / sim / ghdlex_mein sur master · texane / vhdl · GitHub .
Et ce qui ressemble à une mise à jour de Martin Strubel sur la liste GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz indiquant une date pour fifo.c du 14 avril 2014.
FLI, par définition, vous enfermerait dans Modelsim, pas sûr de l'état de leur support VHPI (qui fait partie de IEEE Std 1076-2008, le VHDL LRM).
L'utilisation d'un socket ou d'un fichier FIFO permet au processus logiciel et matériel de s'exécuter à des taux différents, en fournissant une mise en mémoire tampon des taux. Ce n'est pas toujours nécessaire si votre système logiciel est beaucoup plus rapide que la simulation matérielle (et c'est généralement le cas).
Il y a un effort pour fournir la fonctionnalité UNIX (POSIX) à VHDL, voir les packages VHDL du domaine public , qui contient un pointeur vers un document précédent SNUG San Jose 2002 1 Fonctions C / UNIX pour bancs d'essai VHDL Fonctions C / UNIX pour bancs d'essai VHDL avec une diapositive ensemble avec des notes supplémentaires sur les tuyaux Unix & rsh . Cela montre comment garder les canaux nommés ouverts. Tout le code VHDL peut également être téléchargé. Je suis d'avis que cela conduirait à la manière la plus simple d'atteindre votre objectif.
Existe-t-il quelque chose de natif de Modelsim qui vous permet de vous connecter à un tuyau? Probablement pas, d'autant plus sous Windows. Peut-on le faire? Oui, mais le chemin n'est pas pour les timides. Vous pouvez bloquer une extrémité ou l'autre ou éventuellement les deux en attendant la disponibilité des données.
Une interface de programmation étrangère vous permet théoriquement de générer un processus enfant pour l'une ou l'autre extrémité du «tuyau», ce qui signifie également que vous pouvez utiliser un modèle de mémoire partagée pour communiquer entre les deux extrémités.