lunedì 7 settembre 2015

Wave Sheet

Qualche volta può essere utile riflettere con carta e penna e nel ragionare sulle forme d'onda può essere comodo disporre di un foglio predisposto appositamente per abbozzare qualche idea.

Voglio condividere con voi un template che ho creato, da stampare in orizzontale:


L'utilizzo è abbastanza intuitivo, nella riga iniziale è possibile scrivere il titolo del foglio mentre sulle righe a sinistra il nome dei vari segnali il cui contenuto sarà scritto all'interno delle forme d'onda.

Spero vi faccia risparmiare tempo e magari contribuisca ad un maggiore ordine anche con questi antichi strumenti

NB: Sebbene sia possibile ottenere un risultato analogo con una tabella l'aspetto è più intuitivo per degli elettronici


FPGA: Engineering Change Orders

Sintesi dell'articolo: Modifichiamo senza una ricompilazione completa alcune parti del progetto come la frequenza di uscita del PLL tramite gli strumenti ECO di Quartus.

Durante il ciclo di sviluppo purtroppo le specifiche possono cambiare all'ultimo minuto, queste modifiche sono chiamate in gergo ECO (Engineering Change Orders) e possono  in alcuni casi essere introdotte per compensare problemi di design del sistema.

Vediamo un ipotetico caso semplificato di ECO e di come Quartus possa venirci ancora un volta incontro.

Supponiamo di avere un design su logiche programmabili ad elevata complessità, quindi con tempi di compilazione elevati, e di avere una specifica iniziale di frequenza di 300 MHz ma di aver scelto un dispositivo troppo lento per implementare a tale velocità il design. Purtroppo ci accorgiamo verso il completamento dei lavori che tale frequenza non è raggiungibile.




Il sistema, al solo scopo di facilitare la comprensione, è rappresentato semplicemente nel diagramma da un doppio moltiplicatore con pipeline.

Il design utilizza come usuale un PLL per generare la frequenza di sistema e dopo aver tanto atteso visualizziamo il fatidico Timing requirements not met da Quartus. La frequenza massima per il nostro sistema che TimeQuest riporta supera di poco i 250 MHz.


Non avendo ulteriore tempo a disposizione decidiamo di accettare 250 MHz come frequenza del nostro sistema.

La procedura "standard" richiederebbe di modificare i parametri del PLL e ricompilare il progetto, così facendo innanzitutto non è detto che la frequenza massima dopo la modifica sia sempre superiore ai 250 MHz.

E' però possibile evitare la compilazione completa, che in sistemi complessi può richiedere diverse ore, cambiando solamente le proprietà relative al PLL, vediamo come.

Nel report di compilazione del Fitter andiamo innanzitutto ad individuare la sezione PLL Usage nella categoria Resource Section, facendo click col pulsante destro sul pll scegliamo Locate Node / Locate in Resource Property Editor.


Verranno visualizzate le proprietà del PLL come mostrato nell'immagine seguente


I campi senza sfondo grigio sono modificabili, cambiamo quindi il moltiplicatore del clock da 6 a 5 nel nostro caso per ottenere un clock di uscita di 250 MHz al posto dei 300 MHz.



Il valore M del moltiplicatore verrà aggiornato di conseguenza e tutti i campi modificati verranno evidenziati in rosso.

Ricordiamo infatti l'equazione della frequenza di uscita del PLL in modalità normale:

Altre equazioni come quelle per la variazione della fase ad esempio sono reperibili nella documentazione di Altera.

Scegliamo adesso Edit / Check and Save All Netlist Changes per applicare le modifiche fatte


Dopo una breve compilazione parziale, composta dalla fase di Fitter parziale ed Assembler del file di programmazione il progetto a 250 MHz sarà pronto per essere caricato sulla FPGA  per la validazione.

Prima però eseguiamo TimeQuest per controllare se abbiamo effettivamente risolto tutti i problemi, le violazioni dei tempi di Setup sono sparite ed andando nella scheda Clocks è possibile vedere che la frequenza in uscita dal PLL è effettivamente stata modificata a 250 MHz.


Non ci rimane che provare il design a 250 MHz.

NB: TimeQuest Timing Analyzer è evidenziato di rosso perché sono presenti alcuni percorsi non vincolati nel design che però non hanno criticità per il semplice design utilizzato da esempio per illustrare le funzionalità ECO.

Quartus ci offre inoltre tramite la finestra Change Manager richiamabile dal menù View / Utility Windows che ci da un resoconto delle modifiche ECO così attuate


Lo strumento permette di esportare in file .TCL le modifiche o di riportare il tutto alla situazione originaria.

Questo flusso di sviluppo rapido è molto utile anche durante l'ottimizzazione di progetti in continua modifica per evitare di eseguire una doppia compilazione se la frequenza desiderata non è raggiungibile.

Oltre al PLL è possibile modificare altre celle elementari così come lo standard, lo slew rate ed il current strenght dei pin di I/O.

NB: A causa della differente struttura dei PLL nei dispositivi Cyclone V le funzionalità ECO non sono supportate, è possibile però utilizzare l'IP Altera PLL Reconfig come descritto nell'application notes 661 di Altera per variare i parametri del PLL a tempo di esecuzione.