Cos'è l'orologio inclinato e perché può essere negativo?


10

Il mio compilatore HDL (Quartus II) genera rapporti di temporizzazione. In esso, i nodi hanno la colonna "clock skew". L'unica definizione di inclinazione dell'orologio che ho trovato è nella documentazione di TimeQuest (vedi pagina 7-24):

Per specificare manualmente l'incertezza dell'orologio o l'inclinazione, per i trasferimenti da orologio a orologio, utilizzare il set_clock_uncertaintycomando

Quindi, se l'inclinazione è "incertezza", perché alcune delle mie inclinazioni dell'orologio sono negative (es. -0.048)? Che cosa è esattamente l'orologio inclinato?

Risposte:


8

Da Wikipedia :

TSKewRioRjTCioTCj

TSKewio,j=TCio-TCj

L'inclinazione dell'orologio può essere positiva o negativa. Se i segnali dell'orologio sono in completa sincronicità, l'inclinazione dell'orologio osservata in questi registri è zero.

Quindi la quantità di inclinazione dell'orologio in un registro è relativa ad un altro registro. Dal momento che è relativo, può essere positivo o negativo.

Alcune illustrazioni:

inclinazione positiva / negativa inclinazione in anticipo / in ritardo

Prendi ad esempio un trasferimento intraclock come definito nel documento TimeQuest che hai fornito:

I trasferimenti intraclock si verificano quando il trasferimento da registro a registro ha luogo nel nucleo del dispositivo e i clock di origine e destinazione provengono dallo stesso pin di uscita PLL o porta di clock.

Quindi, se il registro di destinazione è fisicamente più vicino ai circuiti di generazione dell'orologio, allora l'orologio probabilmente arriverà al registro di destinazione prima di arrivare al registro di origine, risultando in una inclinazione di clock principale che è effettivamente positiva. Se il registro di destinazione ricevesse il bordo dell'orologio dopo il registro di origine, l'inclinazione dell'orologio sarebbe in ritardo o negativa.

Detto in altro modo, l'inclinazione dell'orologio è l'incertezza su quanto strettamente insieme nel tempo un fronte di orologio raggiungerà due registri separati dati in unità di tempo rispetto a un registro sorgente in un trasferimento da registro a registro.

Espansione che difintion includere interrelazioni trasferimenti -Orologio e tempi di preparazione e di attesa diventa un po 'disordinato. Quindi è probabilmente più facile pensarlo come "quanto sia sincrono" un fronte o un tempo di attesa tra due registri. Tendiamo a pensare a "sincrono" come a "accadere allo stesso tempo". Ma le cose raramente si verificano esattamente nello stesso momento. Quindi dobbiamo tollerare quel momento. E le tolleranze sono spesso dichiarate in termini di positivo e negativo (cioè ±).


10

I moderni dispositivi logici digitali sono generalmente (*) progettati con "pratica di progettazione sincrona": uno stile di progettazione di trasferimento dei registri (RTL) sincronizzato a livello globale: tutti i circuiti sequenziali sono suddivisi in registri a trigger di bordo collegati al segnale di orologio globale CLK e pura logica combinatoria.

Questo stile di progettazione consente alle persone di progettare rapidamente sistemi logici digitali senza tenere conto dei tempi. Il loro sistema "funzionerà" fintanto che c'è abbastanza tempo da un fronte all'altro per consentire allo stato interno di stabilizzarsi.

Con questo stile di progettazione, l'inclinazione dell'orologio e altri problemi relativi ai tempi sono irrilevanti, tranne per capire "Qual è la frequenza di clock massima per questo sistema?".

Che cosa è esattamente l'orologio inclinato?

Per esempio:

...
     R1 - register 1              R3
     +-+                  
   ->| |------>( combinational  )  +-+
...->| |------>(         logic  )->| |--...
   ->|^|------>(                )->|^|
     +-+       (                )  +-+
      |   +--->(                )   |
     CLK  | +->(                )  CLK
          | |
     R2:  | |
     +-+  | |               
...->| |->+ |
   ->|^|->--+
     +-+
      |
     CLK

Nell'hardware reale, il segnale "CLK" non cambia mai esattamente simultaneamente in ogni registro. Il disallineamento dell'orologio Tskew è il ritardo dell'orologio a valle rispetto all'orologio a monte ( a ):

Tskew (sorgente, destinazione) = destination_time - source_time

dove source_time è il tempo di un fronte di clock attivo nel registro sorgente a monte (in questo caso, R1 o R2), e destination_time è il tempo dello "stesso" fronte di orologio attivo in un registro di destinazione a valle (in questo caso, R3) .

  • inclinazione negativa dell'orologio: il CLK su R3 commuta prima dell'orologio su R1.
  • inclinazione dell'orologio positivo: il CLK su R3 commuta dopo l'orologio su R1.

Qual è l'effetto dell'inclinazione dell'orologio?

(forse un diagramma temporale qui renderebbe questo più chiaro)

Affinché le cose funzionino correttamente, anche nel peggiore dei casi, gli ingressi di R3 non devono cambiare durante il tempo di configurazione o il tempo di attesa di R3. In altri casi, affinché le cose funzionino correttamente, dobbiamo progettare cose tali che:

Tskew (R1, R3) <Tco - Th.

Tclk_min = Tco + Tcalc + Tsu - Tskew (R1, R3).

dove:

  • Tcalc è il tempo massimo di assestamento nel caso peggiore di qualsiasi blocco di logica combinatoria in qualsiasi parte del sistema. (A volte possiamo riprogettare il blocco della logica combinatoria che si trova sul percorso critico, spingendo le parti a monte o a valle o inserendo un altro stadio di pipeline, quindi il nuovo design ha un Tcalc più piccolo, che ci consente di aumentare la frequenza di clock) .
  • Tclk_min è il periodo di tempo minimo da un fronte di orologio attivo al successivo fronte di orologio attivo. Lo calcoliamo dall'equazione sopra.
  • Tsu è il tempo di impostazione del registro. Il produttore del registro si aspetta che usiamo un orologio abbastanza lento da soddisfare sempre questo requisito.
  • Questo è il tempo di attesa del registro. Il produttore del registro si aspetta che controlliamo l'orologio inclinato abbastanza da soddisfare sempre questo requisito.
  • Tco è il ritardo da clock a output (tempo di propagazione). Dopo ogni fronte di clock attivo, R1 e R2 continuano a guidare i vecchi valori nella logica combinatoria per un breve tempo Tco prima di passare ai nuovi valori. Questo è impostato dall'hardware e garantito dal produttore, ma solo finché rispettiamo Tsu e Th e altri requisiti specificati dal produttore per il normale funzionamento.

Un'eccessiva inclinazione positiva è un disastro immeritato. Un disallineamento troppo positivo può causare (con alcune combinazioni di dati) "percorsi furtivi" tali che, invece di R3 bloccare i "dati corretti" nell'orologio N + 1 (una funzione deterministica dei dati precedentemente bloccati in R1 e R2 nell'orologio N) , i nuovi dati bloccati in R1 e R2 nell'orologio N + 1 possono filtrare, sconvolgere la logica combinatoria e causare il blocco di dati errati in R3 sullo "stesso" bordo dell'orologio N + 1.

Qualsiasi quantità di inclinazione negativa può essere "riparata" rallentando la frequenza di clock. È solo "cattivo", nel senso che ci costringe a far funzionare il sistema a una frequenza di clock più lenta, al fine di dare agli ingressi del tempo R3 di stabilizzarsi dopo che R1 e R2 bloccano nuovi dati sul bordo dell'orologio N, e successivamente R3 blocca il risultato sul bordo dell'orologio "successivo" N + 1.

Molti sistemi utilizzano una rete di distribuzione di clock che tenta di ridurre a zero l'inclinazione. Contro-intuitivamente, aggiungendo attentamente ritardi lungo il percorso del clock - il percorso dal generatore di clock all'ingresso CLK di ciascun registro - è possibile aumentare la velocità apparente che il fronte d'onda del bordo dell'orologio percorre fisicamente dall'ingresso CLK di un registro al l'ingresso CLK del prossimo registro è più veloce della velocità della luce.

La documentazione di Altera menziona

"Evita di usare la logica combinatoria nei percorsi di clock perché contribuisce al disallineamento del clock."

Questo si riferisce al fatto che molte persone scrivono HDL che viene compilato su un FPGA in un modo che in qualche modo provoca qualcosa di diverso dal segnale CLK globale per guidare l'ingresso CLK locale di alcuni registri. (Potrebbe trattarsi della logica "clock gating" in modo tale che i nuovi valori vengano caricati in un registro solo quando sono soddisfatte determinate condizioni, oppure la logica "clock divisore" che permetta solo 1 su N clock, o ecc.). Quel CLK locale di solito è derivato dal CLK globale in qualche modo: il CLK globale spunta e quindi il CLK locale non cambia, oppure (un breve ritardo dopo il CLK globale affinché il segnale si propaghi attraverso quel "qualcosa di diverso") il CLK locale cambia una volta.

Quando quel "qualcos'altro" guida il CLK del registro a valle (R3), rende l'inclinazione più positiva. Quando quel "qualcos'altro" guida il CLK del registro a monte (R1 o R2), rende l'inclinazione più negativa. Occasionalmente, qualunque cosa spinga il CLK del registro a monte e qualunque cosa spinga il CLK del registro a valle ha praticamente lo stesso ritardo, rendendo lo zero tra loro praticamente zero.

La rete di distribuzione dell'orologio all'interno di alcuni ASIC è progettata deliberatamente con piccole quantità di inclinazione dell'orologio positivo su alcuni registri, il che dà alla logica combinatoria a monte un po 'più di tempo per stabilizzarsi e quindi l'intero sistema può funzionare con una frequenza di clock più veloce. Questo si chiama "ottimizzazione dell'inclinazione dell'orologio" o "pianificazione dell'inclinazione dell'orologio" ed è correlato alla " retiming ".

Sono ancora sconcertato dal set_clock_uncertaintycomando: perché dovrei mai voler "specificare manualmente" l'inclinazione?

(*) Un'eccezione: sistemi asincroni .


Credo che l'idea alla base dell'aggiunta del ritardo per ridurre al minimo l'inclinazione dell'orologio possa talvolta comportare un ritardo dell'orologio di quasi un ciclo completo. Una volta che l'orologio è attivo e funzionante, puoi impostarlo in modo che il flip flop A veda l'orologio edge 1 nello stesso momento esatto in cui l'orologio flip flop B vede l'orologio edge 2. Da una vista esterna, sono bordi diversi, ma il circuito non ti interessa finché i bordi sono perfettamente allineati.
ajs410,

1

l'inclinazione dell'orologio è quando l'orologio arriva in punti diversi del circuito in momenti diversi a causa della distanza, della capacità ecc. che può causare un malfunzionamento. Penso che il negativo debba essere quando l'orologio arriva a quel punto prima che arrivi al riferimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.