Progettazione RTL: array sistolici
Costruisci un array parametrizzato per la moltiplicazione di matrici partendo dall'aritmetica MAC con segno, dallo sfasamento degli ingressi e dagli elementi di elaborazione, poi verifica suddivisione in blocchi, controllo del flusso e comportamento esatto fronte per fronte.
Che cosa imparerai
- Associare indici di matrici e prodotti scalari agli elementi di elaborazione
- Scegliere le larghezze del prodotto con segno, dell'accumulatore e dell'uscita a virgola fissa
- Pianificare array 2×2 e N×N con uscite stazionarie e ingressi sfasati
- Specificare valid, tag, stalli e reset con un contratto esatto sui fronti
- Verificare confini dei blocchi, banda e progetto finale con uno scoreboard
Prima di iniziare
Gli esercizi nel browser usano modelli didattici e non compilano né eseguono HDL. Per eseguire il codice separatamente, segui la guida Digital Design Studio del tuo sistema operativo e accedi quando l’operazione lo richiede.
Installazione e primo avvio ↗ · Download ↗Programma
- Matrici e contratti aritmetici
- Associa i prodotti scalari agli elementi di elaborazioneConcetto
Separa gli indici di riga, colonna e riduzione e calcola una piccola matrice di riferimento.
- Prodotti con segno e larghezza dell'accumulatoreConcetto
Ricava la larghezza dell'accumulatore dall'intervallo peggiore degli operandi.
- Politica di uscita a virgola fissaConcetto
Separa scala di ingresso, arrotondamento dei negativi, saturazione e ritorno modulare.
- Verifica il contratto aritmeticoVerifica
Scegli la larghezza dell'accumulatore usando la lunghezza completa della riduzione.
- Elementi di elaborazione e token validi
- Il contratto a un singolo fronte di salitaConcetto
Fissa numerazione dei fronti, inoltro registrato, accumulo e priorità di inizializzazione.
- Laboratorio: elemento di elaborazione MAC con segnoEsercitazione
Usa un modello autonomo per verificare operandi validi, stalli e azzeramento.
- Flag valid, tag e svuotamentoConcetto
Distingui zero numerico, bolle e token appartenenti a un altro lavoro.
- Verifica il controllo degli elementi di elaborazioneVerifica
Identifica lo stato che deve rimanere invariato durante una pausa.
- Array e pianificazione degli ingressi
- Flusso con uscite stazionarie e altri flussi di datiConcetto
Confronta memorizzazione e trasporto identificando ciò che rimane nel PE.
- Laboratorio: array 2×2 con ingressi sfasatiEsercitazione
Modella ritardi di inoltro di un fronte e verifica ogni accumulatore intermedio.
- Scala a N×N e conta i fronti di completamentoConcetto
Parametrizza la dimensione spaziale N separatamente dalla lunghezza di riduzione K.
- Verifica pianificazione e completamentoVerifica
Distingui l'inserimento finale dalla disponibilità del risultato finale.
- Suddivisione in blocchi, banda e controllo del flusso
- Suddivisione in blocchi e riempimento ai confiniConcetto
Associa matrici più grandi a una griglia più piccola e gestisci riempimento con zeri e maschere di uscita.
- Banda e utilizzo utileConcetto
Separa la capacità MAC di picco dai costi di riempimento, completamento del transito, padding e memoria.
- Laboratorio: contropressione e resetEsercitazione
Esegui pausa globale, conservazione del risultato e reset di un lavoro interrotto.
- Verifica riempimento e bandaVerifica
Distingui la validità dell'operando dalla validità dell'indirizzo del risultato.
- Verifica e progetto finale
- Scoreboard e invariantiConcetto
Verifica termini, tag, fronti e trasferimenti di uscita oltre alla matrice finale.
- Progetta prove con segno e ai limitiConcetto
Combina limiti aritmetici, di forma e di controllo oltre a un singolo esempio normale.
- Progetto finale: modello di verifica N×N suddiviso in blocchiEsercitazione
Combina N e K arbitrari con riempimento e pause e confronta con un riferimento indipendente.
- Revisione dell'integrazione RTL ed estensioniConcetto
Collega il modello didattico alle interfacce RTL e alle prove di verifica.