Tool Command Language per il controllo di simulazioni HDL

Come molte altre attività di un comune flusso di sviluppo HW o SW, anche la simulazione di un circuito HDL può essere condotta sia tramite approcci più manuali, che richiedono il costante controllo da parte dell’operatore, sia tramite approcci più automatici, basati su strumenti che minimizzano la necessità di intervento umano e comportano molti altri vantaggi. Controllare una simulazione HDL tramite script vuol dire, infatti, poterla lanciare in qualunque momento senza costi che non siano il tempo macchina, poter documentare in un formato univoco ed eseguibile la sequenza di operazioni che descrive il test e poterne quindi tracciare eventuali modifiche (tramite l’adozione di opportuni strumenti di controllo di revisione). In questo articolo presenteremo in maniera pratica e dimostrativa una soluzione semplice e gratuita per il controllo di simulazioni HDL nel popolare ambiente Moldelsim, sfruttando il linguaggio Tcl, molto diffuso anche per diversi altri scopi nell’ambito degli ambienti EDA.

INTRODUZIONE

In termini generali, l’utilizzo di appositi script per l’esecuzione di sequenze di operazioni lunghe e non banali, eventualmente condizionate da un certo set di parametri, è una pratica che consente di risparmiare tempo e minimizzare gli errori in un comune flusso di sviluppo HW o SW che sia. Esistono ad oggi numerosi linguaggi di scripting, da quelli più consolidati e tipici delle shell Linux (bash, csh, ecc.) ad altri di più recente concezione, di fatto veri e propri linguaggi di programmazione ad alto livello che, rispetto ai primi, mantengono unicamente la caratteristica dell’esecuzione interpretata (uno per tutti, il potente Python).
Anche l’ambito dei tool EDA (Electronic Design Automation), ovvero tutte quelle applicazioni che supportano la progettazione di sistemi elettronici, prevede i suoi specifici linguaggi di scripting, il più diffuso dei quali è sicuramente il Tcl (Tool Command Language). Considerando a titolo di esempio il caso applicativo della progettazione di un FPGA, l’utilizzo di tale linguaggio può risultare estremamente vantaggioso in diverse fasi, quali la definizione del flusso di implementazione, l’esecuzione della Static Timing Analysis e la simulazione della rete descritta.
Nei paragrafi successivi, verranno innanzitutto riassunte le caratteristiche generali del linguaggio Tcl, quindi verranno presentati alcuni dei più utili comandi Tcl messi a disposizione da Modelsim ASE (Altera Starter Edition) di Mentor Graphics per il controllo programmatico delle simulazioni HDL; successivamente, verrà mostrato un esempio pratico di utilizzo di tali comandi, nel contesto della simulazione di un semplice listato VHDL per una generica elaborazione di un flusso continuo di dati numerici. La valutazione degli output generati dallo script di simulazione consentirà quindi di apprezzare concretamente i vantaggi offerti dall’approccio tramite script rispetto al problema della simulazione HDL.

CARATTERISTICHE GENERALI DEL TCL

Il Tcl è un linguaggio di scripting molto semplice e potente, basato su una sintassi flessibile e di immediata comprensione. Nasce nel 1988 ad opera di Ousterhout, il quale comincia a lavorarci individualmente con l’intento di realizzare un linguaggio che costituisse una sorta di collante tra i diversi componenti software messi a disposizione dai tool EDA sviluppati all’interno del suo laboratorio, nell’Università di Berkeley: ciascuno di questi tool offriva tramite linea di comando una serie di funzionalità che, durante il loro normale utilizzo, dovevano essere richiamate in sequenza con una certa logica. Proprio in ragione di questo scopo, il Tcl si configura sin dalla sua nascita come un linguaggio facilmente integrabile ed estendibile.
Uno script Tcl consiste di una sequenza di comandi, ciascuno dai quali è una linea costituita da una sequenza di parole separate da spazi. La prima parola è il nome del comando, le seguenti rappresentano i suoi argomenti. Ciascuna parola può essere una semplice sequenza di caratteri senza spazi, oppure una sequenza di caratteri che includa eventualmente anche spazi ma che sia racchiusa tra virgolette o tra parentesi graffe.
Prima di essere eseguito, ciascun comando subisce tre tipi di sostituzione:

  1. Sostituzione di comando: se nel comando è presente una coppia di parentesi quadre, il testo contenuto al loro interno viene interpretato come comando; il risultato restituito da tale comando viene quindi sostituito alle parentesi quadre e al loro intero contenuto;
  2. Sostituzione di variabile: se nel comando è presente una parola il cui primo carattere è il simbolo del dollaro, tale parola viene sostituita con il contenuto della variabile che possiede quel nome;
  3. Sostituzione di backslash: se nel comando è presente una parola costituita da un backslash e da un altro carattere, tale parola viene sostituita con un altro carattere (per esempio, la sequenza “\n” viene sostituita dal carattere di new-line).

Tali sostituzioni possono essere eseguite più di una volta prima dell’esecuzione del comando, partendo da quelle più interne e procedendo verso l’esterno, fino ad arrivare all’esecuzione del comando principale; esse vengono tuttavia inibite dall’uso delle parentesi graffe: il contenuto di due parentesi graffe all’interno di un comando non viene quindi mai sottoposto ad alcun tipo di sostituzione.
La maggior parte dei comandi Tcl prevede un numero variabile di argomenti; naturalmente, è prevista la possibilità di definire nuovi comandi o di sovrascrivere comandi preesistenti tramite il comando “proc”. Anche i comandi di base del linguaggio (quali per esempio quelli [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 4101 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Avatar photo Maurizio 24 Agosto 2016
  2. Avatar photo Lorenzo Columbo 24 Agosto 2016

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend