lunedì 24 agosto 2015

FPGA: Scripting con TCL

Software EDA (Electronic Design Automation) come Quartus, Vivado, ISE e Synplify Pro utilizzato da diversi produttori di FPGA tra cui la nuova startup cinese Gowin, condividono tutti il linguaggio di scripting TCL (Tool Command Language) per l'automazione di task comuni.

Vediamo innanzitutto come creare ed eseguire un semplice script TCL con Quartus.

Creiamo un nuovo progetto e scegliamo File / New / Tcl Script File e scriviamo all'interno del nuovo file la seguente riga:

puts "Hello World"

Salviamo il file col nome hello_world.tcl ed andiamo sul menù Tools / TCL Scripts...
Si presenterà la seguente schermata, premiamo Run dopo aver selezionato il nostro script.


Un messaggio ci confermerà della corretta esecuzione dello script ma non apparirà alcun messaggio "Hello World" a video. 

Per visualizzare l'output degli script è necessario aprire la relativa finestra andando su View / Utility Windows / Tcl Console


La prima riga conterrà il comando di esecuzione del file di script, chiamato in automatico dalla pressione del pulsante Run precedentemente. E' naturalmente possibile richiamare gli script dalla console TCL scrivendo direttamente il comando source nomefile.tcl.

Sotto al comando è possibile osservare il semplice output che ha generato il nostro script.

Vediamo adesso uno script di maggiore utilità progettuale.

Spesso si ha la necessità di creare molteplici configurazioni di testbench partendo da file già esistenti, l'operazione come abbiamo visto in precedenza richiede diversi passaggi, tra cui la compilazione delle impostazioni del testbench tramite l'interfaccia grafica che è sotto riportata per referenza:


Al crescere del numero dei file l'operazione diventa meccanica e molto fastidiosa, col seguente script TCL possiamo configurare automaticamente in un attimo tutti i nostri testbench, di cui alcuni eventualmente saranno ritoccati manualmente, risparmiando ad ogni modo una notevole quantità di tempo.


Tramite il comando set assegniamo dei valori a delle variabili che potranno essere richiamati tramite la sintassi $nome_variabile.

Nel nostro caso avremo le variabili dir, ext, design_instance_name e run_sim_for a cui assoceremo dei valori fissi.

- dir specifica la cartella contenente i file di testbench

- ext specifica l'estensione dei file di testbench, se non abbiamo problemi di compatibilità con altri software come ad esempio Xilinx ISE, possiamo anche utilizzare l'estensione .vht per differenziare i file di testbench rispetto agli altri.

- design_instance_name specifica il nome dell'istanza sotto test, naturalmente tutte le istanze nei testbench dovranno chiamarsi allo stesso modo.

- run_sim_for specifica il tempo di esecuzione, al pari del campo "End simulation at" nella finestra di dialogo di Quartus sopra mostrata.

E' altresì importante che nei testbench il nome della "entity vuota" corrisponda al nome del file per un corretto funzionamento di questo script. Per necessità diverse è possibile partire da questo script per modificarlo comunque a piacere.

Nelle righe seguenti avviene una ricerca dei file con l'estensione scelta nella cartella specificata dopodiché per ogni file viene estratto il nome senza estensione ed utilizzato per il richiamo dei comandi set_global_assignment specifici di quartus per l'impostazione dei testbench.

Altri EDA dispongono di comandi specifici per l'automazione di diversi task, è necessario quindi consultare la documentazione di ogni software specifico per tali comandi.

NB: Il file .qsf associato al progetto Quartus è a tutti gli effetti uno script TCL creato automaticamente tramite l'interfaccia del programma durante il normale utilizzo, aprendo il file con un editor di testo è possibile visualizzare i comandi per incorporarli nei propri script, se non si vuole ricorrere alla documentazione di Scripting.


Buona automazione con gli script TCL

venerdì 7 agosto 2015

FPGA: Xilinx ISE ed Internet Explorer 11

Oggi vediamo una piccola fix per risolvere un problema che può nascere nel tool di sviluppo Xilinx ISE e nei suoi accessori.

Seppur il software ISE sia ormai superato da Vivado è ancora necessario per poter sviluppare per famiglie di dispositivi come Spartan-6, Virtex-6, Coolrunner e le generazioni precedenti.

Un problema che può verificarsi (verificato su Windows 7) dopo l’aggiornamento di Internet Explorer all’ultima versione è la mancanza di funzionamento di ChipScope Inserter ed ChipScope Pro Analyzer con messaggi di errore come “Can't load ..\..\java6\nt\jre\bin\client\jvm.dll.”

Per risolvere la problematica aggiungiamo nella variabile d’ambiente PATH i seguenti valori se non presenti:

C:\Xilinx\14.7\ISE_DS\ISE\\lib\nt;C:\Xilinx\14.7\ISE_DS\ISE\\bin\nt;C:\Xilinx\14.7\ISE_DS\ISE\bin\nt;C:\Xilinx\14.7\ISE_DS\ISE\lib\nt;C:\Xilinx\14.7\ISE_DS\ISE\..\..\..\DocNav;C:\Xilinx\14.7\ISE_DS\PlanAhead\bin;C:\Xilinx\14.7\ISE_DS\EDK\bin\nt;C:\Xilinx\14.7\ISE_DS\EDK\lib\nt;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\powerpc-eabi\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnuwin\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\arm\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\linux_toolchain\nt_be\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\linux_toolchain\nt_le\bin;C:\Xilinx\14.7\ISE_DS\common\bin\nt;C:\Xilinx\14.7\ISE_DS\common\lib\nt;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

E’ anche possibile creare una variabile dell’utente al posto della variabile di sistema per risolvere in modo ancora più rapido ed evitare di controllare tutti i percorsi esistenti.

Dove è possibile naturalmente adattare alla propria versione di ISE i PATH e rimuovere il percorso per la versione Java di Oracle se non installata.