Controllo esterno di una simulazione ModelSim tramite tubi denominati Unix
Riassunto: in questa tesi, presentiamo un metodo per controllare una simulazione ModelSim tramite un programma esterno. La comunicazione tra ModelSim e il programma esterno viene effettuata utilizzando Named Pipes ("FIFOs"), che vengono visualizzati come file normali per ciascuna applicazione. La differenza principale tra l'utilizzo di FIFO rispetto ai file normali per la comunicazione tra processi (IPC) è che un'applicazione che tenta di scrivere su un FIFO viene messa in pausa fino a quando un'altra applicazione tenta di leggere da FIFO e viceversa. Ciò migliora l'affidabilità dell'IPC. I principali vantaggi di questo metodo sono 1) Poiché vengono utilizzate solo operazioni di file generici, l'applicazione esterna può essere scritta in quasi tutti i linguaggi di programmazione; 2) Offre al tecnico addetto alla verifica la possibilità di riutilizzare i pacchetti software di convalida degli standard con una riscrittura minima; 3) Avendo più dispositivi sotto test (DUT) in comunicazione tra loro, è possibile creare una simulazione più accurata del sistema finale; e 4) Le prestazioni della simulazione complessiva possono essere facilmente aumentate su un cluster Single-System Image (SSI) o su un computer multiprocessore anche se il motore di simulazione di ModelSim non è multi-thread. A causa della sua implementazione del file input / output (I / O) per VHDL comportamentale, ModelSim non può leggere o scrivere direttamente questi FIFO. Una soluzione alternativa per questa limitazione è dimostrata utilizzando l'interfaccia di lingua straniera (FLI) di ModelSim. Questo documento mostra anche un esempio funzionante di questo metodo utilizzato nella verifica della prossima generazione di routine in virgola mobile in VHDL. In particolare, il pacchetto software open source IEEE Compliance Checker, che è scritto in C ++,
E il problema con FIFO che richiedono un'interfaccia di programmazione esterna è che l'I / O dei file VHDL non può gestire con garbo il blocco finché i dati non sono disponibili.
Purtroppo la tesi non è disponibile sul web.
Model Sim ® Foreign Language Interface Versione 5.6d , PDF 3.4 MB.
Utilizzo dell'interfaccia in lingua straniera ModelSim per c - VHDL Co-Simulation e per il controllo del simulatore su piattaforma Linux x86 Andre Pool - fli@andrepool.com - Versione 1.5 - creata a novembre 2012, ultimo aggiornamento settembre 2013 , PDF, 320 KB (e non menziona mai FIFO) .
Utilizzo dell'interfaccia in lingua straniera ModelSim per c - VHDL Co-Simulation e per il controllo del simulatore su piattaforma Linux x86 (il repository di codice github corrispondente).
C'è un po 'più di open source, usando le chiamate di funzione VHPI Foreign in ghdl:
vhdl / src / sim / ghdlex_mein su master · texane / vhdl · GitHub .
E quello che sembra un aggiornamento di Martin Strubel nell'elenco GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz che mostra una data per il 15 aprile 2014.
FLI ti bloccherebbe per definizione su Modelsim, non sicuro dello stato del loro supporto VHPI (che fa parte di IEEE Std 1076-2008, VHDL LRM).
Utilizzando un socket o un file FIFO consente l'esecuzione del processo software e hardware a velocità diverse, fornendo il buffering delle tariffe. Non è sempre necessario se il tuo sistema software ha ordini di grandezza più veloci della simulazione hardware (e generalmente lo è).
C'è uno sforzo per fornire funzionalità UNIX (POSIX) a VHDL, vedere pacchetti VHDL di dominio pubblico , che contiene un puntatore a un documento precedente SNUG San Jose 2002 1 Funzioni C / UNIX per banchi di prova VHDL Funzioni C / UNIX per banchi di prova VHDL insieme a una diapositiva set con note aggiuntive su pipe Unix e rsh . Questo mostra come mantenere aperte le pipe denominate. È possibile scaricare anche tutto il codice VHDL. Sono dell'opinione che ciò porterebbe al modo più semplice per raggiungere il tuo obiettivo.
Quindi c'è qualcosa di nativo in Modelsim che ti consente di collegarti a una pipe? Probabilmente no, tanto più in Windows. Si può fare? Sì, ma la strada non è per i deboli di cuore. È possibile bloccare in blocco un'estremità o l'altra o eventualmente entrambi in attesa della disponibilità dei dati.
Un'interfaccia di programmazione esterna consente teoricamente di generare un processo figlio per l'una o l'altra estremità della 'pipe', il che significa anche che è possibile utilizzare un modello di memoria condivisa per comunicare tra le due estremità.