ITTO20110485A1 - METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS - Google Patents

METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS Download PDF

Info

Publication number
ITTO20110485A1
ITTO20110485A1 IT000485A ITTO20110485A ITTO20110485A1 IT TO20110485 A1 ITTO20110485 A1 IT TO20110485A1 IT 000485 A IT000485 A IT 000485A IT TO20110485 A ITTO20110485 A IT TO20110485A IT TO20110485 A1 ITTO20110485 A1 IT TO20110485A1
Authority
IT
Italy
Prior art keywords
œclockâ
circuit
metastability
conditions
error
Prior art date
Application number
IT000485A
Other languages
Italian (it)
Inventor
Marco Cannizzaro
Luciano Lavagno
Original Assignee
Torino Politecnico
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Torino Politecnico filed Critical Torino Politecnico
Priority to IT000485A priority Critical patent/ITTO20110485A1/en
Priority to PCT/IB2012/052783 priority patent/WO2012164541A1/en
Publication of ITTO20110485A1 publication Critical patent/ITTO20110485A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits
    • H03K3/0375Bistable circuits provided with means for increasing reliability; for protection; for ensuring a predetermined initial state when the supply voltage has been applied; for storing the actual state when the supply voltage fails

Landscapes

  • Position Fixing By Use Of Radio Waves (AREA)
  • Information Transfer Systems (AREA)

Description

“Metodo e circuito per la risoluzione delle condizioni di meta stabilità e per il recupero degli errori di segnale in circuiti integrati†⠀ œMethod and circuit for the resolution of meta stability conditions and for the recovery of signal errors in integrated circuitsâ €

DESCRIZIONE DESCRIPTION

Campo dell’invenzione Field of invention

La presente invenzione si riferisce ad un metodo e circuito per risolvere le condizioni di metastabilità e recuperare gli errori di segnale in un circuito digitale integrato. The present invention relates to a method and circuit for solving metastability conditions and recovering signal errors in an integrated digital circuit.

Descrizione dell’arte nota Description of the known art

La variabilità delle condizioni operative e di processo crea un problema elevato per i circuiti digitali integrati attuali e futuri, cioà ̈ li costringe ad operare ad una velocità, tensione e quindi ad un consumo di energia e potenza che à ̈ molto lontano dall’ottimale. La ragione à ̈ che à ̈ necessario assicurare, in fase di progettazione, che ogni circuito individuale funzioni, assumendo sempre le condizioni di caso peggiore, non importa quale sarebbe stata la sua velocità, dovuta al suo processo di fabbricazione le condizioni di operazione correnti. Con le moderne tecnologie di fabbricazione questo significa normalmente operare ad una frequenza che à ̈ meno della metà di quella che sarebbe se in un circuito fosse permesso di funzionare alla sua velocità ottimale, e, per quanto riguarda la potenza/energia, ciò significa operare a 4-10 volte il livello di potenza ottimale. The variability of the operating and process conditions creates a high problem for current and future digital integrated circuits, that is, it forces them to operate at a speed, voltage and therefore at an energy and power consumption that is very far from optimal. . The reason is that it is necessary to ensure, at the design stage, that each individual circuit works, always assuming the worst case conditions, no matter what its speed would have been, due to its manufacturing process the current operating conditions. With modern manufacturing technologies this normally means operating at a frequency that is less than half of what it would be if a circuit were allowed to run at its optimum speed, and as far as power / energy is concerned, that means operating at 4-10 times the optimum power level.

Questo enorme divario à ̈ correntemente indirizzato, specialmente in termini di consumo di energia ottimizzato, usando: This huge gap is currently addressed, especially in terms of optimized power consumption, using:

-“Binning†, una soluzione per recuperare alcune delle prestazioni perse, cioà ̈ a causa della variabilità di processo, separando gli “IC†in vari elementi aggiuntivi e vendendoli a prezzi differenti. Ciò può essere applicato solo a processori, memorie “FPGA†e “chip†grafici, a causa della loro dimensione di mercato. - â € œBinningâ €, a solution to recover some of the lost performance, that is due to process variability, by separating the â € œICsâ € into various additional elements and selling them at different prices. This can only be applied to processors, FPGAs and graphics chips due to their market size.

-Tecniche “scaling†di voltaggio adattativo, che stimano le prestazioni attuali del circuito, dovuto sia alla fabbricazione che alle condizioni operative attuali; e adattano il voltaggio fornito per rispettare i requisiti di operazione ad un livello ridotto di consumo di potenza ed energia. Ciò à ̈ solitamente applicato a dispositivi elettronici portatili, come i cellulari. Tuttavia, richiede ancora un ampio margine dovuto al fatto che la prestazione à ̈ solo stimata, utilizzando una catena di “gate†che in qualche modo replica il ritardo dei percorsi critici del circuito. Si stima che ciò lascia circa il 10-20% della prestazione non utilizzata (questa percentuale cresce con ogni generazione di tecnologia) e due volte la potenza ed energia. - Adaptive voltage scaling techniques, which estimate the current performance of the circuit, due to both manufacturing and current operating conditions; and adapt the supplied voltage to meet operating requirements at a reduced level of power and energy consumption. This is usually applied to portable electronic devices, such as cell phones. However, it still requires a large margin due to the fact that the performance is only estimated, using a chain of â € œgateâ € which somehow replicates the delay of the critical paths of the circuit. It is estimated that this leaves about 10-20% of the performance unused (this percentage grows with each generation of technology) and twice the power and energy.

Una tecnica à ̈ conosciuta, come descritto in US-7, 337, 356, US-7,320, 091, US-7, 162, 661, che invece di effettuare“binning†o stimare la prestazione del circuito, propone uno sforzo attivo per eseguire il circuito ad una alimentazione di tensione più bassa o prestazioni più alte (dipendendo dall’obbiettivo dell’†IC†, prestazione per CPU e GPU e potenza per elettronici portatili), e recuperare dagli errori che possono susseguire come conseguenza. La ragione per la quale si verificano gli errori à ̈ che se un circuito à ̈ operato vicino al suo limite di frequenza/limite di tensione di alimentazione, alcune “flip flop†al suo interno potrebbero memorizzare il valore incorretto dal percorso dati quando ricevono un margine di “clock†. Così questa tecnica conosciuta prevede di effettuare il “latching†dello stesso valore metà (o una frazione) di un ciclo di “clock†dopo, e confrontare i due valori. Se sono identici, conclude che non ci sono errori, e lascia procedere il circuito. Se si rileva una non corrispondenza, ferma il circuito (che ha già iniziato a calcolare basandosi sul valore scorretto) e ricomincia dal valore corretto che à ̈ stato memorizzato dopo. In questo modo, non viene propagato alcun valore scorretto, ed il circuito può virtualmente operare senza margini. A technique is known, as described in US-7, 337, 356, US-7,320, 091, US-7, 162, 661, which instead of performing â € œbinningâ € or estimating the performance of the circuit, proposes an active effort to run the circuit at a lower voltage supply or higher performance (depending on the “IC” goal, CPU and GPU performance and portable electronics power), and recover from the errors that may ensue as a result. The reason why errors occur is that if a circuit is operated near its frequency limit / supply voltage limit, some `` flip flops '' in it may store the incorrect value from the data path when they receive a margin of â € œclockâ €. Thus this known technique involves latching the same value half (or a fraction) of a cycle of "clock" later, and comparing the two values. If they are identical, conclude that there are no errors, and let the circuit proceed. If a mismatch is found, it stops the circuit (which has already started calculating based on the incorrect value) and starts over from the correct value that was stored later. In this way, no incorrect values are propagated, and the circuit can operate virtually without margins.

Il problema principale con l’uso di questa tecnica conosciuta deriva dal fatto che il “flip flop†potrebbe solo memorizzare il valore sbagliato se viene temporizzato troppo presto. Potrebbe anche diventare meta-stabile. Risultati meta-stabili vengono prodotti in un output non digitale e rimangono per un periodo di tempo non determinato. Inoltre, à ̈ inevitabile, e causa al circuito un danneggiamento grave, perché un output non-digitale può essere interpretato come due differenti valori da “gate†differenti, e quindi può far diventare il funzionamento e lo stato del circuito totalmente scorretti, in maniera irrecuperabile. Questo problema à ̈ trattato da questa tecnica conosciuta rilevando la meta-stabilità, e ri-avviando il circuito da uno stato sicuro memorizzato prima che avvenga il primo errore di meta-stabilità. Questo à ̈ possibile solo con dei processori, perché essi contengono già questa logica (ad esempio per trattare errori aritmetici o errori di pagina). Altri circuiti potrebbero richiedere l’aggiunta di logica di “check-pointing†molto costosa, e quindi questo approccio conosciuto non à ̈ consono per essi. Inoltre, anche con architetture come i processori, che includono già la logica di “check-pointing†o ai quali la logica “check-pointing†può essere aggiunta, questo meccanismo conosciuto potrebbe non riconoscere insuccessi metastabili che durano per un breve periodo, ma possono ancora risultare nella propagazione di dati scorretti oltre ai cosiddetti “razor-flop†. The main problem with using this known technique comes from the fact that the â € œflip flopâ € might just store the wrong value if it is timed too early. It may even become meta-stable. Meta-stable results are produced in non-digital output and remain for an undetermined period of time. Furthermore, it is inevitable, and causes serious damage to the circuit, because a non-digital output can be interpreted as two different values from different â € œgateâ €, and therefore can make the operation and state of the circuit totally incorrect, in an irrecoverable way. This problem is addressed by this known technique by detecting meta-stability, and restarting the circuit from a stored safe state before the first meta-stability error occurs. This is only possible with processors, because they already contain this logic (for example to deal with arithmetic errors or page errors). Other circuits may require the addition of very expensive â € œcheck-pointingâ € logic, and therefore this known approach is not suitable for them. Furthermore, even with architectures such as processors, which already include `` check-pointing '' logic or to which `` check-pointing '' logic can be added, this known mechanism may not recognize metastable failures that last for a short time. , but they can still result in the propagation of incorrect data in addition to the so-called â € œrazor-flopsâ €.

Generalmente il problema principale con la meta-stabilità non à ̈ la sua rilevazione, che può essere fatta in un breve periodo di tempo (per esempio con un circuito conosciuto che controlla se due segnali sono ad un voltaggio molto vicino), ma piuttosto la campionatura del segnale di errore di metastabilità in un circuito sincrono, dal momento che il segnale potrebbe avere una transizione di “falling†(significa che la meta-stabilità à ̈ stata risolta) un arbitrario periodo di tempo dopo la transizione di “rising†. Ciò può condurre sia ad impulsi molto brevi che ad impulsi molto lunghi sul segnale di rilevamento di metastabilità. La durata à ̈ una variabile non-deterministica, la cui distribuzione dipende dalla velocità del circuito. Si assume comunemente che la probabilità di campionare scorrettamente un segnale di transizione (e quindi propagare meta-stabilità alla logica di rilevazione degli errori stessa ) à ̈ trascurabile se si campiona il segnale di meta-stabilità 2-3 cicli di “clock†dopo che à ̈ stato memorizzato. Quindi il meccanismo “check-pointing†di cui sopra richiede la memorizzazione dello stato del circuito per 2-3 cicli di “clock†, che potrebbe causare una vasta area di consumo e costi di potenza. Generally the main problem with meta-stability is not its detection, which can be done in a short period of time (e.g. with a known circuit that checks if two signals are at a very close voltage), but rather sampling. of the metastability error signal in a synchronous circuit, since the signal could have a â € œfallingâ € transition (meaning that the meta-stability has been resolved) an arbitrary period of time after the â € œrisingâ € transition . This can lead to both very short and very long pulses on the metastability detection signal. Duration is a non-deterministic variable, the distribution of which depends on the speed of the circuit. It is commonly assumed that the probability of incorrectly sampling a transition signal (and thus propagating meta-stability to the error detection logic itself) is negligible if the meta-stability signal is sampled 2-3 `` clock '' cycles later. which has been stored. So the above â € œcheck-pointingâ € mechanism requires storing the circuit state for 2-3 â € œclockâ € cycles, which could cause a large area of consumption and power costs.

SINTESI DELL’INVENZIONE SUMMARY OF THE INVENTION

Principale oggetto della presente invenzione à ̈ fornire un metodo ed un circuito per risolvere le condizioni di metastabilità e recuperare gli errori di segnale in circuiti digitali integrati, che supera tutti gli svantaggi sopra descritti. The main object of the present invention is to provide a method and a circuit for solving the metastability conditions and recovering signal errors in integrated digital circuits, which overcomes all the disadvantages described above.

L’idea base della presente invenzione à ̈ rilevare deterministicamente le condizioni di meta-stabilità, usare queste informazioni per fermare temporaneamente la generazione di “clock†per il circuito (ciò può essere fatto senza rischi), e quindi riavviarlo quando la meta-stabilità à ̈ stata risolta. Preferibilmente un’idea aggiuntiva à ̈ di estendere le caratteristiche dell’invenzione alla rilevazione delle condizioni di errore, usando questa informazione per ripetere le operazioni influenzate dall’errore fino a che l’errore non à ̈ stato risolto. The basic idea of the present invention is to deterministically detect the meta-stability conditions, use this information to temporarily stop the generation of â € œclockâ € for the circuit (this can be done without risk), and then restart it when the meta -stability has been resolved. Preferably an additional idea is to extend the features of the invention to the detection of error conditions, using this information to repeat the operations affected by the error until the error has been resolved.

L’approccio della presente invenzione, per una rilevazione e correzione degli errori di circuito “timing†, à ̈ basata sull’esecuzione speculativa della logica combinazionale al fine di aumentare il “throughput†o di abbassare la tensione di alimentazione del sistema. La “speedup†viene raggiunta aumentando la frequenza di “clock†. In aggiunta il “clock†può essere fermato ogni qual volta o uno (o più) dei registri entra nella condizione metastabile, o un errore deve essere corretto, o entrambi. The approach of the present invention, for a detection and correction of the errors of the â € œtimingâ € circuit, is based on the speculative execution of combinational logic in order to increase the â € œthroughputâ € or to lower the supply voltage of the system. The â € œspeedupâ € is reached by increasing the frequency of â € œclockâ €. In addition, the â € œclockâ € can be stopped whenever either one (or more) of the registers enters the metastable condition, or an error needs to be corrected, or both.

Questo approccio può essere applicato in un percorso non limitato per entrambi i circuiti asincroni (per esempio con protocollo a 2 fasi o a 4 fasi), e per la generazione di “clock†locali sincroni in un’architettura “Globally-Asynchronuos Locally-Synchronous (GALS)†. This approach can be applied in an unrestricted path for both asynchronous circuits (for example with 2-phase or 4-phase protocol), and for the generation of synchronous local `` clocks '' in a `` Globally-Asynchronuos Locally '' architecture. --Synchronous (GALS) ⠀.

Alcune realizzazioni della presente invenzione prevedono l’utilizzo di circuiti asincroni, invece di quelli standard sincroni, perché permettono di fermare il “clock†mentre la meta-stabilità si risolve, senza nemmeno necessitare di campionare il segnale di rilevazione di metastabilità con un “unstoppable clock†sincrono. Questo permette di limitare la meta-stabilità ad un singolo “flip-flop†, e quindi à ̈ possibile implementare l’invenzione con un semplice circuito senza costosi registri “check-pointing†o modifiche della logica di circuito, solo cambiando localmente il “flip-flop†con dei “safe flip-flop†ed utilizzando dei generatori “stoppable clock†generati più localmente. Il percorso dati del circuito (logica combinatoria) e la sua architettura totale non à ̈ cambiata. Some embodiments of the present invention provide for the use of asynchronous circuits, instead of the standard synchronous ones, because they allow to stop the â € œclockâ € while the meta-stability is resolved, without even needing to sample the metastability detection signal with a synchronous â € œunstoppable clockâ €. This allows to limit the meta-stability to a single â € œflip-flopâ €, and therefore it is possible to implement the invention with a simple circuit without expensive â € œcheck-pointingâ € registers or modifications of the circuit logic, just by changing locally the â € œflip-flopâ € with â € œsafe flip-flopsâ € and using more locally generated â € œstoppable clockâ € generators. The data path of the circuit (combinatorial logic) and its total architecture has not changed.

Oggetto della presente invenzione à ̈ un metodo per risolvere le condizioni di meta-stabilità in un circuito digitale integrato, che comprende i seguenti passaggi: The object of the present invention is a method for solving the meta-stability conditions in an integrated digital circuit, which includes the following steps:

- rilevare le condizioni di meta-stabilità nel circuito digitale integrato; - detect the meta-stability conditions in the integrated digital circuit;

- utilizzare le informazioni su dette condizioni di metastabilità per fermare temporaneamente la generazione di “clock†per il circuito digitale integrato; - use the information on said metastability conditions to temporarily stop the generation of â € œclockâ € for the integrated digital circuit;

- riavviare la generazione di “clock†per il circuito digitale integrato quando le condizioni di meta-stabilità sono state risolte. - restart the generation of â € œclockâ € for the integrated digital circuit when the meta-stability conditions have been resolved.

Preferibilmente il metodo fornisce un ulteriore passaggio di recupero del segnale di errore, che comprende: rilevare le condizioni di errore nel circuito digitale integrato; ripetere il calcolo effettuato dal circuito digitale integrato fino a che le condizioni di errore non sono risolte. Preferably the method provides a further step of recovering the error signal, which comprises: detecting error conditions in the integrated digital circuit; repeat the calculation performed by the integrated digital circuit until the error conditions are resolved.

Preferibilmente il metodo, nel caso in cui detto circuito digitale integrato comprenda un numero di blocchi asincroni interconnessi, comprende inoltre i passaggi di: scambiare le informazioni delle condizioni di errore tra detti blocchi asincroni interconnessi; fermare temporaneamente e riavviare la generazione di “clock†di un blocco asincrono di detti numeri di blocchi asincroni interconnessi, basato anche sulle informazioni delle condizioni di errore ricevute da uno o più blocchi “upstream†di detto numero di blocchi asincroni interconnessi. Preferably the method, in the case in which said integrated digital circuit comprises a number of interconnected asynchronous blocks, further comprises the steps of: exchanging the information of the error conditions between said interconnected asynchronous blocks; temporarily stop and restart the generation of â € œclockâ € of an asynchronous block of said numbers of interconnected asynchronous blocks, also based on the information of the error conditions received by one or more â € œupstreamâ € blocks of said number of interconnected asynchronous blocks.

Preferibilmente anche il passaggio di scambio di informazioni delle condizioni di errore tra detti blocchi asincroni interconnessi à ̈ basato su una procedura “handshake†. Preferably also the exchange of information of the error conditions between said interconnected asynchronous blocks is based on a â € œhandshakeâ € procedure.

Ancora preferibilmente il metodo comprende lo scambio, tra stadi interconnessi a monte e a valle, di segnali di riconoscimento e di richiesta per comunicare che lo stadio a valle à ̈ pronto per ricevere un nuovo dato, e che lo stadio a monte fornisce un nuovo dato, detto dato à ̈ di un tipo speculativo se colpito possibilmente da un errore, o di tipo non speculativo, se non colpito da errori. Still preferably, the method comprises the exchange, between upstream and downstream interconnected stages, of acknowledgment and request signals to communicate that the downstream stage is ready to receive new data, and that the upstream stage provides new data, said datum is of a speculative type if possibly hit by an error, or of a non-speculative type, if not hit by errors.

Un circuito per l’implementazione del metodo à ̈ un ulteriore oggetto dell’invenzione. A circuit for implementing the method is a further object of the invention.

Questi ed ulteriori oggetti vengono raggiunti attraverso un metodo e circuito come descritto nelle rivendicazioni allegate che sono considerate come parte integrale della presente descrizione. These and further objects are achieved through a method and circuit as described in the appended claims which are considered as an integral part of the present description.

BREVE DESCRIZIONE DEI DISEGNI BRIEF DESCRIPTION OF THE DRAWINGS

L’invenzione verrà totalmente chiarificata dalla seguente descrizione dettagliata, data da una mera esemplificazione ed esempi non limitativi, da essere letti con riferimento alle figure in allegato, in cui: The invention will be fully clarified by the following detailed description, given by mere exemplification and non-limiting examples, to be read with reference to the figures in the annex, in which:

- Fig.1 mostra uno schema a blocchi circuitale di una prima forma di realizzazione dell’invenzione applicato ad una “pipeline†asincrona bifase; - Fig.1 shows a circuit block diagram of a first embodiment of the invention applied to an asynchronous two-phase â € œpipelineâ €;

- Fig. 2 mostra un diagramma di flusso delle operazioni del circuito di Fig.1; - Fig. 2 shows a flow diagram of the operations of the circuit of Fig.1;

- Fig. 3 mostra uno schema a blocchi semplificato di un’altra forma di realizzazione dell’invenzione avendo una struttura “multi-stage pipeline†asincrona bilanciata basata sulla struttura della prima forma di realizzazione della Fig.1. - Fig. 3 shows a simplified block diagram of another embodiment of the invention having a balanced asynchronous â € œmulti-stage pipelineâ € structure based on the structure of the first embodiment of Fig.1.

- Fig.4 mostra uno schema a blocchi di un’altra forma di realizzazione dell’invenzione avendo una struttura di “pipeline input/output†multiple asincrone basata su quella di Fig.1. - Fig.4 shows a block diagram of another embodiment of the invention having an asynchronous multiple input / output pipeline structure based on that of Fig.1.

- Fig. 5 mostra uno schema a blocchi circuitale di un’ulteriore forma di realizzazione dell’invenzione applicata ad una “pipelina†asincrona quadrifase. - Fig. 5 shows a circuit block diagram of a further embodiment of the invention applied to a four-phase asynchronous â € œpipelinâ €.

- Fig.6 mostra un diagramma a blocchi circuitale di un’ulteriore forma di realizzazione dell’invenzione applicata alla generazione di “clock“ locali sincroni in un’architettura GALS. - Fig.6 shows a circuit block diagram of a further embodiment of the invention applied to the generation of local synchronous â € œclockâ € œ in a GALS architecture.

Gli stessi riferimenti numerali e letterali nelle figure designano le parti medesime o funzionalmente equivalenti. The same numeral and literal references in the figures designate the same or functionally equivalent parts.

DESCRIZIONE DELLE FORME DI REALIZZAZIONE PREFERITE DESCRIPTION OF THE PREFERRED EMBODIMENTS

Un numero di forme di realizzazione dell’invenzione verranno descritte usando circuiti asincroni. Una prima forma di realizzazione descritta si basa su una “pipeline†asincrona bifase. Poi viene descritta una seconda forma di realizzazione, mostrando come l’architettura precedentemente descritta possa essere facilmente estesa al fine di maneggiare la procedura “fork and join†per un numero di blocchi asincroni interconnessi nel circuito così che ogni blocco del circuito possa inviare e/o ricevere dati a/da ogni altro blocco. Verrà poi descritta un’ulteriore forma di realizzazione mostrando come l’architettura possa essere facilmente adattata per un protocollo quadri fase. A number of embodiments of the invention will be described using asynchronous circuits. A first embodiment described is based on an asynchronous two-phase â € œpipelineâ €. Then a second embodiment is described, showing how the previously described architecture can be easily extended in order to handle the â € œfork and joinâ € procedure for a number of interconnected asynchronous blocks in the circuit so that each block of the circuit can send and / or receive data to / from any other block. A further embodiment will then be described showing how the architecture can be easily adapted for a four-phase protocol.

Verrà descritta un’ulteriore forma di realizzazione applicata alla generazione di “clock“ locali sincroni in un’architettura “Globally-Asynchronous Locally-Synchronous (GALS)†. A further embodiment applied to the generation of local synchronous clocks in a Global-Asynchronous Locally Synchronous (GALS) architecture will be described.

1.Circuito basato su una “pipeline†asincrona bifase. 1.Circuit based on an asynchronous two-phase â € œpipelineâ €.

La figura 1 mostra uno stadio di una prima forma di realizzazione del circuito con una “pipeline†asincrona bifase. È composta da tre blocchi, delimitati dalle linee punteggiate nella figura: un blocco generatore di “clock†1 che à ̈ sincronizzato, attraverso un miglioramento della conosciuta procedura “handshake†, con i blocchi generatori di “clock†degli altri stadi, e genera il “clock†locale; un blocco di logica combinatoria 2 che elabora i dati input; ed un blocco “storage†3 che immagazzina il dato output e rileva se à ̈ metastabile o corrotto. Figure 1 shows a stage of a first embodiment of the circuit with a two-phase asynchronous pipeline. It is composed of three blocks, delimited by the dotted lines in the figure: a `` clock '' generator block 1 which is synchronized, through an improvement of the known `` handshake '' procedure, with the `` clock '' generating blocks of the other stages , and generates the local â € œclockâ €; a combinatorial logic block 2 which processes the input data; and a â € œstorageâ € 3 block which stores the given output and detects whether it is metastable or corrupted.

Vale la pena notare che l’invenzione non à ̈ limitata alle “pipeline†lineari, che vengono utilizzate negli esempi di forme di realizzazione specificatamente descritte qui e solo per lo scopo dell’illustrazione. Può essere utilizzato, con l’aiuto di tecniche di design asincrono standard, l’uso di componenti “fork and join†, per ogni circuito asincrono composto da un’interconnessione arbitraria di controllori bifase o quadrifase. It is worth noting that the invention is not limited to linear "pipelines", which are used in the examples of embodiments specifically described here and for the purpose of the illustration only. With the help of standard asynchronous design techniques, the use of â € œfork and joinâ € components can be used for any asynchronous circuit composed of an arbitrary interconnection of two-phase or four-phase controllers.

Qui di seguito il termine “dato speculativo†verrà usato per identificare il dato immagazzinato nel principale registro che non à ̈ metastabile ma che può essere non corretto; mentre il termine “dato non speculativo†verrà utilizzato per identificare il dato immagazzinato nel registro principale che non à ̈ metastabile ma che à ̈ anche corretto. Hereinafter the term â € œspeculative dataâ € will be used to identify data stored in the main register which is not metastable but which may be incorrect; while the term â € œnot speculative dataâ € will be used to identify data stored in the main register which is not metastable but which is also correct.

Blocco “storage†3  € œstorageâ € block 3

Il blocco “storage†3 contiene la “flip-flop†principale 31 ed una “flip-flop†di rilevamento di errore 32. La “flip-flop†principale 31 immagazzina il dato speculativo proveniente dalla logica combinatoria 2 e, se viene rilevato un errore, viene poi aggiornata con il nuovo dato corretto. Viene introdotta una “flip-flop†di rilevamento di errore 32, che riceve le informazioni relative a se la principale “flip-flop†31 di qualsiasi dato ha immagazzinato un valore di dato corrotto o no. The `` storage '' block 3 contains the main `` flip-flop '' 31 and an error detection `` flip-flop '' 32. The main `` flip-flop '' 31 stores the speculative data coming from combinatorial logic 2 and , if an error is detected, it is then updated with the new corrected data. An error detection `` flip-flop '' 32 is introduced, which receives information about whether the main `` flip-flop '' 31 of any data has stored a corrupted data value or not.

Se i tempi setup (o “hold†) della “flip-flop†principale vengono violati, un blocco di rilevamento di metastabilità 33, connesso all’output Q della principale “flip-flop†31, rileva che il voltaggio output non risolve in un voltaggio alto o basso definito, e comunica velocemente (in un periodo di tempo deterministicamente delimitato) una condizione di metastabilità al generatore di blocco 1, attraverso la connessione 34. Il blocco di rilevamento di metastabilità 33 può essere fatto in un modo conosciuto, per esempio genera un livello logico se l’input à ̈ un effettivo logico “0†o “1†, e genera il livello logico opposto se il segnale input à ̈ in condizioni di voltaggio metastabile. If the setup times (or â € œholdâ €) of the main â € œflip-flopâ € are violated, a metastability detection block 33, connected to the Q output of the main â € œflip-flopâ € 31, detects that the voltage output does not resolve to a defined high or low voltage, and quickly communicates (in a deterministically bounded period of time) a metastability condition to block generator 1, through connection 34. Metastability detection block 33 can be done in a known way, for example it generates a logic level if the input is an actual logic â € œ0â € or â € œ1â €, and it generates the opposite logic level if the input signal is in metastable voltage conditions.

Il blocco di rilevamento di metastabilità 33 riceve anche gli output di tutte le principali filp-flop parallele alla 31 presenti nel blocco 3 e non mostrate in Fig.1. The metastability detection block 33 also receives the outputs of all the main filp-flops parallel to 31 present in block 3 and not shown in Fig.1.

L’errore à ̈ rilevato dal confronto tra il dato immagazzinato nella “flip-flop†principale 31 (output Q) ed il dato arrivato successivamente al suo input (D). La “flip flop†di rilevamento di errore di tipo T 32 à ̈ abilitata da un “clock†asincrono ritardato ricevuto dal blocco 1, linea 35. L’input T della “flip-flop†di rilevamento di errore 32 à ̈ l’output dell’albero dei “gate†OR2 (36 mostrato in Fig.1) che colleziona tutti gli output dei “gate†XOR2 derivanti dal numero delle “flip-flop†principali parallele alla 31 presenti nel blocco 3. The error is detected by the comparison between the data stored in the main â € œflip-flopâ € 31 (output Q) and the data arrived after its input (D). The error detection "flip flop" of type T 32 is enabled by a delayed asynchronous "clock" received from block 1, line 35. The input T of the error detection "flip-flop" 32 It is the output of the â € œgateâ € OR2 tree (36 shown in Fig.1) which collects all the outputs of the â € œgateâ € XOR2 deriving from the number of main â € œflip-flopsâ € parallel to the 31 present in block 3.

Ogni “gate†XOR2 36 riceve i segnali D e Q dalle relative “flip-flop†principali come input. Questo significa che controlla se l’input della “flip-flop†principale 31 à ̈ cambiato dopo aver ricevuto come input 37 la principale transizione crescente di “clock†. La “flip-flop†di rilevamento di errore 32 ha un segnale di errore codificato a livelli (in questo esempio †̃1’ significa †̃errore rilevato’ e †̃0’ significa †̃nessun errore rilevato’) all’input T e, se un errore viene rilevato, genera un segnale di errore codificato a transizione (ogni transizione sul cavo significa †̃errore rilevato’) all’output Q 38. Dato che il circuito utilizza un protocollo di segnalazione di transizione, non à ̈ richiesta alcuna fase di reset. Each â € œgateâ € XOR2 36 receives the D and Q signals from its main â € œflip-flopâ € as inputs. This means that it checks if the input of the main â € œflip-flopâ € 31 has changed after receiving the main rising transition of â € œclockâ € as input 37. The error detection `` flip-flop '' 32 has a level-coded error signal (in this example, `` 1 '' means `` error detected '' and `` 0 '' means `` no error detected '' ) at input T and, if an error is detected, it generates a transition coded error signal (each transition on the cable means â € error detectedâ € ™) at output Q 38. Since the circuit uses a transition signaling, no reset phase is required.

Preferibilmente il rilevatore di errore e i blocchi funzionali MD hanno bisogno di essere aggiunti solo a quelle “flip-flop†principali del blocco “storage†3 che può essere influenzato da dati scorretti o può diventare metastabile a causa dei tempi di adattamento. Preferably the error detector and MD function blocks need to be added only to the main â € œflip-flopâ € of the â € œstorageâ € 3 block which may be affected by incorrect data or may become metastable due to adaptation times.

Generatore di “clock†1: interfaccia input e output  € œclockâ € 1 generator: input and output interface

Il blocco generatore di “clock†1 invia i due “clock†(“clock†principale 37 e il clock di rilevamento di errore 35) al blocco di “storage†3, e riceve il segnale di metastabilità 34 e il segnale di errore 38 dal blocco storage 3. La figura 1 mostra anche tutti i segnali input e output che possono essere utilizzati per sincronizzare il generatore di “clock†ad altri stadi asincroni. Tuttavia, dipendendo da alcune condizioni discusse sotto, alcuni segnali input/output potrebbero non essere utilizzati. Se uno o più segnali input/output non sono utilizzati nel blocco generatore di “clock†, il circuito può essere ottimizzato rimuovendo la corrispondente circuiteria. La seguente lista completa dei segnali interfaccia à ̈ divisa in due parti: interfaccia destra 11 e interfaccia sinistra 12. The `` clock '' generator block 1 sends the two `` clocks '' (main `` clock '' 37 and the error detection clock 35) to the `` storage '' block 3, and receives the metastability signal 34 and the error signal 38 from storage block 3. Figure 1 also shows all the input and output signals that can be used to synchronize the â € œclockâ € generator to other asynchronous stages. However, depending on some conditions discussed below, some input / output signals may not be used. If one or more input / output signals are not used in the â € œclockâ € generator block, the circuit can be optimized by removing the corresponding circuitry. The following complete list of interface signals is divided into two parts: right interface 11 and left interface 12.

Interfaccia destra 11 Right interface 11

L’interfaccia destra à ̈ utilizzata per sincronizzarsi con il seguente stadio nella catena (“bundle†11), e comprende i seguenti segnali. The right interface is used to synchronize with the next stage in the chain (â € œbundleâ € 11), and includes the following signals.

-un “Acknowledge right interface†: à ̈ un segnale input “onewire†111 utilizzato dal seguente stadio per comunicare che à ̈ pronto a ricevere un nuovo dato input. - an â € œAcknowledge right interfaceâ €: it is an â € œonewireâ € 111 input signal used by the following stage to communicate that it is ready to receive a new given input.

- una “Request right interface†: à ̈ composta da due segnali: (i) un output “request†speculativo 112, e (ii) un output “request†non speculativo (corretto) 113. Ognuno di essi à ̈ un segnale output “one-wire†utilizzato per comunicare allo stadio successivo che il dato output contiene un dato speculativo nel caso (i), o un dato corretto nel caso (ii). Solo uno di esse viene inviato allo stadio successivo, dipendendo dal tipo di generatore di “clock†dello stadio successivo e dalla criticabilità del blocco logico combinatorio 2 del presente stadio e del successivo (vedi la sezione seguente per maggiori dettagli). Utilizzando il segnale output “request†speculativo, si richiede che l’interfaccia di errore destra (descritta sotto) debba essere connessa all’interfaccia “error left†del seguente stadio: quindi ciò può essere fatto solo se lo stadio successivo à ̈ controllato da un’architettura equivalente come quella qui descritta. In questo caso un errore nel dato speculativo deve essere rilevato e corretto prima che il dato speculativo arrivi all’interfaccia input del blocco di “storage†del successivo stadio. I casi in cui ciò dovrebbe essere fatto vengono discussi sotto. Altrimenti viene utilizzato il segnali output “request†non speculativo. - a â € œRequest right interfaceâ €: it is composed of two signals: (i) a speculative â € œrequestâ € output 112, and (ii) a non-speculative (correct) â € œrequestâ € output 113. Each of them is a â € œone-wireâ € output signal used to communicate at the next stage that the given output contains speculative data in case (i), or correct data in case (ii). Only one of them is sent to the next stage, depending on the type of â € œclockâ € generator of the next stage and the criticism of the combinatorial logic block 2 of the present and the next stage (see the following section for more details). Using the speculative â € œrequestâ € output signal, it is required that the right error interface (described below) must be connected to the â € œerror leftâ € interface of the following stage: so this can only be done if the next stage It is controlled by an equivalent architecture like the one described here. In this case an error in the speculative data must be detected and corrected before the speculative data arrives at the input interface of the “storage” block of the next stage. The cases where this should be done are discussed below. Otherwise the non-speculative â € œrequestâ € output signal is used.

- un “Error right interface†: à ̈ composto da due segnali: (a) un output di errore 114, e (b) un output valido 115. Con questi segnali, il generatore di “clock†1 può comunicare le seguenti informazioni allo stadio successivo: (a) quando un errore viene rilevato nel dato output, attivando l’output di errore 114, quando il dato output à ̈ corretto, attivando l’output valido 115. Questa interfaccia à ̈ connessa allo stadio seguente solo se il segnale output “request†speculativo 112 à ̈ utilizzato. - an â € œError right interfaceâ €: it is composed of two signals: (a) an error output 114, and (b) a valid output 115. With these signals, the â € œclockâ € 1 generator can communicate the following information at the next stage: (a) when an error is detected in the given output, activating the error output 114, when the given output is correct, activating the valid output 115. This interface is connected to the next stage only if the speculative â € œrequestâ € output signal 112 is used.

Interfaccia sinistra Left interface

L’interfaccia sinistra à ̈ utilizzata per sincronizzarsi con lo stadio precedente nella catena (“bundle 12†). The left interface is used to synchronize with the previous stage in the chain (â € œbundle 12â €).

- una “Acknowledge left interface†: à ̈ composta da due segnali: (i) output di “acknowledge†speculativo 121 e (ii) output di “acknowledge†non speculativo 122. Entrambi sono segnali “onewire†utilizzati per comunicare allo stadio precedente che lo stadio presente à ̈ pronto a ricevere un nuovo dato input. Nel caso (i), l’output di dato immagazzinato per ultimo à ̈ ancora speculativo; mentre nel caso (ii), l’output di dato immagazzinato per ultimo à ̈ corretto. Solo uno di essi à ̈ connesso allo stadio precedente, dipendendo dalla criticabilità del blocco di logica combinatoria 2 del presente stadio (vedi sotto per maggiori dettagli). Utilizzare il segnale output “acknowledge left†speculativo 121 non richiede una logica aggiuntiva nel precedente stadio. In questo caso, un errore nel dato speculativo immagazzinato nella principale “flip-flop†31 deve essere rilevato e corretto prima che un nuovo dato arrivi all’interfaccia input 39 del blocco di “storage†3. I casi in cui debbano essere fatti sono discussi sotto: - an â € œAcknowledge left interfaceâ €: it is composed of two signals: (i) speculative â € œacknowledgeâ € output 121 and (ii) non speculative â € œacknowledgeâ € output 122. Both are â € œonewireâ € signals used for communicate at the previous stage that the present stage is ready to receive a new given input. In case (i), the last stored data output is still speculative; while in case (ii), the last stored data output is correct. Only one of them is connected to the previous stage, depending on the criticism of the combinatorial logic block 2 of the present stage (see below for more details). Using the speculative â € œacknowledge leftâ € 121 output signal does not require additional logic in the previous stage. In this case, an error in the speculative data stored in the main â € œflip-flopâ € 31 must be detected and corrected before a new data arrives at the input interface 39 of the â € œstorageâ € 3 block. being made are discussed below:

- una “Request left interface†: à ̈ un segnale input “one-wire†123 usato dal precedente stadio per comunicare che il dato input contiene un nuovo dato (speculativo o non speculativo). - una “Error left interface†: à ̈ composta da due segnali: (a) un input di errore 124, e (b) un input valido 125. Questi segnali sono utilizzati dal generatore di “clock†1 per fermare la sua esecuzione quando viene segnalato un errore nel dato input (a) dall’input 124, e per riavviarlo quando il dato input à ̈ convalidato (b) dall’input 125. Se questi segnali non sono utilizzati, per esempio perché lo stadio precedente utilizza una procedura differente basata su una “request†non speculativa, essi devono essere determinati allo stesso valore di logica costante (sia zero che uno). - a â € œRequest left interfaceâ €: it is a â € œone-wireâ € 123 input signal used by the previous stage to communicate that the given input contains new data (speculative or non-speculative). - an â € œError left interfaceâ €: it is composed of two signals: (a) an error input 124, and (b) a valid input 125. These signals are used by the â € œclockâ € 1 generator to stop its execution when an error is signaled in the given input (a) from the input 124, and to restart it when the given input is validated (b) by the input 125. If these signals are not used, for example because the stage previous uses a different procedure based on a non-speculative â € œquestâ €, they must be determined at the same constant logic value (both zero and one).

Quando usare le procedure “handshake†speculative e non speculative When to use speculative and non-speculative â € œhandshakeâ € procedures

Per riassumere, il circuito può comunicare allo stadio precedente (con l’interfaccia “acknowledge left†121, 122) e lo stadio successivo (con l’interfaccia “request right†112, 121) o il dato valido (con i segnali non speculativi 113, 122). To summarize, the circuit can communicate to the previous stage (with the interface â € œacknowledge leftâ € 121, 122) and the next stage (with the interface â € œrequest rightâ € 112, 121) or the valid data (with non-speculative signals 113, 122).

Al fine di sfruttare l’esecuzione speculativa, il circuito dovrebbe sempre utilizzare la procedura “handshake†speculativa, e quindi i suoi segnali output speculativi. In order to exploit speculative execution, the circuit should always use the speculative â € œhandshakeâ € procedure, and therefore its speculative output signals.

Tuttavia, nelle seguenti condizioni, i segnali output non speculativi dovrebbero essere utilizzati, al fine di ridurre la complessità dell’hardware: However, under the following conditions, non-speculative output signals should be used, in order to reduce the complexity of the hardware:

- come menzionato sopra, se l’output del blocco di “storage†viene inviato ad un altro dominio progettato con un’architettura differente rispetto a quella della presente invenzione, il segnale “request right†non speculativo deve essere utilizzato da quando il ricevente del dato output non ha l’interfaccia sinistra richiesta dalla “request†speculativa. - se la logica combinatoria 2 controllata dal generatore di “clock†1 non à ̈ critica, non à ̈ utile utilizzare i segnali speculativi (sia l’†acknowledge left†121 sia l’output “request right 122†), dato che ciò non velocizzerà il sistema (la cui performance à ̈ determinata dalla logica più lenta). Quindi, il segnale “request right†non speculativo e il segnale “acknowledge left†non speculativo 122 dovrebbero essere utilizzato per ridurre la complessità dell’hardware. In questo caso, l’esecuzione speculativa della logica combinatoria non à ̈ richiesta e, quindi, lo stadio può utilizzare un registro standard senza il rilevatore di metastabilità ed errore nel blocco di “storage†. - as mentioned above, if the output of the `` storage '' block is sent to another domain designed with a different architecture than that of the present invention, the non-speculative `` request right '' signal must be used by when the receiver of the given output does not have the left interface required by the speculative â € œquestâ €. - if the combinatorial logic 2 controlled by the â € œclockâ € generator 1 is not critical, it is not useful to use speculative signals (both the â € acknowledge leftâ € 121 and the output â € œrequest right 122â € ), as this will not speed up the system (whose performance is determined by the slower logic). Therefore, the non-speculative â € œrequest rightâ € signal and the non-speculative â € œacknowledge leftâ € signal 122 should be used to reduce hardware complexity. In this case, speculative execution of combinatorial logic is not required and, therefore, the stage can use a standard register without the metastability and error detector in the â € œstorageâ € block.

- se la logica combinatoria controllata dal generatore di “clock†à ̈ critica ma la logica combinatoria dello stadio successivo non à ̈ critica, usare l’output “request†speculativo 112 non à ̈ utile dato che ciò non velocizzerà il sistema. Quindi il segnale “request†output speculativo 113 non dovrebbe essere utilizzato al fine di ridurre la complessità dell’hardware. - if the combinatorial logic controlled by the â € œclockâ € generator is critical but the combinatorial logic of the next stage is not critical, using the speculative â € œrequestâ € output 112 is not useful as this will not speed up the system . Therefore the speculative â € œrequestâ € output 113 should not be used in order to reduce hardware complexity.

In tutti e tre i casi sopra, l’interfaccia “error right†non dovrebbe essere utilizzata e il prossimo stadio non dovrebbe servire all’interfaccia “error left†, o i segnali 124, 125 non dovrebbe essere impostato sul valore non attivo. In all three cases above, the â € œerror rightâ € interface should not be used and the next stage should not serve the â € œerror leftâ € interface, or signals 124, 125 should not be set to the value not active.

Vale la pena notare che l’informazione sulle condizioni di meta-stabilità non à ̈ propagata attraverso gli stadi della “pipeline†, come il dato, sia speculativo che non speculativo, che ricevono gli altri stadi, in seguito ad una rilevazione di meta-stabilità e recupero in uno stadio dato, sarà stabile in ogni caso. It is worth noting that the information on the conditions of meta-stability is not propagated through the stages of the `` pipeline '', as is the data, both speculative and non-speculative, that the other stages receive, following a survey of meta-stability and recovery at a given stage, it will be stable in any case.

Infatti il rilevamento di una condizione di metastabilità in uno stadio causa la fermata temporanea della generazione di “clock†e “handshake†in quello stadio fino a che una condizione stabile à ̈ recuperata. In fact, the detection of a condition of metastability in a stage causes the temporary stop of the generation of â € œclockâ € and â € œhandshakeâ € in that stage until a stable condition is recovered.

Generatore di “Clock†: operazione interna  € œClockâ € generator: internal operation

L’operazione del blocco generatore di “clock 1†viene spiegata qui sotto con riferimento al diagramma di flusso mostrato nella Fig.2, strutturato secondo un tipo “fork and join†conosciuto, e anche con riferimento alla Fig.1. The operation of the â € œclock 1â € generator block is explained below with reference to the flow diagram shown in Fig.2, structured according to a known â € œfork and joinâ € type, and also with reference to Fig.1.

Ogni nuova transizione “local clock cycle†inizia dal lato sinistro del blocco generatore di “clock†1, quando il sistema à ̈ in attesa dell’input “request left†123 (blocco 211). Dopo che questa “request†arriva, il generatore di “clock†1 inizia il tempo di attesa per l’esecuzione della logica combinatoria. Il “delay†calcolato dal blocco 212 (rappresentato come “delay†131 nella Fig. 1) à ̈ determinato considerando due aspetti: il “COMB delay†che corrisponde al “delay†del percorso critico del blocco “COMB LOGIC†2, meno il tempo “Δerror†, che può essere modificato per controllare il miglioramento della performance dovuto ai tempi di adattamento nello stadio. L’ultima potrebbe (e dovrebbe al fine di migliorare la performance e/o ridurre i consumi della potenza riducendo la tensione di alimentazione ad una performance equa) essere maggiore di zero. Each new â € œlocal clock cycleâ € transition starts from the left side of the â € œclockâ € 1 generator block, when the system is waiting for â € œrequest leftâ € 123 input (block 211). After this â € œquestâ € arrives, the â € œclockâ € 1 generator starts the waiting time for the execution of the combinatorial logic. The â € œdelayâ € calculated by block 212 (represented as â € œdelayâ € 131 in Fig. 1) is determined by considering two aspects: the â € œCOMB delayâ € which corresponds to the â € œdelayâ € of the critical path of the â € œCOMB block LOGICâ € 2, minus the â € œÎ ”errorâ € time, which can be modified to control the improvement in performance due to the adaptation times in the stage. The latter could (and should in order to improve performance and / or reduce power consumption by reducing the supply voltage to a fair performance) be greater than zero.

Dopo questo “delay†, il generatore di “clock†1 controlla (blocco 213) se c’à ̈ stato un errore nel dato input guardando segnale input “error left†124: se non ce ne à ̈ stato alcuno (NO), la procedura procede attraverso la forcella, che inizia nel blocco parallelo 217 e un’altra forcella inizia al punto 214; altrimenti (YES) attende (blocco 216) fino all’arrivo del segnale input valido 125 (blocco 215), dopo che il “COMB Δerror delay†generato dal circuito 132 (significa che la logica combinatoria ha elaborato il dato input valido), e poi procede attraverso la stessa forcella, attivando il blocco 217 e l’altra forcella. Il segnale 124 e l’output del circuito 132 vengono condotti ad un EXOR 145, il quale output à ̈ utilizzato come un “clock†per “D-latch†136. After this â € œdelayâ €, the â € œclockâ € 1 generator checks (block 213) if there has been an error in the given input by looking at the input signal â € œerror leftâ € 124: if there has not been any (NO), the procedure proceeds through the clevis, which starts in parallel block 217 and another clevis begins at point 214; otherwise (YES) waits (block 216) until the arrival of the valid input signal 125 (block 215), after the â € œCOMB Î "error delay" generated by the circuit 132 (means that the combinatorial logic has processed the given input valid), and then proceeds through the same fork, activating block 217 and the other fork. Signal 124 and the output of circuit 132 are routed to an EXOR 145, which output is used as a â € œclockâ € for â € œD-latchâ € 136.

Quindi, il ramo superiore (blocco 217) della forcella consiste solo dell’ “Δerror delay†; ciò à ̈ necessario per permettere la corretta rilevazione di un possibile errore nei dati immagazzinati nel registro principale 31. Therefore, the upper branch (block 217) of the fork consists only of the â € œÎ ”error delayâ €; this is necessary to allow the correct detection of a possible error in the data stored in the main register 31.

Il secondo ramo della forcella per prima cosa aspetta l’input “acknowledge right†111 (blocco 218); poi genera dal circuito 133 (blocco 219) l’impulso di “clock†37 per il registro principale 31 e, in parallelo, viene eseguito un terzo ramo. L’ultimo inizia (blocco 220) con un “delay†al fine di aspettare e permettere al blocco di “storage†3 di generare il segnale di metastabilità 34, e poi il generatore di “clock†controlla (blocco 221) se il registro principale 31 à ̈ in condizioni metastabili o no. Se il dato output non à ̈ stabile (metastabilità “YES†), il generatore di “clock†rimane nel suo stato, e il “clock†à ̈ fermato. The second branch of the fork first awaits the input â € œacknowledge rightâ € 111 (block 218); then it generates from the circuit 133 (block 219) the â € œclockâ € 37 pulse for the main register 31 and, in parallel, a third branch is executed. The last one starts (block 220) with a `` delay '' in order to wait and allow the `` storage '' block 3 to generate the metastability signal 34, and then the `` clock '' generator controls (block 221 ) whether the main register 31 is in metastable conditions or not. If the given output is not stable (metastability â € œYESâ €), the â € œclockâ € generator remains in its state, and the â € œclockâ € is stopped.

Se la metastabilità à ̈ risolta (metastabilità “NO†), due operazioni vengono eseguite in parallelo: If the metastability is resolved (metastability â € œNOâ €), two operations are performed in parallel:

- in un ramo l’“acknowledge left†speculativo 121 e il segnale output “request right†112 sono generate, attraverso “D-latch 137†(blocco 222); - in a branch the speculative â € œacknowledge leftâ € 121 and the output signal â € œrequest rightâ € 112 are generated, through â € œD-latch 137â € (block 222);

- nell’altro ramo (blocco 223)c’à ̈ un “delay†(generato dal circuito 174, Fig. 1, connesso tra l’output del “D-latch†137 e un input del “C-element†140), che permette di aspettare la propagazione di errore e il dato stabile immagazzinato nella principale “flip-flop†31 per arrivare all’input della “flipflop†di rilevamento di errore 32 prima dell’impulso di “clock†. - in the other branch (block 223) there is a â € œdelayâ € (generated by circuit 174, Fig. 1, connected between the output of the â € œD-latchâ € 137 and an input of the â € œC-elementâ € 140), which allows to wait for the error propagation and the stable data stored in the main â € œflip-flopâ € 31 to arrive at the input of the error detection â € œflipflopâ € 32 before the pulse of â € œclockâ €.

Dopo questo, il nodo “join†richiede all’algoritmo di aspettare fino a che i due rami della forcella non sono completi, quindi vengono eseguite due operazioni in parallelo: After this, the â € œjoinâ € node requires the algorithm to wait until the two branches of the fork are complete, then two operations are performed in parallel:

- (1) l’impulso di “clock†35 al registro di rilevamento di errore viene generato (blocco 224, circuito 134); e - (1) the â € œclockâ € 35 pulse to the error detection register is generated (block 224, circuit 134); And

- (2) dopo un “delay†(blocco 225) al fine di permettere al blocco di “storage†3 poi rilevare un possibile errore, controlla (blocco 226) se un errore à ̈ stato rilevato o no. - (2) after a â € œdelayâ € (block 225) in order to allow the â € œstorageâ € 3 block then detect a possible error, check (block 226) if an error has been detected or not.

Se non ci sono errori (“NO†) nei dati immagazzinati (non occorrono transizioni all’output 38), attraverso l’attivazione del generatore di “clock†3, i segnali output “acknowledge left†non speculativo 122 e “request right†non speculativo 113 sono generati dal “D-latch†138 (blocco 227). If there are no errors (â € œNOâ €) in the stored data (no transitions are required at the output 38), through the activation of the â € œclockâ € 3 generator, the non speculative â € œacknowledge leftâ € output signals 122 and non-speculative â € œrequest rightâ € 113 are generated by â € œD-latchâ € 138 (block 227).

Se viene rilevato un errore (“YES†) dal blocco di “storage†(si verifica una transizione all’output 38), il circuito aspetta una seconda condizione (dal blocco 228) sempre partendo dal segnale di errore 38 (blocco 230), ma ritardato dal tempo di correzione di errore (circuito 135, blocco 228). If an error (â € œYESâ €) is detected from the â € œstorageâ € block (a transition occurs at output 38), the circuit waits for a second condition (from block 228) always starting from error signal 38 (block 230), but delayed by the error correction time (circuit 135, block 228).

Quando arriva il segnale di errore, il generatore di “clock†invia anche un nuovo impulso di “clock†37 (blocco 219) al registro principale 31 al fine di immagazzinare di nuovo i dati corretti. Dopo il “join†, il sistema genera un valido segnale output destro 115 (blocco 229), i segnali output †acknowledge left†122 non speculativo e “request right†non speculativo 113 (blocco 227). When the error signal arrives, the â € œclockâ € generator also sends a new â € œclockâ € 37 pulse (block 219) to the main register 31 in order to store the correct data again. After the â € œjoinâ €, the system generates a valid right output signal 115 (block 229), the non-speculative â € œ acknowledge leftâ € 122 and non-speculative â € œrequest rightâ € 113 output signals (block 227).

A seconda di quali segnali (output “acknowledge†e “request†speculativi o non speculativi) vengono utilizzati, il “loop†nel diagramma di flusso à ̈ chiuso da una delle due linee punteggiate nella Fig. 2, chiudendo sugli input rispettivamente del blocco 211 e 218. Depending on which signals (output â € œacknowledgeâ € and â € œrequestâ € speculative or non-speculative) are used, the â € œloopâ € in the flowchart is closed by one of the two dotted lines in Fig. 2, closing on the inputs respectively of blocks 211 and 218.

Generatore di “clock†: attuazione  € œclockâ € generator: implementation

Nell’attuazione mostrata nella Fig. 1, tutte le dichiarazioni di attesa del diagramma di flusso (Figura 2) corrispondono al “delay†che può essere implementato in una via conosciuta nel cavo, per esempio in una catena “inverter†. In the implementation shown in Fig. 1, all the wait declarations of the flow chart (Figure 2) correspond to the â € œdelayâ € that can be implemented in a known way in the cable, for example in an â € œinverterâ € chain.

Le affermazioni “IF†sono implementate con un “D-latch†(blocchi 136, 137, 138). Sono utilizzati per mettere velocemente in stallo tutto il flusso di controllo e il generatore di “clock†nelle seguenti tre condizioni: The "IF" statements are implemented with a "D-latch" (blocks 136, 137, 138). They are used to quickly stall all control flow and the `` clock '' generator under the following three conditions:

(i) l’input di errore 124 segnala che il dato input era danneggiato; (i) the error input 124 indicates that the given input was damaged;

(ii) il blocco di “storage†segnala che il registro principale e in condizioni metastabili; e (ii) the â € œstorageâ € block indicates that the main register is in metastable conditions; And

(iii) il blocco di “storage†segnala (segnale 38) che il registro principale ha immagazzinato un dato danneggiato. (iii) the â € œstorageâ € block signals (signal 38) that the main register has stored a damaged data.

La condizione (ii) ha un “backward loop†che significa che il sistema sta nello stato fino a quando la condizione à ̈ vera. Condition (ii) has a backward loop which means the system stays in the state as long as the condition is true.

Le condizioni (i) e (ii) sono modellate come un “join†in un “forward loop†, che significa che il sistema deve aspettare una nuova condizione per evadere questo stato. Conditions (i) and (ii) are modeled as a â € œjoinâ € in a â € œforward loopâ €, which means that the system must wait for a new condition to evade this state.

Le altre due operazioni “join†sono implementate con gli elementi C 139, 140, che sono equivalenti all’†AND gate†nella logica combinatoria. L’elemento C 139 riceve agli input l’output di “D-latch†136 e il segnale 111 e invia l’output al “D-latch†137, attraverso un blocco “delay†170 di un tempo uguale al tempo MD del blocco 33. L’elemento C 140, come menzionato prima, riceve come input l’output di “D-latch†137 attraverso il circuito “delay†174, e l’outout di “D-latch†136 attraverso un blocco “delay†171 di tempo “Δerror†, e invia l’output al generatore di impulsi 134, e all’output di “D-latch†138 attraverso un blocco “delay†172 di un tempo equo al rilevatore di errore. The other two â € œjoinâ € operations are implemented with the elements C 139, 140, which are equivalent to the â € œ AND gateâ € in combinatorial logic. The element C 139 receives at the inputs the output of â € œD-latchâ € 136 and the signal 111 and sends the output to the â € œD-latchâ € 137, through a block â € œdelayâ € 170 of a time equal to the time MD of block 33. The element C 140, as mentioned before, receives as input the output of â € œD-latchâ € 137 through the circuit â € œdelayâ € 174, and the outout of â € œD-latchâ € 136 through a â € œdelayâ € 171 block of time â € œÎ "errorâ €, and sends the output to pulse generator 134, and to the output of â € œD-latchâ € 138 through a block â € œdelayâ € 172 of a fair time to the error detector.

I blocchi generatori di impulso 141, 142 sono utilizzati per generare i segnali di abilitazione dei due “D-latches†136 e 138. Il generatore di impulso 141 comprende l’ “EXOR†145 ricevendo i segnali 124 e 125, l’ultimo ritardato dall’elemento 132, e generando il segnale di abilitazione per “D-latch†136. Il generatore di impulso 142 comprende l’ “EXOR†146 ricevendo il segnale 38 (che à ̈ anche il segnale 114) entrambi diretti e ritardati dall’elemento 1356, e generando il segnale di abilitazione per “D-latch†138. The pulse generator blocks 141, 142 are used to generate the enabling signals of the two â € œD-latchesâ € 136 and 138. The pulse generator 141 comprises the â € œEXORâ € 145 receiving signals 124 and 125, the Last delayed by element 132, and generating the enable signal for â € œD-latchâ € 136. Pulse generator 142 includes â € œEXORâ € 146 receiving signal 38 (which is also the signal 114) both directed and delayed by element 1356, and generating the enable signal for â € œD-latchâ € 138.

I blocchi generatori di impulso 133, 134 vengono utilizzati per generare i due “clock†(rispettivamente principale 37 e rilevatore di errore 35). Il generatore di impulsi 133 à ̈ alimentato dall’output di un “EXOR†173, ricevendo a turno gli input l’output dell’elemento C 139 e il segnale 38. Il generatore di impulso 134 à ̈ alimentato dall’output dell’elemento C 140. The pulse generator blocks 133, 134 are used to generate the two â € œclocksâ € (respectively main 37 and error detector 35). Pulse generator 133 is powered by the output of an â € œEXORâ € 173, receiving in turn the inputs, the output of element C 139 and signal 38. Pulse generator 134 is powered by Output of element C 140.

Ad ogni transizione del segnale input, i blocchi generatori di impulso 133 e 134 generano un impulso sul segnale output. Possono essere facilmente implementati con un “XOR2 gate†con entrambi gli input connessi al generatore di impulsi input ma uno di essi à ̈ ritardato. L’ultimo “delay†à ̈ equivalente alla larghezza dell’impulso generato nell’output XOR2. At each transition of the input signal, the pulse generator blocks 133 and 134 generate a pulse on the output signal. They can be easily implemented with an â € œXOR2 gateâ € with both inputs connected to the pulse generator input but one of them is delayed. The last â € œdelayâ € is equivalent to the width of the pulse generated in the XOR2 output.

L’output di “D-latch†138 (segnale 113) à ̈ applicato ad un input invertito di un “AND gate†(nel cerchio 175 nella Fig.1), e l’output di “D-latch†137 (segnale 112) à ̈ applicato ad un input invertito di un altro “AND-gate†(nel cerchio 175 nelle Fig.1). Gli output dei due “AND-gate†sono rispettivamente i segnali 122 e 121. Al secondo input dei due “AND-gate†viene applicato un impulso reset. Quando il segnale reset à ̈ basso, entrambi i segnali output “acknowledge left†121 e 122 sono a zero, impedendo allo stadio precedente di generare transizioni sul segnale di “clock†; quando il segnale reset si alza, il circuito à ̈ abilitato e lo stadio precedente può iniziare la sua esecuzione. The output of â € œD-latchâ € 138 (signal 113) is applied to an inverted input of an â € œAND gateâ € (in circle 175 in Fig. 1), and the output of â € œD- latchâ € 137 (signal 112) is applied to an inverted input of another â € œAND-gateâ € (in circle 175 in Fig.1). The outputs of the two â € œAND-gateâ € are respectively the signals 122 and 121. A reset pulse is applied to the second input of the two â € œAND-gateâ €. When the reset signal is low, both the â € œacknowledge leftâ € 121 and 122 output signals are at zero, preventing the previous stage from generating transitions on the â € œclockâ € signal; when the reset signal rises, the circuit is enabled and the previous stage can begin its execution.

Esempio: “pipeline†asincrone multi stadio bilanciate. Example: balanced multi-stage asynchronous pipeline.

Una pipeline asincrona multi stadio bilanciata à ̈ fatta da un numero di stadi in cascata come quelli della Fig. 1. In essa tutti gli stadi sono critici, poiché possono essere soggetti a metastabilità e condizioni di errore. Quindi tutti loro dovrebbero utilizzare segnale output “acknowledge†e “request†speculativo. La figura 3 mostra una pipeline asincrona bilanciata, secondo un altro aspetto dell’invenzione, dove gli input del primo stadio e l’output dell’ultimo stadio sono presumibilmente connessi ad un ambiente che funziona senza l’architettura della presente invenzione. A balanced multi-stage asynchronous pipeline is made up of a number of stages in cascade like those of Fig. 1. In it all stages are critical, as they can be subject to metastability and error conditions. So all of them should be using signal output â € œacknowledgeâ € and speculative â € œrequestâ €. Figure 3 shows a balanced asynchronous pipeline, according to another aspect of the invention, where the inputs of the first stage and the output of the last stage are presumably connected to an environment that works without the architecture of the present invention .

Quindi, come spiegato sopra, la “request†non speculativa deve essere utilizzata all’output dell’ultimo stadio della “pipeline†, come nel primo stadio il segnale input “request†à ̈ connesso ad un segnale output “request†non speculativo provenendo da un’altra logica di controllo costruita senza l’architettura della presente invenzione, e, quindi, l’interfaccia “error left†non viene utilizzata. Nella Figura 3, vengono mostrati solo tre stadi ma uno può essere ovviamente inserito come molti stadi se necessario, mantenendo il primo e ultimo stadio senza la “request†speculativa. Therefore, as explained above, the non-speculative â € œrequestâ € must be used at the output of the last stage of the â € œpipelineâ €, as in the first stage the input â € œrequestâ € signal is connected to an output signal â € œquestâ € not speculative coming from another control logic built without the architecture of the present invention, and, therefore, the â € œerror leftâ € interface is not used. In Figure 3, only three stages are shown but one can obviously be entered as many stages if necessary, keeping the first and last stage without the speculative â € œrequestâ €.

2. Stadi input/output multipli asincroni 2. Multiple asynchronous input / output stages

L’architettura sopra descritta, secondo l’invenzione, funziona solo con un paio di segnali “left and right acknowledge†e “request†. Questo significa che il blocco generatore di “clock†può essere sincronizzato solo con uno stadio sinistro (che invia dati al suo input) e uno stadio destro (che riceve dati dal suo output). Eccetto per quanto qui descritto, il resto del circuito delle Fig.4 à ̈ lo stesso della Fig. 1, e non sarà descritto. The architecture described above, according to the invention, only works with a couple of â € œleft and right acknowledgeâ € and â € œrequestâ € signals. This means that the "clock" generator block can only be synchronized with a left stage (which sends data to its input) and a right stage (which receives data from its output). Except as described here, the rest of the circuit in Fig. 4 is the same as in Fig. 1, and will not be described.

Secondo un altro aspetto dell’invenzione, il generatore di “clock†può essere esteso per ricevere più di un input “request left†e “acknowledge right†. La Figura 4 mostra uno stadio dell’architettura che può ricevere segnali input “m request left†(q dei quali non sono speculativi) e input “n acknowledge right†. According to another aspect of the invention, the â € œclockâ € generator can be extended to receive more than one â € œquest leftâ € and â € œacknowledge rightâ € input. Figure 4 shows a stage of the architecture that can receive input â € œm request leftâ € (q of which are not speculative) and input â € œ acknowledge rightâ € signals.

Tutti i segnali “request†derivanti dall’interfaccia sinistra sono riuniti in un albero degli elementi C (blocco circuito 41) e il suo output “single-wire†entra nel generatore di “clock†come nell’architettura precedente. Allo stesso modo, tutti i segnali “acknowledge†derivanti dall’interfaccia destra entrano in un albero degli elementi C (blocco circuito 42). La correzione di errore del dato input sinistro (realizzato fermando la “request wire†con un generatore di impulsi e “D-latch†) necessita di essere replicata per ogni input “request†speculativi m-q. All the â € œrequestâ € signals deriving from the left interface are gathered in a tree of C elements (circuit block 41) and its â € œsingle-wireâ € output enters the â € œclockâ € generator as in the previous architecture . Similarly, all the â € œacknowledgeâ € signals from the right interface enter a tree of C elements (circuit block 42). The error correction of the left input data (made by stopping the â € œrequest wireâ € with a pulse generator and â € œD-latchâ €) needs to be replicated for each speculative â € œrequestâ € input m-q.

Dato che il generatore di clock riceve segnali “request left†m da altri stadi m, lo stesso numero di segnali “acknowledge left†(sia speculativi 121 che non speculativi 122) devono essere inviati a tutti loro. Since the clock generator receives â € œrequest leftâ € m signals from other m stages, the same number of â € œacknowledge leftâ € signals (both speculative 121 and non-speculative 122) must be sent to all of them.

Nell’altra interfaccia destra, i segnali “right request†n (sia speculativi 112 che non speculativi 113) devono essere connessi a tutti gli altri stadi che ricevono i dati output e rimandano indietro il segnale “acknowledge†. In the other right interface, the â € œright requestâ € n signals (both speculative 112 and non speculative 113) must be connected to all the other stages that receive the output data and send back the â € œacknowledgeâ € signal.

3. Stadio “Safe Razor†asincrono (quadrifase) 3. Asynchronous â € œSafe Razorâ € stage (four-phase)

La Figura 5 mostra un controllore “Safe Razor†asincrono che lavora con un protocollo qudrifase. È simile all’architettura discussa sopra, con riferimento alla Figura 1, che funziona con un protocollo bifase. L’unica differenza à ̈ che i blocchi generatori di impulsi che generano il “clock†principale (blocco 133 nella Fig. 1) e il “clock†di errore (blocco 134 nella Fig. 1) non sono più necessari, dato che la fase di valutazione nel protocollo “handshake†causerà la transizione crescente di “clock†, e la fase reset causerà la transizione di caduta di “clock†. Figure 5 shows an asynchronous â € œSafe Razorâ € controller working with a four-phase protocol. It is similar to the architecture discussed above, with reference to Figure 1, which works with a two-phase protocol. The only difference is that the pulse generator blocks that generate the main â € œclockâ € (block 133 in Fig. 1) and the error â € œclockâ € (block 134 in Fig. 1) are no longer needed, as the evaluation phase in the â € œhandshakeâ € protocol will cause the increasing transition of â € œclockâ €, and the reset phase will cause the falling transition of â € œclockâ €.

Un generatore di impulsi 51 à ̈ ancora necessario al segnale di errore prima che sia connesso all’ “EXOR gate†(blocco 173 nella Fig. 1) che genera il “clock†principale, se (come nell’esempio) il segnale di errore utilizza un protocollo bifase quando ogni transizione deve generare un impulso nel “clock†principale. A pulse generator 51 is still required for the error signal before it is connected to the `` EXOR gate '' (block 173 in Fig. 1) which generates the main `` clock '', if (as in the example) the error signal uses a two-phase protocol when each transition must generate a pulse in the main â € œclockâ €.

L’operazione quadrifase à ̈ più sicura (perché non richiede generatori di impulsi) ma potenzialmente più lenta (e con consumi di potenza più elevati, con un elevato numero di generatori di “clock†, ciascuno alla guida di poche “flip-flop†dell’operazione bifase. The four-phase operation is safer (because it does not require pulse generators) but potentially slower (and with higher power consumption, with a large number of â € œclockâ € generators, each driving a few â € “flip-flop” of the two-phase operation.

4. Esempio di architettura sincrona 4. Example of synchronous architecture

Adesso viene mostrato come l’architettura di circuito dell’invenzione può essere estesa così che il “clock†principale possa essere inviato ad un modulo sincrono standard. La Figura 6 mostra l’implementazione di un modulo sincrono, che può essere utilizzato in un’architettura “Globally-Asynchronous Locally Synchronuous (GALS)†. In questo caso, il blocco generatore di “clock†1’’’’ non comunica con gli altri moduli GALS nemmeno con i loro generatori di “clock†, perché la sincronizzazione avviene nel percorso dati. I dati input e output sono sempre non speculativi (significa che un dato non speculativo à ̈ inviato o ricevuto da altri moduli). Now it is shown how the circuit architecture of the invention can be extended so that the main â € œclockâ € can be sent to a standard synchronous module. Figure 6 shows the implementation of a synchronous module, which can be used in a â € œGlobally-Asynchronous Locally Synchronuous (GALS) â € architecture. In this case, the â € œclockâ € 1â € ™ â € ™ â € ™ â € ™ generator block does not communicate with the other GALS modules not even with their â € œclockâ € generators, because synchronization takes place in the data path . The input and output data are always non-speculative (it means that non-speculative data is sent or received by other modules).

Come nell’architettura “Safe Razor†asincrona, questa versione sincrona à ̈ composta dagli stessi tre blocchi, cioà ̈ un generatore di “clock†1’’’’, una logica combinatoria 2’’’’, e un blocco di “storage†3’’’’. Nella Figura 6 gli elementi identificati dallo stesso numero di riferimento come nella Fig. 1, compiono la stessa funzione. As in the asynchronous â € œSafe Razorâ € architecture, this synchronous version is composed of the same three blocks, that is a â € œclockâ € 1â € ™ â € ™ â € ™ â € ™, a combinatorial logic 2â €  € ™ â € ™ â € ™, and a block of â € œstorageâ € 3â € ™ â € ™ â € ™. In Figure 6 the elements identified by the same reference number as in Figure 1 perform the same function.

Il blocco “storage†3’’’’ ha un “loop back†611 al blocco di logica combinatoria 2’’’’(questo à ̈ la struttura standard per ogni circuito sincrono). Quindi il blocco di logica combinatoria 2’’’’ ha due gruppi di input: uno 612 derivante dall’ambiente e l’altro generato dal blocco di “storage†3’’’’. Il blocco di “storage†3’’’’ invia alla logica combinatoria il dato speculativo immagazzinato 611 dopo che la metastabilità e risolta. The â € œstorageâ € 3â € ™ â € ™ â € ™ â € ™ block has a â € œloop backâ € 611 to the combinatorial logic block 2â € ™ â € ™ â € ™ â € ™ (this is the standard structure for each synchronous circuit). Therefore the combinatorial logic block 2â € ™ â € ™ â € ™ â € ™ has two input groups: one 612 deriving from the environment and the other generated by the â € œstorageâ € 3â € ™ â € ™ block â € ™ â € ™. The â € œstorageâ € 3â € ™ â € ™ â € ™ â € ™ block sends the stored speculative data to combinatorial logic 611 after the metastability is resolved.

Per evitare che un dato metastabile sia inviato attraverso il “loop back†alla logica combinatoria dopo la generazione dell’impulso “main-clock†37, (che può influenzare la rilevazione di errore e il meccanismo di correzione), un’altra “flip-flop†, chiamata “stable flip-flop†613, à ̈ aggiunta nel “loop†, e fa uscire il segnale “loop back†611, un nuovo segnale “stable-clock†614 (generato dal blocco generatore di “clock†) à ̈ connesso al suo input di “clock†. To prevent a metastable data from being sent through the `` loop back '' to combinatorial logic after the generation of the `` main-clock '' pulse 37, (which can affect the error detection and correction mechanism), a Another â € œflip-flopâ €, called â € œstable flip-flopâ € 613, is added in the â € œloopâ €, and it releases the â € œloop backâ € 611 signal, a new â € œstable-clockâ € 614 signal (generated by the â € œclockâ € generator block) is connected to its â € œclockâ € input.

Il blocco generatore di “clock†, come già discusso nel precedente capitolo, deve avere un meccanismo per fermare il “clock†se viene rilevato un errore in qualsiasi input di dato, e riavviarlo quando il dato à ̈ stato corretto e processato dal blocco di logica combinatoria. Quindi, c’à ̈ un generatore di impulsi e “D-latch†(controllato dal segnale di errore interno, dato che l’input speculativo à ̈ il dato input interno) così che un nuovo impulso “main-clock†37 possa essere ritardato se viene rilevato un errore dal blocco di “storage†. The `` clock '' generator block, as already discussed in the previous chapter, must have a mechanism to stop the `` clock '' if an error is detected in any data input, and restart it when the data has been corrected and processed by the combinatorial logic block. Hence, there is a pulse generator and â € œD-latchâ € (controlled by the internal error signal, since the speculative input is the given internal input) so that a new â € œmain- clockâ € 37 may be delayed if an error is detected by the â € œstorageâ € block.

I segnali “request right†speculativi e non speculativi (112, 113) sono utilizzati per generare i due nuovi “clock†(per esempio lo “stable clock†614 e il “correct clock†617). Questi due segnali (che non vengono utilizzati come output “right interface†) sono inviati al blocco di “storage†attraverso due blocchi generatori di impulsi, rispettivamente 618 e 619. Speculative and non-speculative â € œrequest rightâ € signals (112, 113) are used to generate the two new â € œclocksâ € (for example the â € œstable clockâ € 614 and the â € œcorrect clockâ € 617). These two signals (which are not used as â € œright interfaceâ € output) are sent to the â € œstorageâ € block through two pulse generating blocks, 618 and 619 respectively.

Dato che il dato immagazzinato nella “stable flip-flop†613 deve essere aggionato se si verifica un errore, viene aggiunto un “XOR gate†620 all’input del generatore di impulsi 618 e ad un input di questo “XOR gate†620 viene portato il segnale di errore 38 (nello stesso modo come per la generazione del “main_clock†37). Since the data stored in the â € œstable flip-flopâ € 613 must be updated if an error occurs, an â € œXOR gateâ € 620 is added to the input of the pulse generator 618 and to an input of this â € œXOR gateâ € 620 the error signal 38 is carried (in the same way as for the generation of the â € œmain_clockâ € 37).

Confrontando l’architettura di figura 6 con quella asincrona, il segnale output asincrono “acknowledge left†121 à ̈ ora connesso al segnale input “request left†123, e il segnale output non speculativo “request right†113 à ̈ ora connesso con il segnale input “acknowledge right†111. Nell’interfaccia destra, il segnale “request†non speculativo 113 à ̈ connesso al segnale input “acknowledge right†111 (invece di utilizzare il “request†speculativo) perché il “correct flip-flop†615 immagazzina i dati output non speculativi 616 e questa operazione deve essere completata prima che venga generato un impulso main_clock 37. Comparing the architecture of figure 6 with the asynchronous one, the asynchronous output signal â € œacknowledge leftâ € 121 is now connected to the input signal â € œrequest leftâ € 123, and the non speculative output signal â € œrequest rightâ € 113 is now connected with the input signal â € œacknowledge rightâ € 111. In the right interface, the non-speculative â € œrequestâ € signal 113 is connected to the â € œacknowledge rightâ € 111 input signal (instead of using the speculative â € œrequestâ € ) because the â € œcorrect flip-flopâ € 615 stores non-speculative output data 616 and this operation must be completed before a main_clock 37 pulse is generated.

Ulteriori dettagli di implementazione non saranno descritti, poiché il tecnico del ramo à ̈ in grado di proporre l’invenzione partendo dall’insegnamento della descrizione sopra. Further implementation details will not be described, as the person skilled in the art is able to propose the invention starting from the teaching of the above description.

Molti cambiamenti, modifiche, varianti e altri usi e applicazioni dell’invenzione in oggetto saranno evidenti al tecnico del ramo dopo aver considerato la descrizione dettagliata e i disegni di accompagnamento che rivelano forme di realizzazione di ciò. Tutti questi cambiamenti, modifiche, varianti ed altri usi e applicazioni che non si discostano dallo spirito ed ambito dell’invenzione sono considerati per essere coperti da questa invenzione. Many changes, modifications, variations and other uses and applications of the subject invention will be apparent to those skilled in the art after considering the detailed description and accompanying drawings which disclose embodiments thereof. All such changes, modifications, variations and other uses and applications which do not depart from the spirit and scope of the invention are considered to be covered by this invention.

Per esempio la parte di correzione di errore del metodo e circuito dell’invenzione può essere considerata come opzionale in rispetto alla parte relazionata alla rilevazione e risoluzione della meta-stabilità. For example, the error correction part of the method and circuit of the invention can be considered as optional with respect to the part related to the detection and resolution of meta-stability.

Claims (10)

RIVENDICAZIONI 1.Metodo per risolvere condizioni di metastabilità in un circuito digitale integrato, comprendente i seguenti passi: - rilevare condizioni di metastabilità nel circuito digitale integrato; - utilizzare le informazioni su di dette condizioni di metastabilità per fermare temporaneamente la generazione di “clock†per il circuito digitale integrato; - riavviare la generazione di “clock†per il circuito digitale integrato quando le condizioni di metastabilità sono state risolte. CLAIMS 1.Method for solving metastability conditions in an integrated digital circuit, comprising the following steps: - detect metastability conditions in the integrated digital circuit; - use the information on said metastability conditions to temporarily stop the generation of â € œclockâ € for the integrated digital circuit; - restart the generation of â € œclockâ € for the integrated digital circuit when the metastability conditions have been resolved. 2. Metodo secondo la rivendicazione 1, comprendente un ulteriore passaggio di recupero degli errori di segnale, comprendente: - rilevare le condizioni di metastabilità nel circuito digitale integrato; - ripetere il calcolo effettuato dal circuito digitale integrato fino a che le condizioni di errore non sono state risolte. A method according to claim 1, comprising a further step of recovering the signal errors, comprising: - detect the metastability conditions in the integrated digital circuit; - repeat the calculation performed by the integrated digital circuit until the error conditions have been resolved. 3. Metodo secondo la rivendicazione 2, in cui detto circuito digitale integrato comprende un numero di blocchi asincroni interconnessi, detto metodo comprendente i passi di: - scambiare le informazioni delle condizioni di errore tra detti blocchi asincroni interconnessi; - fermare temporaneamente e riavviare la generazione di clock di un blocco asincrono di detto numero di blocchi asincroni interconnessi, basato inoltre sulle informazioni delle condizioni di errore ricevute da uno o più blocchi a monte di detto numero di blocchi asincroni interconnessi. The method according to claim 2, wherein said integrated digital circuit comprises a number of interconnected asynchronous blocks, said method comprising the steps of: - exchanging the information of the error conditions between said interconnected asynchronous blocks; - temporarily stopping and restarting the clock generation of an asynchronous block of said number of interconnected asynchronous blocks, also based on the information of the error conditions received by one or more blocks upstream of said number of interconnected asynchronous blocks. 4. Metodo secondo la rivendicazione 3, in cui detto passo di scambio delle informazioni delle condizioni di errore tra detti blocchi asincroni interconnessi à ̈ basata su una procedura “handshake†. 4. Method according to claim 3, wherein said step of exchanging the information of the error conditions between said interconnected asynchronous blocks is based on a â € œhandshakeâ € procedure. 5. Metodo come secondo le rivendicazioni 3 o 4, comprendente scambiare tra stadi interconnessi a monte e a valle, segnali di riscontro e richiesta per comunicare che lo stadio a valle à ̈ pronto per ricevere nuovi dati, e che lo stadio a monte fornisce un output di nuovo dato, detto dato essendo di un tipo speculativo se colpito possibilmente da un errore, o di un tipo non speculativo, se non colpito da errori. Method as according to claims 3 or 4, comprising exchanging between upstream and downstream interconnected stages, acknowledgment and request signals to communicate that the downstream stage is ready to receive new data, and that the upstream stage provides an output again data, said given being of a speculative type if possibly hit by an error, or of a non-speculative type, if not hit by errors. 6. Circuito per risolvere condizioni di metastabilità in un circuito digitale integrato, detto circuito digitale integrato comprendente almeno un blocco di “storage†(3), un generatore di “clock†(1) per almeno un blocco di “storage†, una logica combinatoria (2) che fornisce i dati da memorizzare in almeno un blocco di “storage†, detto circuito per risolvere condizioni di metastabilità comprende: -almeno un rilevatore di metastabilità (33), configurato per rilevare condizioni di metastabilità all’†output†di uno o più elementi di “storage†(31) in detto almeno un blocco di “storage†(3), e di fornire segnali di condizioni di metastabilità (34) al generatore di “clock†; -almeno un circuito per fermare e riavviare la generazione di “clock“ di detto generatore di “clock†, configurato per ricevere detti segnali di metastabilità (34), per fermare temporaneamente la generazione dei segnali di “clock†quando dette metastabilità sono indicative della presenza di una metastabilità, per riavviare la generazione del segnale di “clock†dal generatore di “clock†quando detti segnali di condizioni di metastabilità sono indicativi della risoluzione delle condizioni di metastabilità. 6. Circuit for solving metastability conditions in an integrated digital circuit, called integrated digital circuit comprising at least one â € œstorageâ € (3) block, a â € œclockâ € (1) generator for at least one â € œstorageâ € block , a combinatorial logic (2) that provides the data to be stored in at least one â € œstorageâ € block, said circuit for solving metastability conditions includes: - at least one metastability detector (33), configured to detect metastability conditions at the â € œoutputâ € of one or more â € œstorageâ € (31) elements in said at least one â € œstorageâ € (3) block, and to supply signals of metastability conditions (34) to the â € œclockâ € generator; - at least one circuit to stop and restart the generation of â € œclockâ € œ of said â € œclockâ € generator, configured to receive said metastability signals (34), to temporarily stop the generation of â € œclockâ € signals when said metastability are indicative of the presence of a metastability, to restart the generation of the â € œclockâ € signal from the â € œclockâ € generator when said metastability condition signals are indicative of the resolution of the metastability conditions. 7. Circuito secondo la rivendicazione 6, comprendente anche: - almeno un rilevatore di condizioni di errore (32), configurato per rilevare le condizioni di errore tra livelli input e output di detti uno o più elementi di “storage†(31), e di fornire i segnali di condizioni di errore (38) al generatore di “clock†; - almeno un circuito per causare la ripetizione da parte del generatore di “clock†della generazione degli eventi di “clock†, permettendo il ricalcolo dei dati errati da parte del circuito digitale integrato, quando detti segnali di condizioni di errore sono indicativi della presenza di condizioni di errore, e finché le condizioni di errore non sono risolte. 7. Circuit according to claim 6, also comprising: - at least one error condition detector (32), configured to detect the error conditions between input and output levels of said one or more storage elements (31), and to supply the signals of error conditions (38) to the â € œclockâ € generator; - at least one circuit to cause the â € œclockâ € generator to repeat the generation of â € œclockâ € events, allowing the recalculation of incorrect data by the integrated digital circuit, when said error condition signals are indicative of the presence of error conditions, and until the error conditions are resolved. 8. Circuito secondo la rivendicazione 6, in cui almeno un circuito per fermare e riavviare la generazione di “clock†di detto generatore di “clock†comprende circuiti di “delay†(136, 137, 138, 170, 171, 172) configurati per ricevere detti segnali di condizioni di metastabilità e di errore, e per ritardare la generazione di detto segnale di “clock†per periodi di tempo necessari per risolvere dette condizioni di metastabilità e recuperare gli errori di segnale. 8. Circuit according to claim 6, wherein at least one circuit for stopping and restarting the â € œclockâ € generation of said â € œclockâ € generator includes â € œdelayâ € circuits (136, 137, 138, 170, 171, 172) configured to receive said metastability and error condition signals, and to delay the generation of said "clock" signal for periods of time necessary to resolve said metastability conditions and recover signal errors. 9. Circuito per risolvere le condizioni di metastabilità e risolvere gli errori di segnale secondo la rivendicazione 8, in cui detto circuito digitale integrato comprende un numero di blocchi asincroni interconnessi, detto circuito comprendente: - interfacce input e output (11, 12) configurate per scambiare segnali di condizioni di errore con uno o più blocchi a monte o a valle di detto numero di blocchi asincroni interconnessi; - ulteriori circuiti di “delay†(131, 141, 142) configurati per cooperare con detti circuiti di “delay†(136, 137, 138, 170, 171, 172) e con dette interfacce input e output per fermare temporaneamente e riavviare la generazione di “clock†di un blocco asincrono di detto numero di blocchi asincroni interconnessi, basati anche su informazioni di condizioni di errore scambiate con uno o più blocchi a monte o a valle di detto numero di blocchi asincroni interconnessi attraverso dette facce input e output (11, 12). 9. A circuit for solving the metastability conditions and solving signal errors according to claim 8, wherein said integrated digital circuit comprises a number of interconnected asynchronous blocks, said circuit comprising: - input and output interfaces (11, 12) configured for exchanging error condition signals with one or more blocks upstream or downstream of said number of interconnected asynchronous blocks; - further `` delay '' circuits (131, 141, 142) configured to cooperate with said `` delay '' circuits (136, 137, 138, 170, 171, 172) and with said input and output interfaces to temporarily stop and restart the generation of â € œclockâ € of an asynchronous block of said number of interconnected asynchronous blocks, also based on error condition information exchanged with one or more blocks upstream or downstream of said number of asynchronous blocks interconnected through said input faces and output (11, 12). 10. Circuito digitale integrato comprendente un circuito per risolvere condizioni di metastabilità e recuperare il segnale di errore secondo una qualsiasi delle rivendicazioni da 6 a 9.10. Integrated digital circuit comprising a circuit for resolving metastability conditions and recovering the error signal according to any one of claims 6 to 9.
IT000485A 2011-06-03 2011-06-03 METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS ITTO20110485A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
IT000485A ITTO20110485A1 (en) 2011-06-03 2011-06-03 METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS
PCT/IB2012/052783 WO2012164541A1 (en) 2011-06-03 2012-06-01 Method and circuit for solving metastability conditions and recovering signal errors in digital integrated circuits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000485A ITTO20110485A1 (en) 2011-06-03 2011-06-03 METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS

Publications (1)

Publication Number Publication Date
ITTO20110485A1 true ITTO20110485A1 (en) 2012-12-04

Family

ID=44555257

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000485A ITTO20110485A1 (en) 2011-06-03 2011-06-03 METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS

Country Status (2)

Country Link
IT (1) ITTO20110485A1 (en)
WO (1) WO2012164541A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009545B2 (en) 2013-06-14 2015-04-14 International Business Machines Corporation Pulsed-latch based razor with 1-cycle error recovery scheme
US9672008B2 (en) 2014-11-24 2017-06-06 Nvidia Corporation Pausible bisynchronous FIFO
CN110401444B (en) * 2019-06-25 2023-04-07 中国科学院上海微系统与信息技术研究所 Metastable state detection elimination circuit of asynchronous clock ADC circuit
CN111262583B (en) * 2019-12-26 2021-01-29 普源精电科技股份有限公司 Metastable state detection device and method and ADC circuit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004084070A1 (en) * 2003-03-20 2004-09-30 Arm Limited Systematic and random error detection and recovery within processing stages of an integrated circuit
US20090024888A1 (en) * 2007-07-17 2009-01-22 Renesas Technology Corp. Semiconductor device
US20090150706A1 (en) * 2007-12-11 2009-06-11 Myeong-Hoon Oh Wrapper circuit for globally asynchronous locally synchronous system and method for operating the same

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278080B2 (en) 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004084070A1 (en) * 2003-03-20 2004-09-30 Arm Limited Systematic and random error detection and recovery within processing stages of an integrated circuit
US20090024888A1 (en) * 2007-07-17 2009-01-22 Renesas Technology Corp. Semiconductor device
US20090150706A1 (en) * 2007-12-11 2009-06-11 Myeong-Hoon Oh Wrapper circuit for globally asynchronous locally synchronous system and method for operating the same

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIM W Y-P ET AL: "Clocks and the performance of synchronisers", IEE PROCEEDINGS E. COMPUTERS & DIGITAL TECHNIQUES, INSTITUTION OF ELECTRICAL ENGINEERS. STEVENAGE, GB, vol. 130, no. 2, 1 March 1983 (1983-03-01), pages 57 - 64, XP009156776, ISSN: 0143-7062, DOI: 10.1049/IP-E:19830014 *

Also Published As

Publication number Publication date
WO2012164541A1 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
Nowick et al. Asynchronous design—Part 1: Overview and recent advances
Nowick et al. High-performance asynchronous pipelines: An overview
CN100449651C (en) Memory system having fast and slow data reading mechanisms
KR100546971B1 (en) A data capture method for high speed signaling
CN106897238B (en) Data processing device and method
TW201937856A (en) Method and arrangement for protecting a digital circuit against time errors
ITTO20110485A1 (en) METHOD AND CIRCUIT FOR SOLVING METASTABILITY CONDITIONS AND RECOVERING SIGNAL ERRORS IN DIGITALINTEGRATED CIRCUITS
WO2014200430A1 (en) Detecting and correcting an error in a digital circuit
CN116205175A (en) Integrated circuit optimization system and method based on multiphase level sensitive latch
WO2023279341A1 (en) Method for designing asynchronous circuit, and electronic device
KR20230131255A (en) Computation system including test circuit, test method and test circuit
Verma et al. Understanding clock domain crossing issues
Simatic et al. New asynchronous protocols for enhancing area and throughput in bundled-data pipelines
Hatture et al. Multi-clock domain synchronizers
GB2527108A (en) Tracing data from an asynchronous interface
CN102754407A (en) Providing a feedback loop in a low latency serial interconnect architecture
EP2747289B1 (en) Synchronizer circuit and method for synchronizing components using different clock signals
Lall et al. Logical Synchrony and the bittide Mechanism
US9715437B2 (en) Pulsed-latch based razor with 1-cycle error recovery scheme
US8199783B2 (en) Method and device for transmitting signal between devices
Prabakar et al. FPGA based asynchronous pipelined multiplier with intelligent delay controller
JP6232313B2 (en) Synchronous serial communication method and slave device
KR101454802B1 (en) Asynchronous Pipeline System, Stage and the Data Transfer Mechanism
ITTO20100194A1 (en) "SYSTEM TO SYNCHRONIZE THE OPERATION OF A CIRCUIT WITH A CONTROL SIGNAL, AND ITS INTEGRATED CIRCUIT"
Schmaltz A formal model of lower system layers