Universit` a degli Studi di Bologna ` DI INGEGNERIA FACOLTA Corso di Laurea in Ingegneria elettronica
TESI DI LAUREA in Progetto di sistemi elettronici
Progettazione di readout digitale veloce di matrici a pixel integrato su ASIC per applicazioni in fisica di alta energia
Candidato:
Filippo Fuzzi
Relatore:
Chiar.mo Prof. Mauro Villa Correlatori:
Dott. Alessandro Gabrielli Dott. Filippo Maria Giorgi
Anno Accademico 2008-2009 - Sessione II
Indice Introduzione
5
1 Il tracciamento di particelle 7 1.1 Gli acceleratori di particelle . . . . . . . . . . . . . . . . . . . 7 1.2 Il progetto SLIM5 . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 I chip APSEL . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 APSEL6D 2.1 Introduzione al chip . . . . 2.2 La Matrice di pixel . . . . 2.3 Il Readout . . . . . . . . . 2.4 Lo stadio di uscita . . . . 2.5 Lo slow control e il register
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
17 17 19 22 30 32
3 Codice e Sintesi 3.1 Il codice VHDL . . . . . . . . . . . . 3.2 Le simulazioni ModelSim . . . . . . . 3.3 APSEL5D . . . . . . . . . . . . . . . 3.4 Simulazioni post-sintesi e post-layout 3.5 Considerazioni generali sul chip . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
37 37 38 41 44 45
. . . . . . . . . . . . file .
. . . . .
. . . . .
Conclusioni
46
Bibliografia
48
3
Introduzione La presente trattazione presenta il lavoro di tesi da me svolto al Dipartimento di Fisica dell’Universit`a di Bologna. La tesi si `e inserita nell’ambito di un progetto di ricerca dell’Istituto Nazionale di Fisica Nucleare chiamato SLIM5. Nei moderni esperimenti in fisica delle particelle sono necessari grandi sistemi di rivelazione che permettano di raccogliere la maggior quantit`a di dati possibili sulle particelle subatomiche oggetto di ricerca. Tra questi, sono di primaria importanza i tracciatori o rilevatori di vertici. Lo scopo di questo tipo di rivelatori `e quello di ricostruire le tracce delle particelle cariche che li attraversano. Lo scopo di SLIM5 era di costruire un tracciatore in silicio altamente innovativo per applicazioni in futuri acceleratori di particelle. Esistono gi`a dei layer traccianti in silicio impiegati in questi ambiti come le Strip o le Striplets che possono fornire una coordinata spaziale monodimensionale e una coordinata temporale di ogni particella che le attraversa. Il tracciatore costruito dal progetto SLIM5 fa uso di questi layer gi`a affermati ma utilizza anche un chip a matrice di pixel chiamato APSEL, una delle principali innovazioni di questo progetto. I dati forniti dai layer traccianti sono raccolti da un sistema di Data Acquisition che tramite un sistema di memorie associative ricostruisce le tracce delle particelle. Un requisito fondamentale di questo tracciatore `e di fornire dati con una bassa latenza, affinch´e possano essere usati per l’implementazione di un trigger di livello 1. Quest’ultimo `e un selezionatore di eventi “interessanti” che permette di decidere quali dati devono essere salvati e quali possono essere scartati per ridurre la quantit`a di dati da analizzare in futuro. Il primo capitolo introduce i chip APSEL presentando pi` u dettagliatamente il progetto SLIM5 e le esigenze della moderna fisica sperimentale che ne hanno motivato la nascita. Il secondo capitolo tratta approfonditamente della pi` u recente evoluzione dei chip APSEL: APSEL6D, il vero protagonista di questa tesi. APSEL6D integra una matrice di 320x256 pixel attivi (81920 in totale) con il readout veloce sparsificato della matrice stessa che manda i dati in uscita formattandoli adeguatamente. La matrice viene divisa in 4 sottomatrici, ognuna delle quali ha un proprio readout indipendente. I flussi di dati che escono dai 4 readout vengono unificati da uno stadio di uscita del chip che li riformatta e li manda sull’output bus. Come gi`a accennato, questo chip deve fornire delle coordinate spaziotemporali che indicano quali pixel si sono accesi in seguito al passaggio di particelle e in quale momento si sono accesi. Per soddisfare la necessit`a di avere una bassa latenza dei dati si `e implementata un’architettura data-driven: il chip non aspetta di essere interrogato dall’esterno per dare le 5
uscite ma non appena ha dei dati pronti li manda in output riducendone al minimo la latenza. APSEL6D deve gestire un rate di particelle per area di 100 MHz/cm2 mantenendo un’efficienza superiore al 98%. La risoluzione temporale di questo chip `e di 1 µs, ovvero APSEL6D scatta un milione di foto al secondo rilevando le coordinate dei pixel accesi. Nel secondo capitolo vengono esaminate le quattro componenti logiche principali del chip: matrice, readout , stadio di uscita e slow control (una entit`a di controllo che interfaccia il chip con l’esterno e gestisce il register file). La componente su cui ho lavorato maggiormente `e lo stadio di uscita, implementato interamente da me. Tutto il chip APSEL6D `e stato descritto in codice VHDL sintetizzabile. Il codice `e stato scritto in forma altamente parametrizzata per permettere una notevole elasticit`a di progetto e grazie a ci`o `e stato possibile realizzare simulazioni ad ampio spettro con ModelSim per trovare e correggere eventuali errori ed individuare ulteriori margini di miglioramento nell’architettura di APSEL6D. Nel mese di Settembre 2009 una versione ridotta del chip, chiamata APSEL5D, `e stata sottomessa per la realizzazione ad una fonderia. Questa versione ridotta sar`a utilizzata per scopi di test e fa uso di una matrice a pixel pi` u piccola (4096 pixel totali) ma conserva la stessa struttura del readout. Sar`a quindi testato prevalentemente il funzionamento del chip e meno le sue prestazioni. Il terzo capitolo del presente elaborato espone l’organizzazione del codice, la sua parametrizzazione, l’impianto di simulazione e la sintesi di APSEL5D.
6
Capitolo 1 Il tracciamento di particelle In questo capitolo introdurr`o il chip oggetto del mio lavoro di tesi presentando dapprima l’ambito di applicazione dello stesso e il progetto dell’Istituto Nazionale di Fisica Nucleare (INFN) entro il quale `e stato sviluppato.
1.1
Gli acceleratori di particelle
La fisica delle particelle `e la branca della fisica che studia i costituenti fonda` detta anche fisica mentali della materia e le loro propriet`a di interazione. E delle alte energie, per fare riferimento alle altissime energie in gioco nelle interazioni tra particelle subatomiche che permettono la generazione di particelle non presenti in natura in condizioni ordinarie. Per studiare fenomeni che avvengono ad energie cos`ı elevate `e necessario accelerare protoni a velocit`a ultra-relativistiche e quindi farle collidere per sfruttare la loro energia cinetica per la generazione di nuove particelle.
Gli acceleratori sono costruiti proprio per produrre fasci di ioni o particelle subatomiche con elevata energia cinetica da far collidere in punti prestabiliti. In questi punti vengono installati dei rivelatori per raccogliere dati sulle interazioni che avvengono nel momento dell’urto e negli attimi immediatamente successivi. Si possono distinguere due categorie di acceleratori in base alla traiettoria seguita dalle particelle, che di solito `e lineare o circolare. Nel primo caso un fascio di particelle `e accelerato e fatto collidere su un bersaglio fisso rispetto al laboratorio; nel secondo caso due fasci vengono accelerati in senso opposto e poi fatti collidere tra loro, oppure un singolo fascio `e estratto dall’acceleratore ed inviato su un bersaglio fisso. 7
Figura 1.1: simulazione di una collisione protone-protone in CMS al CERN. Un grande numero di rivelatori di ogni tipo `e disposto in prossimit`a del punto di interazione per osservare ci`o che avviene: tracciatori, calorimetri, rivelatori di muoni. I tracciatori hanno il compito di ricostruire le traiettorie delle particelle cariche che li attraversano. Tramite queste traiettorie `e possibile individuare la posizione dell’interazione primaria e dei decadimenti secondari; per questo i tracciatori sono anche chiamati Vertex Detectors.
Figura 1.2: Diversi strati di rivelatori (layer) permettono di individuare le traiettorie delle particelle; queste ultime a loro volta permettono di risalire alla posizione dei vertici primari e secondari.
8
1.2
Il progetto SLIM5
SLIM5 (Silicon detectors with Low Interaction with Material) `e un progetto di ricerca e sviluppo finanziato dalla V commissione dell’INFN e il suo scopo `e l’avanzamento dello stato dell’arte per la realizzazione di sistemi di tracciamento di particelle cariche per applicazioni in fisica delle alte energie. A questo progetto collaborano le sezioni INFN di Bologna, Pavia/Bergamo, Pisa, Torino, Trento e Trieste.
Figura 1.3: logo del progetto SLIM5.
I futuri acceleratori di particelle (come le Super B Factory e ILC) avranno bisogno di sistemi di tracciamento a stato solido veloci e molto sottili (dell’ordine dei decimi di millimetro). Il progetto SLIM5 ha costruito un tracciatore sottile costituito da rivelatori in silicio interfacciati ad un sistema di memorie associative per la ricostruzione online delle traiattorie delle particelle. I rivelatori a stato solido sono gi`a affermati nel tracciamento di particelle cariche grazie alla loro ottima risoluzione spaziale e alla loro compatibilit`a con ambienti ad alto rate di particelle; tuttavia la loro densit`a provoca uno scattering significativamente superiore rispetto ai rivelatori gassosi, il quale, soprattutto nel caso di particelle a bassa energia, degrada il tracciamento. La loro alta risoluzione spaziale implica d’altra parte anche una grande quantit`a di dati da selezionare ed elaborare. Nonostante ci`o, in molte applicazioni sar`a essenziale rendere disponibili le informazioni molto velocemente (ovvero con una bassa latenza) in modo da poterle utilizzare per la generazione di un trigger (poich`e la mole di dati acquisiti dai rivelatori `e ingente si rende necessario l’utilizzo di un selezionatore, detto trigger, che permette di salvare solo i dati degli eventi “interessanti”). Il tracciatore sviluppato dalla collaborazione SLIM5 `e costituito da 4 layer cilindrici e concentrici posti attorno al punto di interazione che individuano le coordinate spaziali e temporali delle particelle che li attraversano. Due di questi, posti esternamente rispetto agli altri, sono costituiti da Striplets; i due layer interni invece impiegano il chip APSEL, una matrice di pixel che, 9
come vedremo meglio in seguito, costituisce una delle principali innovazioni del progetto SLIM5. I dati raccolti dai 4 layer vengono inviati ad un sistema di Data Acquisition (DAQ) costituito da delle schede EDRO collegate ad AM Boards e interfacciate a PC. Le EDRO (Event Dispatch and ReadOut) sono schede 9U interfacciate a un bus VME ed equipaggiate con varie FPGA. Queste schede sono state appositamente concepite per elaborare grandi quantit`a di dati con una bassa latenza. Si occupano di leggere i dati dei vari layer e di ricostruire le tracce delle particelle servendosi delle AM Boards (Associative Memory) che implementano un sistema di memorie associative. La striplet `e un rivelatore gi`a ampiamente utilizzato che fornisce coordinate spaziali monodimensionali, coordinata temporale e intensit`a di ciascuna hit (8 possibili livelli). Una striplet consiste in una fitta trama di sensori lunghi 18mm e distanziati di 50µm presenti su entrambe le facce di un wafer di silicio (spesso 200µm) e inclinati rispettivamente di +45◦ e −45◦ rispetto alla verticale, in modo che siano ortogonali. Questi sensori sono letti da un chip di readout noto come FSSR2 realizzato al FermiLab di Batavia (Illinois). FSSR2 viene quindi collegato alla scheda EDRO attraverso una adapter board.
Figura 1.4: a sinistra: un angolo di una striplet; a destra: il readout FSSR2.
I chip APSEL sono costituiti dall’integrazione tra una matrice bidimensionale di pixel e un circuito di readout. Forniscono coordinate spaziali bidimensionali e coordinata temporale. Non forniscono dati sull’intensit`a di carica rilasciata dalla particella ma rilevano solo il superamento di una soglia preimpostata. 10
Tutti i dati raccolti vengono elaborati tramite un sistema di memorie associative. Le hit dei vari layer vengono confrontate con tutte le traiettorie possibili salvate in memoria locale (pattern bank); quando si trovano dei dati in linea spaziale e temporale viene riconosciuta una traccia (figura 1.5). Le tracce valide vengono quindi salvate.
Figura 1.5: le tracce dell’evento sono confrontate con quelle preimpostate in memoria. Quando si rileva un match la traccia `e valida e viene salvata.
Per scopi di test `e stato realizzato un telescopio costituito da 4 Strip (una tecnologia molto simile alle Striplets ma precedente a quest’ultima e quindi pi` u collaudata) poste in successione. Questo telescopio fu collegato ad un sistema di DAQ composto da due schede EDRO, una AM Board e due PC. Il suo scopo era di fornire delle tracce attendibili delle particelle che lo attraversavano per testare 4 layer rivelatori. Le Strip del telescopio furono disposte a coppie, esternamente rispetto ai layer da testare (figura 1.6) e furono collegate a una scheda EDRO del DAQ. I 4 layer, composti da due Striplets poste esternamente e due schede equipaggiate con il chip APSEL internamente, furono posti all’interno del telescopio e furono collegati ad un’altra scheda EDRO. Questo schema di layer da testare e telescopio fu utilizzato per scopi di test nel settembre 2008 alla T9 station del CERN PS (Proton Synchrotron: uno degli anelli acceleratori minori del CERN); il sistema fu sottoposto a un fascio di protoni a 12GeV di energia. Il telescopio aveva il compito di fornire delle tracce valide da confrontare con i dati raccolti dai 4 layer interni: le corrispondenze furono riscontrate e il test risult`o positivo.
11
Figura 1.6: schema dell’impianto utilizzato in fase di test; i layer da testare sono collegati alla scheda EDRO 1, il telescopio `e collegato alla EDRO 2.
Figura 1.7: foto dell’impianto nel laboratorio di test. Le frecce verdi indicano la direzione del fascio di particelle.
12
1.3
I chip APSEL
Il chip apsel nasce dal connubio di una matrice di pixel e del suo circuito di readout. Questo chip ha conosciuto diverse evoluzioni: in APSEL1 era gi`a presente una matrice di pixel 8x8; in APSEL2D fu inserito un primo circuito per la lettura dei dati; in APSEL3D si ingrand`ı la matrice a 8x32 e si inser`ı un readout data driven sparsificato1 ; in APSEL4D i pixel totali salirono a 4096 (matrice 128x32), vennero organizzati in gruppi chiamati macropixel (di dimensione 4x4) e fu riprogettato il sistema di readout.
Figura 1.8: evoluzione del chip APSEL. 1
vengono letti solo i pixel colpiti e non tutta la matrice
13
Tutti i chip appena citati sono dei MAPS (Monolithic Active Pixel Sensor). Nei MAPS la matrice di pixel e il readout sono integrati sullo stesso substrato di silicio, che pu`o essere assottigliato fino a 50µm. Questo `e reso possibile grazie alla tecnologia ST Microelectronics 130nm triple-well CMOS. Questa tecnologia permette di creare in ogni pixel della matrice una deep nwell, la quale, accoppiata con il substrato epitassiale p-, forma un diodo che funge da catodo di raccolta per le diffusioni di carica. La deep n-well ospita inoltre la circuiteria analogica. Come `e visibile in figura 1.9 sono presenti su ogni pixel un preamplificatore, uno shaper, un discriminatore e un latch. Il preamplificatore amplifica il segnale migliorando il rapporto segnale/rumore; lo shaper allarga il segnale (che ha la forma di una spike) su un intervallo di tempo maggiore. Il discriminatore implementa una soglia che il segnale deve superare per settare il latch; questa soglia `e regolabile (viene regolata in fase di calibrazione) e ha lo scopo di escludere le false accensioni dovute al rumore termico. Il latch infine, se `e abilitato tramite il segnale di enable, pu`o scattare in seguito ad un’eventuale accensione del pixel e rimane acceso fino a che non viene letto e resettato.
Figura 1.9: schema del singolo pixel nella tecnologia MAPS. 14
APSEL6D `e l’ultimo chip sviluppato ad ora ed `e composto da una matrice 320x256 (81920 pixel totali) suddivisa in 4 sottomatrici 80x256, ognuna con il proprio readout; la forma dei macropixel `e passata da 4x4 a 2x8 ed `e stata inserita la sparsificazione a zona2 . Si ipotizza che nel caso reale le hit saranno disposte a cluster di circa 4 pixel; se la previsione sar`a verificata la sparsificazione a zona porter`a notevoli vantaggi per la gestione e l’output dei dati. In questo chip inoltre `e stato aggiunto uno stadio di uscita che prende i dati letti da ogni readout (uno per sottomatrice) e li mette sul bus di uscita applicando una compressione. La realizzazione dello stadio di uscita e la simulazione dello stesso costituiscono la parte principale del mio lavoro di tesi. APSEL6D, a differenza dei suoi predecessori, non `e un MAPS ma appartiene alla categoria dei “pixel ibridi”, una tecnologia gi`a molto utilizzata in progetti di questo ambito. Essa consiste nel realizzare su due substrati separati la matrice e il readout. Il substrato che ospita la matrice viene realizzato con una maggiore resistivit`a, in modo da immunizzare il pi` u possibile i sensori dal rumore; quello che ospita il readout invece ha una minore resistivit`a, per garantire delle buone condizioni di lavoro alla logica CMOS. I due substrati vengono quindi uniti tramite bump bonding3 . In questo modo la matrice `e anche maggiormente immune al rumore generato dall’elettronica digitale del readout. A livello di singolo pixel abbiamo un aumento del pitch (cio`e del lato del pixel) da 40µm a 50µm a causa dei limiti nel processo tecnologico di bump bonding. I pixel sul substrato della matrice ospiteranno solo un sensore e un preamplificatore; la restante parte della logica, interna al pixel nel caso di MAPS, viene portata sull’altro substrato. Un aspetto negativo dei pixel ibridi `e il loro maggiore spessore4 che, come gi`a affermato in precedenza, genera uno scattering delle particelle attraversanti che degrada il tracciamento.
2
la matrice viene divisa verticalmente in zone e quando si ha una hit viene mandato in uscita l’indirizzo della zona e il Zone-pattern 3 i substrati vengono sovrapposti e i contatti microsaldati con palline di stagno 4 necessitano di due substrati e di metallo per il bonding
15
16
Capitolo 2 APSEL6D In questo capitolo `e descritta l’architettura di APSEL6D: l’organizzazione logica della matrice, il ruolo dello Slow Control e il funzionamento del Readout. La logica descritta qui di seguito `e stata implementata in linguaggio VHLD (Very High Speed Integrated Circuits Hardware Description Language) ed in seguito `e stata sintetizzata tramite Synopsis. Come viene approfondito nel terzo capitolo il chip sintetizzato non `e APSEL6D ma uno di dimensioni pi` u ridotte costituito solo da una porzione della matrice di APSEL6D ma con un readout e uno Slow Control del tutto identici. Ritengo opportuno quindi presentare dapprima il progetto del chip APSEL6D in questo capitolo e successivamente nel terzo capitolo le modifiche effettuate prima di eseguire la sintesi.
2.1
Introduzione al chip
APSEL6D `e costituito da una matrice 320x256, con un numero totale di pixel 20 volte maggiore rispetto ad APSEL4D. I pixel hanno lati di 50 µm, per un’area totale della matrice di 204,8 mm2 . Il rate atteso di hit per area `e di 1 MHz/mm2 e dunque il rate atteso di hit sul chip `e di 204,8 MHz, avendo gi`a considerato un fattore 4 di clusterizzazione (ogni particella che attraversa la matrice accende in media 4 pixel). La sfida che deve affrontare APSEL6D `e di riuscire ad acquisire questo notevole rate di hit senza alcuna perdita, mantenendo un’efficienza molto alta (superiore al 98%) e garantendo una latenza minima dei dati, affinch`e sia possibile utilizzarlo per implementare un sistema di trigger di livello 1.
L’efficienza totale `e calcolata secondo la seguente formula: 17
εT ot = εSensεDiscεLatchεAT R L’efficienza totale `e data dal prodotto delle efficienze del sensore, del discriminatore, del latch e del resto della logica (All the rest). L’efficienza del sensore tiene conto delle hit perse a causa del mancato rivelamento di una particella da parte del sensore stesso (il pixel che raccoglie la carica nella deep N-well). L’efficienza del discriminatore (e dello shaper) considera le hit perse perch´e rivelate dal sensore ma invisibili al discriminatore in quanto lo shaper allargando il segnale sull’asse dei tempi copre (inglobando) eventuali segnali immediatamente successivi. L’efficienza del latch considera le hit perse a causa della logica di lettura e reset del latch. Possono verificarsi due casi che portano ad un’inefficienza di questo tipo. Il primo caso `e quello in cui un pixel gi`a acceso viene attraversato da una seconda particella prima che possa essere letto e resettato e quindi questa seconda particella `e invisibile al tracciatore. Il secondo caso `e quello in cui nella fase di congelamento del macropixel (necessaria alla lettura dei dati come vedremo in seguito) una particella attraversa il sensore e viene rivelata ma il dato non viene salvato perch´e il latch `e disattivato. L’inefficienza “All the rest” infine `e quella dovuta alla successiva logica di readout ed `e causata da eventuali perdite di dati per buffer overflow. Questo tipo di inefficienza, per come `e progettato il readout, in condizioni normali `e nulla. La scansione della matrice da parte del readout deve avvenire periodicamente. Questo periodo determina la risoluzione temporale dei dati acquisiti. Ad ogni hit vengono associate due coordinate spaziali (quale pixel si `e acceso) e una temporale (in che momento si `e acceso). La coordinata temporale `e gestita da un contatore di “Time Stamp” che viene incrementato da un clock fornito dall’esterno chiamato BC clk. Ad ogni hit `e quindi associato il Time Stamp nel quale si `e acceso il relativo pixel. Questa granularit`a temporale `e decisa dall’esterno e pu`o quindi essere variata. Il valore standard del periodo di BC clk per APSEL6D `e di 1µs, il che implica ai rate attesi una media di circa 200 hit per ogni Time Stamp (200 pixel accesi su 81920). Per ridurre al minimo la latenza si fa uso di un’architettura data-driven: quando sono presenti dei dati, questi vengono letti e inviati in uscita senza attendere alcuna richiesta dall’esterno. In questo modo la latenza dei dati nel chip `e quella minima necessaria per la loro lettura e formattazione e il flusso di informazioni non viene ritardato o fermato da segnali esterni. Per aumentare la velocit`a di scansione della matrice inoltre si fa uso di un readout sparsificato. In certi casi, come ad esempio nelle fotocamere digitali, la matrice di pixel, che acquisisce l’immagine, deve essere letta interamente in 18
quanto ogni pixel contiene informazioni essenziali. Nella matrice di APSEL6D invece solo una ridotta quantit`a di pixel contiene informazioni e, grazie alla sparsificazione, solo questi vengono letti. In questo modo si evitano scansioni delle parti di matrice dove non ci sono dati e si ottimizzano i tempi. Il chip APSEL6D `e composto da tre blocchi principali interfacciati tra di loro: • una matrice bidimensionale di pixel che rivelano il passaggio di particelle cariche; • un readout digitale, veloce e sparsificato; • uno Slow Control attraverso il quale `e possibile settare maschere, parametri e controllare il funzionamento del chip. Questi componenti verranno qui di seguito presentati pi` u dettagliatamente.
2.2
La Matrice di pixel
Come scritto in precedenza APSEL6D `e costituito da una matrice di 320x256 pixel; questa `e suddivisa in 4 sottomatrici, ognuna delle quali ha un proprio readout, per parallelizzare ulteriormente la lettura. Gli output dei 4 readout vengono unificati in un unico stream di dati solo nello stadio finale, in uscita dal chip. I singoli pixel della matrice inoltre sono uniti in unit`a logiche dette macropixel. Quando un pixel all’interno del macropixel si accende, quest’ultimo segnala al readout che `e presente una hit. Solo i macropixel che hanno segnalato una accensione vengono quindi letti dal readout. La lettura di un macropixel procede in 4 fasi: 1. Il macropixel `e stato resettato in seguito ad una precedente lettura o ad un’inizializzazione del chip e tutti i pixel al suo interno hanno i latch abilitati ma resettati. 2. Ad un certo istante arrivano delle particelle che provocano l’accensione di uno o pi` u pixel all’interno del macropixel. I latch sono tutti abilitati e quelli dei pixel colpiti sono settati a 1. 3. Nell’istante in cui si presenta un fronte di salita del BC clk (segnale che determina la risoluzione temporale dei dati acquisiti) tutti i macropixel che contengono almeno un pixel acceso vengono congelati; questo si ottiene disattivando il segnale di enable dei latch dei pixel. 19
4. Il readout infine legge il macropixel, lo resetta e abilita di nuovo i latch: si torna alla fase iniziale. Le possibilit`a di suddivisione della matrice in sottomatrici sono 3: dividere la matrice verticalmente, orizzontalmente, oppure in entrambi i modi. La scelta per APSEL6D `e stata effettuata sulla base di dati di efficienza del chip ottenuti dalle simulazioni. La tabella in figura 2.1 mostra che i risultati migliori in termini di efficienza si hanno suddividendo la matrice in senso verticale. In questo caso l’efficienza aumenta perch´e il tempo di scansione (che avviene per colonne) della matrice si riduce e i pixel vengono letti e resettati pi` u velocemente, minimizzando l’inefficcienza di latch. Per APSEL6D quindi `e stata scelta proprio questa suddivisione. La forma dei macropixel `e stata
Figura 2.1: tabella comparativa delle efficienze rispetto alle varie soluzioni di suddivisione della matrice e di dimensione dei macropixel. scelta in seguito a considerazioni sulla lettura per colonne della matrice (che incoraggia una forma 1x16) e sulla clusterizzazione delle hit (che suggerisce ` stata scelta la una forma 4x4) e ad una mediazione tra le due esigenze. E 2x8 perch´e in caso di clusterizzazione delle hit (non simulata nella tabella in figura 2.1) questa geometria porta dei miglioramenti notevoli in termini di banda occupata dai dati in output rispetto alla forma 1x16. Ricapitolando, la matrice `e divisa verticalmente in 4 sottomatrici 80x256, ognuna delle quali viene letta da un readout dedicato (figura 2.2). Ogni sot20
tomatrice `e suddivisa a sua volta in 40 macrocolonne e 32 macrorighe che individuano 1280 macropixel, ognuno dei quali ha dimensione 2x8. Le sottomatrici inoltre sono suddivise in “zone” larghe 1 e alte 8 pixel. Queste zone sono strettamente legate al sistema di sparsificazione implementato dal readout; la loro funzione viene approfondita nella sezione dedicata al readout stesso.
Figura 2.2: suddivisione in sottomatrici.
Quando un pixel non congelato rivela il passaggio di una particella il latch interno ad esso viene settato a 1. Un gate or tra i latch di tutti i pixel del macropixel fornisce un segnale Fast OR1 che esce dalla matrice ed `e usato dalla logica di readout per sapere dove sono presenti dei dati da leggere e dove no. Tramite dei segnali di Latch enable, inviati ai singoli macropixel, `e possibile congelare i latch di tutti i pixel interni ad un macropixel. La matrice riceve inoltre i segnali Column Enable e Out Enable che permettono alla logica di lettura di selezionare rispettivamente la colonna e le macrorighe che devono essere lette. Sulla matrice corrono orizzontalmente 256 linee di bus alle quali si possono collegare i singoli pixel attraverso dei gate tri-state. I segnali Column Enable e Out Enable abilitano i gate tri-state di una certa colonna e di certe macrorighe rispettivamente. I bit selezionati da questi ultimi segnali vengono quindi messi in uscita dalla matrice sul bus di 256 bit. Della lettura di questi dati si occupa il readout. 1
questo segnale quindi indica che almeno uno dei pixel contenuti dal macropixel ha rilevato una hit
21
2.3
Il Readout
Esiste un readout distinto per ogni sottomatrice. Il readout si occupa di gestire la lettura e il reset dei macropixel colpiti e di portare i dati su un barrel di livello 1 (una sorta di buffer di uscita del readout). Il readout `e composto da una Sweep Logic che riceve i segnali di Fast OR dalla matrice e abilita l’uscita dei pixel da leggere, un Time counter che gestisce l’etichettatura temporale dei dati letti, uno Scan Buffer o MP FIFO che memorizza quali Macropixel vanno letti, una catena di sparsificatori, barrel e concentratori che porta i dati verso l’uscita formattandoli e ordinandoli adeguamente. Lo schema del readout `e visibile in figura 2.3.
Figura 2.3: schema del readout.
22
Il clocking del chip APSEL6D utilizza tre clock differenti: la maggior parte del chip `e sincrono sul RDclk (che in condizioni operative avr`a una frequenza di circa 60 MHz), mentre la logica di output dei dati va con un fast clk (con frequenza 1, 2, 3 o 4 volte quella del RDclk per permettere l’uscita di tutti i dati); il terzo clock `e chiamato BC clk e indica la risoluzione temporale dei dati (con frequenza dell’ordine del megahertz). Questo clock infatti determina l’incremento di un contatore a 8 bit chiamato TimeStamp (brevemente TS) che costituisce la coordinata temporale. Tutti e tre i clock vengono forniti al chip dall’esterno. Il BC clk pu`o essere sfasato rispetto agli altri e non ha vincoli con gli altri due per quanto riguarda le frequenze. Il RDclk e il fast clk invece devono essere assolutamente sincroni: questo si rende necessario in quanto il passaggio da un dominio di clock all’altro, presente nello stadio di uscita, `e molto sensibile. Il divisore (1, 2, 3 o 4) `e impostabile sul register file. La politica di scansione Sul fronte di salita del BC clk il readout vede quali macropixel hanno il Fast OR alzato (cio`e sono stati colpiti) e li congela disattivando i loro Latch Enable. Allo stesso tempo salva su una FIFO una parola che indica quali macropixel sono stati congelati (dovranno essere letti e resettati) e a quale TS corrispondono. Questa FIFO (d’ora in avanti MP FIFO) `e stata inserita per garantire una certa elasticit`a nella lettura dei dati dalla matrice. In assenza di questo sistema il readout dovrebbe leggere tutte le hit di un TS prima dell’arrivo del successivo (altrimenti verrebbero persi dei dati); in questo modo invece, quando in un TS si verifica un alto numero di hit da leggere e il readout non riesce a finire entro il limite del TS successivo, non si hanno problemi in quanto i macropixel da leggere sono salvati. In questo caso l’unica cosa che conta `e che la media del tempo di lettura per i vari TS (detta Mean Sweeping Time) non superi il periodo del BC clk.
23
Figura 2.4: a)Macropixel vuoti non mascherati. b) Ad un certo momento arrivano le hit e il FAST OR del macropixel colpito va a uno. c) All’arrivo del BC clk i macropixel con il FAST OR alzato vengono congelati e sulla MP FIFO vengono scritti il TS e la mappa dei macropixel congelati. d) Lo sweeper legge la MP FIFO fino a che non trova dei dati e inizia la scansione; abilita l’output per la prima colonna del macropixel congelato. e) Lo sweeper abilita l’output per la seconda colonna del macropixel congelato e resetta il macropixel appena letto, quindi continua nello stesso modo con la scansione degli altri macropixel congelati. Quando ha finito riparte dalla lettura della MP FIFO.
24
Lo sweeper Un’entit`a chiamata sweeper genera i segnali di controllo della matrice per leggerla e resettarla. La lettura della matrice procede per colonne; vengono letti 256 bit in parallelo ad ogni colpo di RDclk. Ogni sottomatrice viene “spazzolata” dal rispettivo readout da destra a sinistra ma non tutte le colonne sono scansionate. Lo sweeper legge la MP FIFO per conoscere i macropixel colpiti in un certo TS, genera un segnale di Start of Scan (SOS), alto per un RDclk, e abilita in sequenza l’uscita delle sole colonne appartenenti a macropixel colpiti, comandando i segnali Column Enable e Out Enable. Quando finisce la scansione, ripete tutto a partire dalla lettura della MP FIFO per sapere quali macropixel sono stati colpiti nel TS successivo. In ogni scansione quindi vengono lette solo le hit relative allo stesso TS (figura 2.5). Lo sweeper si occupa solamente di generare il segnale di SOS, un segnale che indica il TS della scansione corrente e i segnali per la lettura e il reset della matrice; il flusso di dati uscente dalla matrice `e acquisito dagli sparsificatori e immesso nella catena di buffer e concentratori verso l’output.
Figura 2.5: schema di come avviene la scansione della matrice.
25
La sparsificazione a zona In APSEL6D `e presente inoltre un particolare tipo di sparsificazione: la sparsificazione a zona. La matrice `e suddivisa (al di fuori della logica dei macropixel) in “zone” di dimensione 1x8. Nel caso della sparsificazione classica, quando il readout trova un pixel acceso salva le coordinate assolute X e Y del pixel; con la sparsificazione a zona, quando il readout trova un pixel acceso salva le coordinare X e Y della zona e il Zone Pattern, una sequenza di 8 bit che riporta le condizioni di tutti i pixel di quella zona. Questo tipo di sparsificazione `e stata introdotta per migliorare le prestazioni del chip in presenza di cluster di hit. Nel caso (probabile) in cui siano presenti due pixel accesi nella stessa zona, il readout deve salvare solo una parola che indica coordinate della zona e Zone Pattern; con una sparsificazione classica invece sarebbero state necessarie due parole riportanti le coordinate di entrambi i pixel. Con una sparsificazione classica il dato di una hit occupa [Time Stamp + Data Valid + indirizzo puntuale per N pixel (log2 N )] = L bit. Con una sparsificazione a zona, con zone di Z pixel, il dato di una zona occupa [Time Stamp + Data Valid + indirizzo di zona + pattern di zona (Z bit)] = L log2 Z + Z. Per un valore di Z sufficientemente piccolo (come 8) ed un valore di L sufficientemente grande, la differenza relativa di bit utilizzati nei due casi `e minima, ma nel secondo caso il dato non `e di un solo pixel ma di una intera zona: ulteriori pixel accesi in quella zona non “costano” niente in termini di banda di uscita. Maggiore sar`a la clusterizzazione, maggiore sar`a il risparmio di banda dovuto alla sparsificazione a zona. Gli sparsificatori I 256 bit di dato che escono dalla matrice ad ogni colpo di RDclk sono messi in ingresso ai 4 sparsificatori, ognuno dei quali riceve quindi 8 zone da 8 bit l’una. Questi oggetti hanno il compito di scrivere i dati (se presenti) dentro i barrel di livello 2 presenti alla loro uscita. I barrel sono in sostanza delle FIFO con la possibilit`a di scrivere fino a 8 parole per ogni colpo di clock, rendendo possibile sparsificare tutti in una volta i 64 pixel in ingresso. Il numero di parole da scrivere `e passato in input ai barrel e le parole stesse sono date in ingresso al barrel concatenandole in parallelo su un unico vettore. Quando lo sweeper genera il segnale SOS gli sparsificatori inseriscono nei barrel2 un’unica parola che definisce lo Start of Scan e indica la coordinata temporale delle hit che seguiranno (ovvero il TS). Quando non `e presente 26
uno SOS e se ci sono dei pixel accesi gli sparsificatori inseriscono nei barrel2 i dati riguardanti le hit. La singola parola ha il seguente formato: • SOS: il bit pi` u significativo `e usato per definire se si tratta di una hit o di uno Start of Scan. Quando questo bit `e a uno i restanti bit della parola sono utilizzati per scrivere a quale TS `e riferito lo SOS. Quando questo bit `e a zero negli altri bit sono inserite le coordinate spaziali della hit • Yzone address: 3 bit sono utilizzati per definire in quale delle 8 zone gestite da uno sparsificatore `e stata rilevata almeno una hit • X Address: 7 bit sono utilizzati per fornire la coordinata x, ovvero in quale colonna `e stata rilevata la hit. • Yzone pattern: 8 bit sono utilizzati per riportare il pattern della zona in questione (0 = pixel spento, 1 = pixel acceso).
Figura 2.6: formato dei dati all’interno dei barrel2. 27
I barrel2 hanno quindi una larghezza di 1+3+7+8=19 bit. La profondit`a `e stata scelta in base a valutazioni sui risultati delle simulazioni svolte; `e stato verificato che una lunghezza di 8 parole `e sufficiente per garantire un adeguato margine di sicurezza ai rate di hit attesi. Il concentratore Un componente chiamato concentrator riunisce i dati presenti nei 4 barrel2 di una sottomatrice (uno per ogni sparsificatore) in un unico barrel di livello 1, utilizzando un metodo intelligente che mette le hit in ordine temporale (figura 2.7). Il concentrator pu`o leggere tutti e 4 i barrel2 ad ogni RDclk: quando trova 4 SOS con lo stesso TS scrive sul barrel1 uno SOS riportando il TS; quando sui 4 barrel2 ci sono dati il concentrator li scrive tutti sul barrel1 in un unico RDclk (in 4 parole differenti). Il formato dei barrel1 Data `e del tutto simile a quello gi`a illustrato per il barrel2, con l’aggiunta di 2 bit di Spars address che indicano da quale dei 4 sparsificatori proviene la hit.
Figura 2.7: il concentrator riempie i barrel di livello 1 conservando l’allineamento temporale delle hit. In figura hit relative a TS diversi sono distinte con colori diversi.
Nel caso in cui su qualche barrel2 venga letto uno SOS e sugli altri vengano letti dei dati, il concentrator mette in Hold i barrel sui quali `e arrivato lo SOS e continua a svuotare gli altri per leggere tutte le hit di un TS prima di passare al successivo. Quando tutti i barrel sono in Hold o danno lo SOS il concentrator scrive lo SOS sul barrel1, toglie l’hold ai barrel2 bloccati in precedenza e inizia a leggere le hit relative al TS successivo. 28
Grazie alla conservazione dell’allineamento temporale delle hit implementata dal concentrator `e possibile scrivere in memoria una sola volta la coordinata temporale (nella forma di SOS + TS) e di seguito scrivere tutte le hit che condividono lo stesso TS. Questo porta ad un notevole risparmio in termini di dimensione dei barrel (che si riflette in un risparmio di area sul chip)
Figura 2.8: formato dei dati all’interno dei barrel1, del tutto simile al formato dati dei barrel2 ma con l’aggiunta di 2 bit di B2 address (cerchiati in rosso).
I barrel di livello 1 I barrel1 costituiscono l’ultima parte del readout e lavorano sul fast clock. In questo punto avviene quindi il passaggio da un dominio di clock all’altro: il concentrator mette in uscita i dati ad ogni fronte di salita del RDclk; il barrel1 campiona i dati uscenti dal concentrator una volta ogni 1, 2, 3 o 4 fast clk (a seconda del rapporto tra i due clock), per leggere i dati una e una sola volta. Il cambiamento di clock in questo punto si rende necessario a causa del funzionamento del final concentrator che, come spiegato qui di 29
seguito, deve svuotare i barrel1 sequenzialmente a una velocit`a sufficiente per garantire l’uscita di tutte le hit.
2.4
Lo stadio di uscita
I dati di ogni sottomatrice sono convogliati dal concentrator in un barrel1. Non rimane che leggere i dati da ogni barrel1 e farli uscire sul bus. L’intento principale `e di occupare meno banda possibile, senza incidere troppo sull’area ` quindi necessario ridurre al minimo del chip o sulla complessit`a progettuale. E le ridondanze nei dati in uscita. Una volta limitato il volume dei dati, la banda pu`o essere ridotta diminuendo il numero di linee di bus (che per limiti di progetto devono in ogni caso essere inferiori a 25-30) e diminuendo la frequenza di uscita dei dati (rimanendo in ogni caso al di sotto dei 180 MHz). Qui di seguito `e presentata la soluzione che `e stata adottata. Il final concentrator Il final concentrator `e l’ultimo componente attraversato dai dati prima dell’output bus. Questo componente raccoglie tutte le hit dai barrel1 delle sottomatrici e le manda in uscita su un bus di 22 linee. Per ridurre ulteriormente2 la ridondanza dei dati in uscita si `e adottato il formato illustrato qui di seguito. Un bit costituisce il segnale Data Valid; un secondo bit indica la natura dei bit successivi: TimeStamp oppure Dato (la stessa funzione che prima era assolta dal bit SOS). Nel primo caso i 20 bit rimanenti ospitano il TS e l’indirizzo del barrel1; nel secondo caso i 20 bit ospitano il dato nel formato B1 Data, ovvero suddiviso in Spars address (2 bit), Zone address (3 bit), X address (7 bit), Zone pattern (8 bit) (figura 2.9). Lo stream di dati in uscita sar`a dunque di questo tipo: una parola contenente TS e barrel1 address seguita da tutte le hit di quel barrel1 relative a quel TS; una parola contenente TS (lo stesso di prima o il successivo) e barrel1 address (del barrel1 successivo), di seguito tutte le hit di quel barrel relative a quel TS e cosi via. Per garantire che siano uscite tutte le hit relative a un certo TS da un barrel1 prima di passare al barrel successivo `e necessario attendere che dal barrel in lettura esca la parola che indica il nuovo TS (che assicura la fine 2
una riduzione della ridondanza dei dati salvati `e gi`a stata implementata dal funzionamento del concentrator che mantiene l’ordinamento temporale delle hit
30
Figura 2.9: formato dei dati sul bus di uscita.
delle hit del precedente TS ). I barrel1 quindi devono essere svuotati sequenzialmente. In questo modo il final concentrator pu`o dare in uscita una parola contenente TS+B1 address e di seguito tutti i dati del barrel1 corrispondente fino alla lettura del successivo TS; a quel punto il final concentrator passa a svuotare il barrel1 successivo, dando in uscita di nuovo TS+B1 address (del nuovo barrel) seguito da tutti i dati di quel barrel e di quel TS.
A causa della necessit`a di svuotare i barrel1 sequenzialmente, aspettando inoltre la parola di TS successivo prima di passare a svuotare un altro barrel1, la loro lunghezza deve essere adeguata. Dalle ultime simulazioni condotte si `e notato che il riempimento massimo dei barrel per i rate di hit attesi si aggira sulle 40 parole. La loro lunghezza quindi sar`a probabilmente fissata a 64. 31
2.5
Lo slow control e il register file
Lo slow control gestisce la lettura e la scrittura del Register File tramite un’interfaccia seriale I2 C che costituisce una via di comunicazione bidirezionale tra il chip e il mondo esterno. Questo sistema di comunicazione richiede solo due linee, una per il clock (SCL) e una per il dato (SDA); il suo principale pregio `e la facilit`a di implementazione, il suo principale difetto `e la velocit`a di trasmissione. In ogni caso il compito del sistema I2 C in questo progetto non `e gestire l’uscita dei dati, ma l’inizializzazione e il controllo del funzionamento del chip: la velocit`a di trasmissione della linea non `e quindi un parametro critico. Il Register File `e composto da 32 registri da 16 bit, una met`a dei quali sono Read Only, l’altra met`a Read/Write, per un totale di 16x2x16=512 bit di memoria. Sui registri RW `e possibile impostare parametri di configurazione o inviare comandi al chip. Ecco una lista dei 16 registri RW con una breve spiegazione della funzione di ognuno. Indirizzo 0x0 (RW0)
Nome Command Register
Valore predefinito 0x0000
Questo `e un registro molto particolare, quando viene scritta una parola qui, una FSM implementata dallo Slow Control la interpreta ed esegue il comando. I comandi validi sono: • 0x0002 Load Mask: questo comando serve a caricare le maschere, memorizzate all’interno del chip in uno shift register per ogni sottomatrice con un bit per ogni macropixel. Quando il chip riceve questo comando inserisce gli 8 bit del registro “Operando” (0x1 RW1) sugli shift register delle maschere tramite un’operazione di push. • 0x0003 Reset Time Counter: questo comando resetta il contatore a 8 bit dei Time Stamp • 0x0004 Cycle Test Scan: questo comando attiva una sequenza di test della catena di readout che stimola gli ingressi degli sparsificatori con dei dati predefiniti. Se si osserva in uscita dal chip la sequenza predefinita allora il test `e andato a buon fine. Indirizzo 0x1 (RW1)
Nome Operand
Valore predefinito 0x0000 32
Questo registro contiene l’operando richiesto da certi comandi (ad esempio la maschera da caricare con il comando Load Mask); deve essere scritto sempre prima del comando. Indirizzo 0x2 (RW2)
Nome Config0
Valore predefinito 0x00C0
Questo registro contiene diverse flag e settaggi del chip. Si divide in: Bit del campo Config0[15:14] Config0[13:12] Config0[11:10] Config0[9:6] Config0[5:4] Config0[3:2] Config0[1] Config0[0]
Nome del campo inutilizzato Phase select RO 1 Phase select RO 0 Rate Monitor range Concentrator Operating Mode Clock multiplier Calibration mode Activate MP
Valore predefinito “00” “00” “00” “0011” “00” “00” “0” “0”
I campi Phase select controllano il delicato passaggio dal dominio del RDclk a quello del fast clock. Tramite questi campi `e possibile impostare infatti la fase (espressa in periodi di fast clock) con cui i Barrel di livello 1 devono campionare i dati sugli ingressi. Il Rate Monitor range seleziona quale range di bit del contatore da interno al chip “global rate” si intende leggere nel registro RO3. Il Concentrator Operating Mode serve per selezionare la modalit`a di funzionamento del concentrator; deve rimanere sempre fisso a “00”. Il Clock multiplier serve per comunicare al readout il rapporto tra RDclk e fast clock (valori possibili “00”⇒ 1 “01”⇒ 2 “10”⇒ 3 “11”⇒ 4). Calibration mode `e normalmente 0 e deve essere settato a 1 solo nel caso di run di calibrazione del chip; in questo caso il readout segue una particolare modalit`a di funzionamento creata specificatamente per i run di calibrazione. Il bit Activate MP infine comanda l’attivazione o meno dei macropixel, viene tenuto a zero nella fase iniziale di reset per essere quindi acceso a chip pronto. Indirizzo 0x3 (RW3)
Nome Config1
Valore predefinito 0x0000
Nome Flush Timeout
Valore predefinito 0x0100
Attualmente inutilizzato. Indirizzo 0x4 (RW4)
33
Il valore di 16 bit salvato su questo registro costituisce un unsigned utilizzato dal final concentrator come timeout. Questo numero indica dopo quanti cicli di fast clock il final concentrator deve passare a svuotare il barrel1 successivo in mancanza di uno Start of Scan. Indirizzo 0x5 (RW5) 0x6 (RW6) 0x7 (RW7) 0x8 (RW8) 0x9 (RW9) 0xA (RW10) 0xB (RW11) 0xC (RW12) 0xD (RW13) 0xE (RW14) 0xF (RW15)
Nome inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato inutilizzato
Valore predefinito 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
I registri RO sono usati per leggere alcuni valori di variabili e contatori interni al chip; eccone una lista: Indirizzo 0x0 (RO0)
Nome Mask Counter 0
0x1 (RO1)
Mask Counter 1
0x2 (RO2) 0x3 (RO3) 0x4 (RO4) 0x5 (RO5) 0x6 (RO6) 0x7 (RO7) 0x8 (RO8) 0x9 (RO9) 0xA (RO10) 0xB (RO11) 0xC (RO12) 0xD (RO13) 0xE (RO14) 0xF (RO15)
Error Flags Rate Counter BC lost Counter 0 BC lost Counter 1 BC lost Counter 2 BC lost Counter 3 B1 Filling Level 0 B1 Filling Level 1 B1 Filling Level 2 B1 Filling Level 3 B1 Mean Filling Level 0 B1 Mean Filling Level 1 B1 Mean Filling Level 2 B1 Mean Filling Level 3 34
Funzione Contengono dei contatori che indicano il numero di maschere che sono gi`a state inserite sugli shift register. Flag di eventuali errori. Rate di hit sul chip. Contatori di BC persi a causa del riempimento della MP FIFO. Di solito sono a 0. Livello di riempimento istantaneo dei Barrel1.
Livello di riempimento medio dei Barrel1.
I mask counter permettono di controllare che il caricamento delle maschere sia andato a buon fine. Il Rate Counter costituisce una finestra di 16 bit sul segnale interno di 32 bit “global rate” che riporta il rate di hit a cui `e sottoposto il chip. La finestra di 16 bit pu`o essere spostata grazie ai settaggi in Config0[9:6] (RW2). I BC lost Counter (uno per ogni readout) riportano il numero di eventuali BC persi. Questo avviene quando arriva un fronte di salita del BC clock ma la MP FIFO `e piena e non pu`o salvare il TS e la mappa dei macropixel da leggere. Un evento del genere costituisce un grave problema ma il chip `e stato progettato con ampi margini di sicurezza: ai rate attesi e con i clock alle frequenze di progetto non si hanno mai BC lost.
35
36
Capitolo 3 Codice e Sintesi In questo capitolo `e presentata pi` u nel dettaglio la realizzazione del chip: la struttura del codice VHDL, i sistemi implementati per simulare il chip ed i risultati della sintesi. Sono riportate inoltre alcune considerazioni di carattere generale sulle prestazioni del chip, i suoi limiti e le prospettive future.
3.1
Il codice VHDL
Tutte le entit`a logiche presentate nel precedente capitolo sono state implementate in linguaggio VHDL. Lo schema gerarchico delle entit`a (o dei file VHD) `e visibile in figura 3.1. La top entity `e chiamata A6TOP ed istanzia tutti i componenti del chip: la matrice, i 4 readout, il Final concentrator e lo Slow Control. A6TOP inoltre implementa il contatore global rate, gia visto in precedenza. Lo Slow Control a sua volta istanzia un componente I2C interface che si occupa delle comunicazioni sull’interfaccia I 2 C, un register file con 32 registri da 16 bit e 4 shift register (uno per ogni sottomatrice) sui quali sono memorizzate le maschere. Nell’albero a destra in figura 3.1 `e riportata la struttura dei readout. Ogni readout fa uso di uno sweeper che gestisce la scansione della matrice istanziando a sua volta un Time Counter (contatore di Time Stamp) e una MP FIFO (su cui vengono salvati TS e la mappa dei macropixel da leggere ad ogni fronte di salita di BC clock). Il readout istanzia anche i 4 sparsificatori che ricevono i dati uscenti dalla sottomatrice, i 4 barrel2 che vengono riempiti dagli sparsificatori, il concentratore e un barrel1 che raccoglie tutti i dati per farli uscire ordinati temporalmente verso il Final concentrator. Poich`e le specifiche sono molto variabili e sempre in evoluzione `e necessario avere un codice VHDL molto flessibile. A questo scopo il codice `e stato 37
Figura 3.1: gerarchia delle entit`a nel codice VHDL. La top entity `e A6TOP. Nell’albero di destra viene riportata la struttura dei readout. interamente parametrizzato. Nel package del progetto sono dichiarati tutti i parametri che vengono richiamati negli altri file VHD, tra questi: il numero di sottomatrici sull’asse x, il numero di sottomatrici sull’asse y, le dimensioni di una sottomatrice, le dimensioni di un macropixel, la dimensione y delle Zone, il numero di sparsificatori, la larghezza in bit del Time Stamp, la profondit`a dei barrel di livello 1 e 2.
3.2
Le simulazioni ModelSim
Durante tutte le fasi di progetto si `e simulato il funzionamento del chip con ModelSim1 . Con una piccola modifica nel package si pu`o cambiare, anche profondamente, l’architettura del chip. Grazie a ci`o `e stato possibile fare 1
le specifiche di progetto hanno subito diverse modifiche proprio in seguito a simulazioni che hanno indicato su quali fronti era meglio orientarsi
38
simulazioni ad ampio spettro variando i valori dei parametri su pi` u fronti e trovando la conformazione ottimale. Non avendo a disposizione dei dati reali, per le simulazioni del chip si `e fatto uso di una matrice simulata: un’entit`a con la stessa interfaccia della matrice che sar`a poi realizzata. Le hit nei pixel della matrice simulata sono generate casualmente con un rate impostabile nel SimPackage2 e con un clock pi` u veloce del RDclk e sfasato rispetto ad esso per simulare meglio il caso reale in cui le hit sono generate in modo asincrono. Sul SimPackage sono inoltre impostabili i periodi di tutti i clock, la durata della fase di init, e la durata della simulazione. La matrice `e simulata in modo altamente realistico. Sono stati realizzati numerosi testbench in VHDL per simulare il funzionamento di varie parti del chip, come ad esempio la matrice simulata, lo slowcontrol, il readout, lo sweeper. Ogni testbench `e costituito da un’entit`a VHDL che istanzia tutte le componenti del chip da testare e genera i loro ingressi. Osservando le forme d’onda dei segnali su ModelSim `e possibile individuare eventuali malfunzionamenti e correggerli. Esiste anche un testbench “finale” che simula l’intero chip (attraverso l’entit`a A6TOP) e genera tutti i segnali di inizializzazione. Questo testbench salva tutti i dati che passano sui barrel di livello 2, i barrel di livello 1 e il bus di uscita su file diversi. Questi dati sono poi confrontati da un programma C++ per individuare eventuali discrepanze o perdite. Questo testbench inoltre genera un report costituito da un file di testo a cui vengono aggiunte delle righe ad ogni simulazione lanciata. In figura 3.2 `e possibile osservare il report di una simulazione. Vengono riportati tutti i dati caratteristici della simulazione: RUN NUMBER che identifica univocamente la simulazione, versione del codice, frequenze dei clock, dimensioni barrel, dimensioni della MP FIFO (MP TS Buffer depth), granularit`a e durata della simulazione e rate di hit, dimensioni matrice e macropixel, dimensione delle zone, profondit`a dei barrel etc... Sono riportati inoltre svariati valori calcolati dal testbench stesso, come il riempimento medio e massimo dei barrel, contatore dei BC lost, numero di SOS letti dai B2 e dai B1 (che devono essere gli stessi), numero dei dati in formato TS in uscita dal chip, il Mean Sweeping Time che riporta il tempo medio di scansione della matrice (non deve mai essere superiore al periodo del BC clock altrimenti si hanno BC lost) e informazioni sul diversi tipi di efficienze. La yet hit efficiency `e una parte della latch efficiency (gi`a incontrata nella sezione 1.1) dovuta alle particelle 2
un package per tutto ci` o che serve solo ai fini delle simulazioni e non viene sintetizzato
39
Figura 3.2: una porzione del file di report relativa ad una simulazione. non rivelate a causa del loro passaggio attraverso un pixel gi`a colpito e non ancora letto e resettato. La frozen efficiency `e la seconda parte della latch efficiency e tiene in considerazione le inefficienze dovute alle particelle non rivelate in quanto i macropixel attraverso i quali sono passate sono congelati dalla logica di readout e devono ancora essere letti e resettati. Le readout efficiency@B1/B2 fanno parte della efficienza ATR (all the rest) che solitamente `e al 100% come in questa simulazione. Tutti i valori sono corretti e le efficienze superano di gran lunga il 98%. Le simulazioni sono avviate tramite script appositi che dicono a ModelSim quali file compilare, la durata e la granurarit`a della simulazione, di quali segnali riportare le forme d’onda e in che formato. I testbench salvano i dati rilevanti delle simulazioni su file di testo che vengono quindi analizzati da un programma scritto in C++. Grazie all’implementazione di tutto questo sistema di simulazione in gran parte automatizzato `e stato possibile eseguire un grande numero di simulazioni di ogni tipo variando a piacimento tutti i parametri per correggere e migliorare di volta in volta il readout. 40
3.3
APSEL5D
Un chip chiamato APSEL5D `e stato sottomesso alla fonderia nel mese di settembre 2009. APSEL5D `e composto solo da una porzione, per quanto riguarda la matrice, del chip APSEL6D; APSEL5D `e costituito da due sottomatrici 64x32 affiancate sull’asse x per formare una matrice 128x32 (4096 pixel totali). I macropixel hanno dimensione 2x8 e le Zone hanno altezza 4. Il sistema di readout invece `e del tutto identico all’originale, in modo da poterlo testare al meglio. La riduzione del numero di pixel sull’asse delle x (da 80 a 64) comporta una riduzione del numero di colonne da leggere da parte dello sweeper ed `e implementata proprio in questa entit`a. La riduzione del numero di pixel sull’asse y (da 256 a 32) `e stata realizzata dimezzando la dimensione delle Zone e collegando solo due Zone ad ogni sparsificatore (che invece ne potrebbe gestire 8). Rimangono quindi 4 gli sparsificatori, ognuno dei quali riceve i dati di due Zone da 4 righe per un totale di 4∗2∗4 = 32 righe. Questi tagli sono stati effettuati tramite un’entit`a di wrap che collega due ingressi di ogni sparsificatore alla matrice e collega gli altri 6 ingressi a massa. Da parte del readout `e come se avesse collegata una sottomatrice 64x256 in cui per`o sette ottavi delle righe sono spente e non danno dati in uscita.
Figura 3.3: schema dei tagli effettuati all’ingresso degli sparsificatori.
41
Questo chip ha un RDclk con una frequenza di 40 MHz, un BC clk a 1 MHz e un fast clock a 40, 80, 120 o 160 MHz. Le frequenze, leggermente inferiori rispetto a quelle previste per il chip APSEL6D, sono giustificabili a causa delle dimensioni molto ridotte della matrice. Per i rate previsti, queste frequenze garantiscono larghissimi margini. In effetti il chip che `e stato realizzato tester`a principalmente le funzionalit`a del readout e meno le sue prestazioni. Una volta sistemati i file VHDL il processo di sintesi procede con Synopsis, un programma a cui vengono dati in ingresso i file VHD delle varie entit`a, dele restrizioni e delle specifiche di funzionamento (per esempio frequenze di lavoro, limiti geometrici, etc...) e delle librerie di standard cells fornite dalla fonderia che deve realizzare il chip. Synopsis sintetizza il tutto in una netlist VHDL che contiene le istanze delle celle logiche standard utilizzate e descrive come sono connesse. A questo segue un processo di place & route che da in uscita una netlist in Verilog, che descrive anche i ritardi dovuti alle linee e alle capacit`a parassite, e uno schema del layout del chip (figura 3.4). Synopsis infine d`a in uscita eventuali errori o problemi di temporizzazioni incontrati. Dopo diverse difficolt`a si `e giunti a una versione finale del chip che non d`a alcun errore in fase di sintesi.
Figura 3.4: layout di APSEL5D. Ai lati sinistro e destro sono posti i pads del chip; la zona rettangolare sulla destra `e costituita dalla matrice di pixel; la zona rettangolare pi` u piccola sulla sinistra `e quella occupata dal circuito di readout.
Complessivamente il chip APSEL5D occupa un’area di circa 9, 5 ∗ 1, 7 = 16, 15mm2 , buona parte della quale `e occupata dalla matrice (4096 ∗ 0, 052 = 42
10, 24mm2 ). Il sistema di readout (due in totale, uno per ogni sottomatrice) occupa un’area di circa 2, 25mm2 . L’area del readout quindi `e notevolmente pi` u piccola dell’area della matrice, inoltre bisogna considerare che questo readout `e uguale a quello di APSEL6D, con l’unica differenza che in quest’ultimo ci sono 4 sottomatrici (e quindi 4 readout) invece di 2. Presumibilmente quindi APSEL6D avrebbe un’area occupata dalla matrice di 81920 ∗ 0, 052 = 204, 8mm2 e un’area occupata dal readout di circa 4, 5mm2 .
Figura 3.5: ingrandimento del layout del readout.
Nella seguente tabella sono riportati i costi in termini di Flip Flop e di gates logici delle singole entit`a del readout. Componente Barrel2 Barrel1 Concentrator Final Concentrator I2C interface Mask register Scan buffer Register file Sparsifier Sweeper Totale TOP wrap
# Flip Flop # gates 140 1400 1000 6700 230 1000 120 370 130 600 520 2300 4700 9600 1000 2700 160 1000 7200 16200 15000 41000 10000 50000 43
La sintesi della top entity (TOP wrap) utilizza meno celle rispetto alla sommatoria delle celle dei singoli componenti in quanto il sintetizzatore ottimizza il chip tagliando eventuali parti ridondanti che svolgono lo stesso compito. Per la precisione, il readout `e composto in definitiva di 58636 standard cells.
3.4
Simulazioni post-sintesi e post-layout
In seguito alla sintesi del chip `e stato possibile, grazie alla netlist generata da Synopsis, effettuare delle simulazioni post-sintesi. La netlist `e costituita da un file VHD che istanzia tutte le standard cells stabilite dal sintetizzatore e le interconnette nel modo opportuno. Grazie a ModelSim `e possibile simulare la netlist utilizzando le librerie fornite dalla fonderia (che contengono le informazioni sulle celle logiche instanziate dalla netlist). In questo tipo di simulazioni, a differenza dalle precedenti, non si simula solo la logica, ma sono presenti anche informazioni sui ritardi introdotti dalle celle logiche. Non `e pi` u una simulazione puramente logica ma utilizza specifiche di componenti reali. Le simulazioni post-sintesi hanno dato ottimi risultati confermando il funzionamento del chip.
Figura 3.6: immagine tratta da schermata modelsim in seguito ad una simulazione post-sintesi.
Con la netlist in verilog prodotta da Synopsis conseguentemente al place & route `e possibile effettuare ulteriori simulazioni dette post-layout. Una volta stabilito il layout del chip ad ogni cella `e riservato uno spazio preciso e le linee hanno dei percorsi e delle lunghezze determinate. Gli ulteriori fattori introdotti in queste simulazioni quindi sono i ritardi delle linee e le capacit`a parassite. ModelSim pu`o svolgere anche simulazioni “miste” che utilizzano sia file Verilog che VHDL e questo permette di simulare la netlist in Verilog 44
sfruttando lo stesso testbench in VHDL sviluppato precedentemente. Anche queste simulazioni hanno dato esiti positivi e costituiscono un’ulteriore riprova del funzionamento del chip.
3.5
Considerazioni generali sul chip
confronto con altri chip a matrici di pixel con readout integrato.
45
Conclusioni Nella prima fase del lavoro di tesi ho studiato il chip APSEL4D e il suo funzionamento, i suoi limiti e le strade scelte per superarli. Ho preso familiarit`a con il progetto di APSEL6D e con le innovazioni in termini architetturali del chip: i macropixel erano 4x4 e sono stati portati a 2x8 per ottimizzare i tempi di scansione, la fase di reset del macropixel letto `e stata integrata nel processo di lettura mentre prima occupava un ulteriore ciclo di clock, il sistema di scansione `e stato aggiornato implementando la MP FIFO. Rimaneva ancora da risolvere la questione dell’output del chip sul bus. A partire dal salvataggio dei dati sui Barrel2, passando per i Barrel1 e giungendo all’output bus, la banda passante disponibile si assottiglia, era quindi necessario avere uno stadio di uscita che non costituisse un collo di bottiglia eccessivo per il chip. I 16 Barrel2 di APSEL6D possono sopportare un rate di dati in ingresso di 146 Gbit/s, ma vengono svuotati al rate massimo di 18 Gbit/s. I 4 Barrel1 possono ricevere in ingresso un rate massimo di 18 Gbit/s e vengono svuotati dal Final concentrator. I B1 fungono da buffer di uscita e separano il readout dall’output stage. Per utilizzare al meglio la banda in uscita si `e scelto di suddividere il singolo dato in due parti: una costituita dall’indirizzo del B1, l’altra con le rimanenti coordinate spaziali e il pattern di zona. Per ottenere questa separazione `e stato necessario svuotare sequenzialmente i B1 per garantire un certo ordine in modo da portare in uscita l’indirizzo del B1 e di seguito tutte le sue hit. Questa scelta ha implicato una maggiore profondit`a dei B1 e il fast clock esteso anche a questi oltre che al Final concentrator. I due bit di B1 address sono stati inseriti nei bit liberi della parola di Time Stamp. Questa formattazione dei dati applicata dallo stadio di uscita realizzato da me ha permesso di conseguire una riduzione del volume di dati in output del 7%. Una procedura identica potrebbe essere adottata anche al livello dei B2 e porterebbe ad un’ulteriore riduzione del 3,75% del volume di dati ma implicherebbe un clock pi` u veloce e una maggiore profondit`a per i B2 che si rifletterebbero in un consumo maggiore e un’area pi` u grande. Si `e quindi scelto di limitare le modifiche ai soli B1. Il massimo rate di dati in uscita dal chip dipende solo ed esclusivamente dalla banda passante del bus (a quale frequenza pu`o lavorare) e quindi `e indipendente dal chip stesso. Le migliorie apportate da parte dello stadio di uscita consistono nell’aver addensato i dati rimuovendo ridondanze per 46
sfruttare al massimo la banda disponibile e nell’utilizzare un clock con frequenza regolabile. Con un fast clock a 180 MHz vengono inviati in uscita circa 4 Gbit/s che nella migliore delle ipotesi (alto livello di clusterizzazione) corrispondono a circa 1,5 Ghit/s. Considerato il rate di hit atteso su APSEL6D che `e di circa 204 Mhit/s il risultato conseguito `e eccellente: lo stadio di uscita non costituisce affatto un collo di bottiglia e pu`o sopportare rate di hit anche 7 volte maggiori di quello previsto. Durante il lavoro di tesi ho implementato interamente lo stadio di uscita, ho modificato il funzionamento dei Barrel 1, ho aggiornato il codice di tutta la catena di uscita del readout implementando nuove funzioni nel package, ho riorganizzato la gerarchia delle istanze nei file VHD e ho implementato un testbench, ho aggiornato il generatore di report di simulazione e ho simulato e testato ogni modifica effettuata. L’obiettivo di questa tesi era lo sviluppo di uno stadio di uscita per un readout digitale veloce di matrice a pixel integrato su ASIC. L’architettura di APSEL6D verr`a testata tramite il chip APSEL5D che ha il medesimo readout. Il mio lavoro di tesi ha portato alla realizzazione di uno stadio di uscita a frequenza regolabile che comprime i dati diminuendo il loro volume del 7%. L’obiettivo di questa tesi `e stato raggiunto e le simulazioni pre-sintesi, post-sintesi e post-layout confermano il funzionamento del chip. Quando sar`a disponibile APSEL5D, l’architettura del readout e lo stadio di uscita di APSEL6D potranno essere testati fisicamente.
47
Bibliografia [1] Quartus II User Guide, Altera. [2] ModelSim User’s Manual, Mentor Graphics. [3] A. Gabrielli, APSEL4D User Guide, SLIM5 Collaboration, 2007. [4] A. Gabrielli et al., “Development of a triple well cmos maps device with in-pixel signal processing and sparsified readout capabilities,” Nuclear Instruments and Methods in Physics Research, vol. A581, pp. 303–305, 2007. [5] G. Batignani et al., “Recent developments in 130 nm cmos monolithic active pixel detectors,” Nuclear Physics, vol. B172, pp. 20–24, 2007. [6] G. Rizzo, “Recent development on triple well 130 nm cmos maps with in-pixel signal processing and data sparsification capability,” 2007 IEEE Nuclear Science Symposium Conference Record, pp. 927–930, 2007. [7] A. Gabrielli et al., “Design of on-chip data sparsification for a mixedmode maps device.” Praga (CZ): 12th Workshop on Electronics for LHC and future Experiments, 3-7 Settembre 2007, pp. 443–444. [8] G. Rizzo et al., “Development of deep n-well maps in a 130 nm cmos technology and beam test result on a 4k-pixel matrix with digital sparsified readout,” 2008 IEEE Nuclear Science Symposium Conference Record, pp. 3242–3247, 2008. [9] A. Gabrielli et al., “A 4096-pixel maps device with on-chip data sparsification,” Nuclear Instruments and Methods in Physics Research, vol. A604, pp. 408–411, 2009. [10] A. Gabrielli et al., “On-chip fast data sparsification for a monolithic 4096-pixel device,” IEEE Transaction on Nuclear Science, vol. 56, no. 3, pp. 1159–1162, 2009. 48
[11] F. M. Giorgi, “Applications of high speed configurable logic devices in modern particle physics experiments,” Ph.D. dissertation, Universit`a degli Studi di Bologna, Dipartimento di Fisica, 2009. [12] A. Bagnari, “Test di efficienza del chip apsel4d,” Relazione di tirocinio, 2009. [13] SLIM5 Collaboration, http://www.pi.infn.it/slim5. [14] VIPIX (Vertically Integrated PIXels), http://eil.unipv.it/vipix.
49