Come condividere registrare e campo di bit definizioni tra un driver di periferica e l'FPGA controlla

StackOverflow https://stackoverflow.com/questions/1585751

Domanda

Ci sono, strumenti software esistenti buoni disponibili per aiutare a generare file header C con #defines appropriati per gli offset di registro e definizioni dei bit da VHDL? Se tali strumenti esistono, quali restrizioni che immettono sul VHDL e quanto sono cose che devono essere esportati designati?

Finora, ho trovato questi strumenti ma non sono esattamente quello che sto cercando:

Sulla base di questi strumenti Sono interessato anche se il flusso di lavoro corretto è quello di generare sia la C e la VHDL piuttosto che cercare di andare direttamente da VHDL (magari con i tag in più nei commenti) a C.

È stato utile?

Soluzione

Credo che finale però che era intercettazioni si vi proietta nella giusta direzione. E io sono d'accordo con RedGlyph nel senso che si dovrebbe pensare di cambiare il vostro lavoro flusso un po '.

Avete pensato di avere un 'documento master' per vostra informazione registro di controllo e generato tutto automaticamente da questo -? RTL, il codice banco di prova, le intestazioni di driver software e la documentazione

Ho lavorato su progetti in cui le informazioni di controllo è stato tenuto in un foglio di calcolo master e tutto il necessario generato da questo. In una famiglia di chip, avevo scritto un paio di script Python per generare questa roba da file CSV esportati dal foglio di calcolo. Su un altro progetto, il foglio di calcolo contiene le macro per generare i file RTL ecc che ci serviva.

La scrittura in-house script è tutto bello e buono, come hai il controllo totale su di loro e sapere come funzionano nel dettaglio. Ma ricordate che si deve spendere tempo sostenere questi script e aggiornare loro di fare cose nuove. E considerare che cosa accadrebbe se chi ha scritto questi script hanno deciso di andare a prendere un nuovo lavoro - sarebbe chiunque altro avere familiarità sufficiente con gli script di modificarli? Stiamo prendendo in considerazione l'acquisto di uno strumento 3rd party per i motivi di cui sopra.

Ho anche lavorato su progetti erano i file di documentazione e colpo di testa viene back-porting dalla -è RTL è stato un incubo. Documentazione di solito rimasta indietro rispetto alla progettazione, e spesso controllano i campi sarebbe 'andare dispersi'. Io preferirei non essere coinvolto in un progetto di nuovo;)

Altri suggerimenti

Si potrebbe avere uno sguardo a doxygen , supporta il linguaggio VHDL e utilizzando i file intermedi si può essere in grado di estrarre le informazioni più o meno facilmente. Un sottoprodotto sarebbe la vostra RTL documentazione del codice.

Un'altra opzione è quella di costruire un parser C dalle definizioni Yacc / Lex, si possono trovare diversi quelli qui . Da lì, è possibile analizzare il VHDL, estrarre le informazioni (si dovrà stabilire come recuperare la definizione dei vostri registri) e produrre un file di intestazione C. E 'probabilmente abbastanza complicato.

Ma se fossi in te, vorrei davvero procedere in modo diverso e definisco gli offset di registro e campi in un file separato (ad esempio, in XML), e scrivere un piccolo script per generare sia le intestazioni C e un pacchetto VHDL, questo sarebbe risparmiare un sacco di tempo e sarebbe più robusto dal punto di vista del flusso.

Questo sarebbe anche aiutare nella costruzione di qualsiasi documentazione.

Si potrebbe naturalmente automatizzare il processo con un makefile / o in uno script che prepara il database prima di simulazione / sintesi.

Sono d'accordo con Marty, la creazione di script in-house per fare questo genere di cose è divertente, ma può essere problematico nel lungo periodo.

Abbiamo creato uno strumento chiamato IDesignSpec che viene implementato come un plugin per editor di documenti che consentono di specificare i registri in un documento e generare intestazione C, VHDL, Verilog, OVM, VMM, IP-XACT, HTML, XML, SystemRDL , PDF, ecc da esso.

È possibile generare output personalizzati utilizzando l'API TCL. E 'in grado di leggere in vari formati di input, così come XML, IP-XACT, SystemRDL, ecc.

Il vantaggio di questo approccio è che il vostro avete una specifica e tutto tiene automaticamente in sincronia.

redattori attualmente supportati sono: MS Word 2003 e 2007, OpenOffice, StarOffice e FrameMaker

.

È possibile ottenere ulteriori informazioni su http://www.agnisys.com

Questa è la lista completa di soluzioni disponibili:

Nome azienda: strumenti commerciali (soluzione fornita)

  1. Agnisys: IDesignSpec (Plugin per Word / Excel / OpenOffice, e l'interfaccia a riga di comando su Linux e Windows)
  2. Atrenta: 1Team-Genesis-Registri (applicazione desktop) -> Acquisita da Synopsys. Strumento non disponibile.
  3. Duolog: BitWise (Eclipse applicazione basata) -> Acquisita da ARM, strumento è ancora disponibile
  4. .
  5. PDTi: SpectaReg (Web based) -> strumento non più disponibili
  6. .
  7. Semifore: CSRCompiler (interfaccia a riga di comando)
Strumenti

Free / OpenSource

  1. Veripool: VRegs
  2. ParadigmWorks: Spec2Reg

Il nostro gruppo di progettazione utilizza SystemRDL per catturare le definizioni di registro per il nostro System-on-Chip programmabili. Usiamo Denali Blueprint con script personalizzati per i vari obiettivi -. Generare la mappa registro, documentazione PDF, file header di verifica, C, ecc

Non stiamo usando per generare la fonte RTL ancora.

http://www.spiritconsortium.org/releases/SystemRDL
http://www.google.com/search?q=SystemRDL

La risposta potrebbe venire un po 'tardi, ma abbiamo utilizzare la libreria netpp libero e alcuni fogli di stile XSL modificati per generare la documentazione, VHDL e sorgente C da una sorgente XML. C'è anche un'estensione simulatore VHDL che permette di dati VHDL e C cambio librerie per creare una rete in grado 'FPGA virtuale'. Si chiama ghdlex, non mi ricordo dove esattamente è, ma lo troverete da qualche parte sul http://section5.ch sito web sotto l'area download netpp. E 'un po' difficile da usare, ma bene, è gratuito ..

La vera fonte delle informazioni condivise è il tuo disegno originale, quindi vorrei entrare nel disegno originale in una forma che è facile da lavorare. Qui ci sono un paio di idee ...


  1. Usa YAML. (o, sigh, XML, o anche un semplice DSL del vostro disegno.) Definire i dati originali. Scrivere script per eseguire il dump come VHDL e C. Tutti i linguaggi di scripting supporto YAML ed è progettato per essere analizzato con gli strumenti della shell pure. Si potrebbe anche usare VHDL semplificata o C, e scrivere uno script per trasformare che tramite una semplice trasformazione di testo nella corrispondente C o VHDL.

  2. Fare tutto nel preprocessore C . Si potrebbe scrivere un insieme di macro chiama che specificano registrare i layout. Si potrebbe quindi avere un #if o forse due file .h separati che definiscono due diverse versioni delle vostre macro definizione, uno che si espande in VHDL e uno che si espande quelle stesse definizioni in C.

Spectareg consente di specificare i registri in un unico luogo e creare più uscite per ambienti diversi (ad es. VHDL, C, Verilog)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top