Temporizzazione dei circuiti sincroni e domini di clock
Vincolo di setup e frequenza massima con esempio, vincolo di hold, sfasamento e jitter del clock, pipelining, analisi statica dei tempi, attraversamento dei domini di clock e FIFO asincrone.
In un circuito sincrono tutti i flip-flop cambiano stato insieme, sul fronte di un unico clock, e tra un fronte e l’altro le reti combinatorie hanno il tempo di calcolare i nuovi valori. Questa disciplina rende i progetti enormi gestibili, ma impone vincoli precisi di tempo. In questa lezione ricaviamo la frequenza massima di un circuito, il vincolo di hold, l’effetto dello sfasamento del clock, il pipelining e il passaggio dei dati tra domini di clock diversi.
Il percorso tra due flip-flop

Sul fronte
il primo flip-flop cambia uscita dopo
; il nuovo valore attraversa la logica in un tempo massimo
; deve arrivare al secondo flip-flop almeno
prima del fronte
.
Teorema (vincolo di setup). Il circuito funziona se
![]()
La dimostrazione è il ragionamento appena fatto: il dato lanciato su un fronte deve essere stabile all’ingresso del flip-flop successivo prima del fronte seguente.
Esempio.
ns,
ns,
ns:
ns,
MHz. Il percorso con la somma più grande è il percorso critico, e fissa la frequenza di tutto il circuito: non importa quanto siano veloci tutti gli altri.
Il vincolo di hold
C’è anche il rischio opposto: che il nuovo dato arrivi troppo presto e sovrascriva quello che il flip-flop successivo sta ancora catturando sullo stesso fronte. Il dato al secondo flip-flop deve restare stabile per
dopo il fronte:
![]()
Il vincolo di hold non dipende dalla frequenza: se è violato, il circuito non funziona nemmeno con un clock lentissimo. Accade tipicamente con due flip-flop collegati direttamente, senza logica in mezzo, e con il clock che arriva in ritardo al secondo. Gli strumenti di progetto lo correggono inserendo buffer di ritardo sui percorsi troppo corti.
Lo sfasamento del clock
Il clock non arriva nello stesso istante a tutti i flip-flop: la rete di distribuzione ha ritardi diversi verso punti diversi del chip. La differenza è lo sfasamento (skew)
. Se il clock arriva più tardi al flip-flop che riceve, il vincolo di setup migliora e quello di hold peggiora; se arriva prima, il contrario:
![]()
C’è poi il jitter, la variazione casuale del periodo da un ciclo all’altro, che si sottrae sempre al margine. Nei processori la rete di clock è progettata ad albero bilanciato o a griglia, e consuma una parte notevole della potenza del chip.
Il pipelining
Se il percorso critico è troppo lento per la frequenza voluta, lo si spezza inserendo registri in mezzo: è il pipelining, lo stesso visto per i processori in Sistemi di elaborazione. Una logica da 4 ns divisa in due stadi da 2 ns lavora a frequenza doppia: ogni dato impiega due cicli (la latenza cresce) ma ne entra uno nuovo a ogni ciclo (il throughput raddoppia). È la tecnica principale per ottenere alte frequenze nelle FPGA e nei circuiti di elaborazione dei segnali.
Il contrario è possibile quando un’operazione è troppo lunga ma rara: si dichiara un percorso multiciclo, a cui si concedono due o più periodi, e gli strumenti di verifica ne tengono conto.
La verifica dei tempi
In un chip ci sono milioni di percorsi. Non si verificano simulando, ma con l’analisi statica dei tempi: un programma calcola per ogni percorso i ritardi massimo e minimo, includendo le variazioni di processo, tensione e temperatura (i “corner”), e segnala gli eventuali margini negativi (slack). Il progettista dichiara i vincoli: la frequenza di ogni clock, i ritardi degli ingressi e delle uscite, le eccezioni.
I domini di clock
Sistemi diversi hanno clock diversi: un’interfaccia USB, la memoria, il processore. Un segnale che passa da un dominio all’altro è, per il dominio che lo riceve, asincrono, e va trattato come visto nella lezione sui flip-flop:
- un singolo bit si fa passare per un sincronizzatore a due flip-flop;
- una parola di più bit non si può sincronizzare bit per bit, perché i bit potrebbero essere catturati in cicli diversi e formare un valore mai esistito. Si usano allora una FIFO asincrona, con i puntatori codificati in codice Gray (un solo bit cambia a ogni incremento, quindi un valore catturato a metà transizione è comunque quello vecchio o quello nuovo), oppure un protocollo a handshake che mantiene il dato fermo finché l’altro lato non conferma di averlo letto.
Gli errori di attraversamento dei domini di clock sono tra i più insidiosi dell’elettronica digitale: non si vedono in simulazione, compaiono raramente e solo su alcuni esemplari, e per questo esistono strumenti di verifica dedicati.





