Semplice automazione in SIS
E’ possibile automatizzare in vari modi l’esecuzione delle simulazioni (e di altri comandi) in SIS.
In questa pagina vengono elencati i metodi piu’ semplici:
Script e il comando source
Questo e’ il primo (e il piu’ semplice) metodo di automazione per poter eseguire piu’ comandi in SIS.
Per farlo basta:
creare un file di testo (io come “standard personale” ho scelto di mettere l’estensione
.script)scrivere i comandi che si vorrebbero normalmente eseguire su SIS.
Esempio di un file chiamato “
scriptfantastico.script”:echo Leggo il file blif read_blif miocircuito.blif echo Simulo: 0 0 0 0 1 0 1 0 1 0 1 simulate 0 0 0 0 1 0 1 0 1 0 1 echo Simulo: 0 0 0 0 1 0 1 0 1 0 1 simulate 0 0 0 0 1 0 1 0 1 0 1 echo Simulo: 0 1 0 0 1 0 1 1 1 0 1 simulate 0 1 0 0 1 0 1 1 1 0 1 echo Simulo: 0 0 1 0 1 1 1 0 1 0 1 simulate 0 0 1 0 1 1 1 0 1 0 1 echo Statistiche prima di rugged: print_stats echo Adesso eseguo lo script rugged source script.rugged echo Statistiche dopo rugged: print_stats
Note
Ho inserito comandi “a caso” ma plausibili
Eseguire normalmente SIS con il comando
sise poi usare il comandosource.Procedendo con l’esempio di prima e supponendo che nella cartella in cui ho eseguito SIS si trova lo script
scriptfantastico.scripte il file blifmiocircuito.blif, eseguo il comando:source scriptfantastico.script
Dopo aver eseguito questo comando tutte le istruzioni inserite nello script verranno eseguite e gli output verranno visualizzati come se avessimo eseguito manualmente quei comandi.
A questo punto e’ possibile analizzare “a mano” l’output e vedere se tutto ha funzionato come doveva.
Uscire da SIS con il comando
quitquando si e’ finito di usarlo.
Script e parametro -f
SIS dispone di un parametro, -f <file_script>, che gli permette
di eseguire i comandi contenuti all’interno di un file.
Note
Non c’e’ bisogno neanche di eseguire sis e fare il source dello script
Ecco cosa bisogna fare:
creare un file di testo (io come “standard personale” ho scelto di mettere l’estensione
.script)scrivere i comandi che si vorrebbero normalmente eseguire su SIS.
Esempio di un file chiamato “
scriptfantastico.script”:echo Leggo il file blif read_blif miocircuito.blif echo Simulo: 0 0 0 0 1 0 1 0 1 0 1 simulate 0 0 0 0 1 0 1 0 1 0 1 echo Simulo: 0 0 0 0 1 0 1 0 1 0 1 simulate 0 0 0 0 1 0 1 0 1 0 1 echo Simulo: 0 1 0 0 1 0 1 1 1 0 1 simulate 0 1 0 0 1 0 1 1 1 0 1 echo Simulo: 0 0 1 0 1 1 1 0 1 0 1 simulate 0 0 1 0 1 1 1 0 1 0 1 echo Statistiche prima di rugged: print_stats echo Adesso eseguo lo script rugged source script.rugged echo Statistiche dopo rugged: print_stats
Note
Ho inserito comandi “a caso” ma plausibili
Eseguire da terminale il comando:
sis -t pla -f scriptfantastico.script -x
Uscire da SIS con il comando
quitquando si e’ finito di usarlo.
All’apparenza non cambia nulla dall’altro sistema… Ma il semplice fatto che questo metodo non richiede di inserire neanche un comando sulla shell di SIS permette di automatizzare veramente molte piu’ operazioni! E questo permette anche di velocizzare il workflow e di ridurre le nostre possibilita’ di errore.
Supponiamo che non vogliamo neanche uscire manualmente da SIS…
Basta aggiungere a fine script quit e il gioco e’ fatto:
echo Leggo il file blif
read_blif miocircuito.blif
echo Simulo: 0 0 0 0 1 0 1 0 1 0 1
simulate 0 0 0 0 1 0 1 0 1 0 1
echo Simulo: 0 0 0 0 1 0 1 0 1 0 1
simulate 0 0 0 0 1 0 1 0 1 0 1
echo Simulo: 0 1 0 0 1 0 1 1 1 0 1
simulate 0 1 0 0 1 0 1 1 1 0 1
echo Simulo: 0 0 1 0 1 1 1 0 1 0 1
simulate 0 0 1 0 1 1 1 0 1 0 1
echo Statistiche prima di rugged:
print_stats
echo Adesso eseguo lo script rugged
source script.rugged
echo Statistiche dopo rugged:
print_stats
echo Esco da SIS
quit
Supponiamo ora che non vogliamo neppure vedere il risultato su terminale perche’ vogliamo avere gli output permanenti su un file per visualizzarlo dopo o per una possibile analisi automatica…
Basta aggiungere come prima riga dello script:
set sisout <file_output>
Ad esempio:
set sisout output_comandi.txt
echo Leggo il file blif
read_blif miocircuito.blif
echo Simulo: 0 0 0 0 1 0 1 0 1 0 1
simulate 0 0 0 0 1 0 1 0 1 0 1
echo Simulo: 0 0 0 0 1 0 1 0 1 0 1
simulate 0 0 0 0 1 0 1 0 1 0 1
echo Simulo: 0 1 0 0 1 0 1 1 1 0 1
simulate 0 1 0 0 1 0 1 1 1 0 1
echo Simulo: 0 0 1 0 1 1 1 0 1 0 1
simulate 0 0 1 0 1 1 1 0 1 0 1
echo Statistiche prima di rugged:
print_stats
echo Adesso eseguo lo script rugged
source script.rugged
echo Statistiche dopo rugged:
print_stats
echo Esco da SIS
quit
Note
set sisout e’ un comando di SIS. <file_output> e’ il nome del file di output.
Nell’esempio il file con gli output si chiama “output_comandi.txt”.
Adesso abbiamo gli input a portata di un comando e l’output
scritto su file: possiamo anche creare uno script bash, ad esempio testa_blif.sh, per
eseguire il comando SIS “sis -t pla -f scriptfantastico.script -x” e a questo punto basta eseguire lo script da terminale (cosi’ non occorre neanche ricordare le flag di SIS) in questo modo:
./testa_blif.sh
Note
Da notare il ./ a inizio comando
Ora con un solo comando facilmente ricordabile e un editor che riconosce in tempo reale la modifica del file di output potete fare modifiche “al volo” al file BLIF, eseguire SIS e memorizzare gli output di tutti i comandi su file!
Automazione avanzata
Il passo successivo e “finale” dell’automazione e’ il controllo automatico dell’output.
Sappiamo gia’ il risultato che ci attendiamo da una simulazione: basta confrontare il risultato ottenuto dalla simulazione e l’output che desideriamo e capiamo subito se il nostro file BLIF funziona o no.
Note
Esempio: se si esegue simulate 0 1 su un file BLIF che definisce
una porta AND e il risultato e’ Outputs: 1 c’e’ qualcosa di sbagliato…
Nella prossima pagina della wiki trattero’ questo passaggio.