Altifigence Academy
Progettazione digitaleGratuito · Fondamenti

Fondamenti di progettazione RTL

Descrivi circuiti digitali in SystemVerilog. Studia tipi, larghezze, segno, logica combinatoria e sequenziale, moduli, parametri e generate. Verifica limiti e difetti con testbench indipendenti, poi collega impulsi periodici a un accumulatore e conserva risultati riproducibili.

SystemVerilogProgettazione di moduliTestbench
Il mio apprendimento

Che cosa imparerai

  • Specificare larghezza, segno, driver, istante di validità e valore di reset di ogni segnale.
  • Separare assegnazioni combinatorie complete dagli aggiornamenti di stato su clock.
  • Costruire strutture statiche con parametri e generate e verificare configurazioni limite.
  • Comporre moduli con collegamenti nominati e funzioni.
  • Scrivere stimoli senza race condition e modelli di riferimento indipendenti.
  • Distinguere prove di compilazione, simulazione, sintesi ed esecuzione DDS.

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

  1. RTL e contratti dei moduli
    • RTL: descrivere circuiti concorrentiConcetto

      Distingui la sequenza del software dalla struttura hardware parallela e specifica stato, stato successivo e osservazione.

    • Segnali e porte: contratto di larghezza, direzione e tempoConcetto

      Leggere le interfacce distinguendo i criteri di verifica delle uscite combinatorie e di stato.

    • Moduli, porte e istanze: collegamenti come contrattiConcetto

      Componi moduli combinatori con porte nominate e verifica driver unico e gerarchia.

    • Verifica: uscita combinatoria e memorizzataVerifica

      Distingui cambio ingresso e osservazione del registro.

  2. Tipi, larghezze, segno ed espressioni
    • logic, wire, X/Z e larghezze espliciteConcetto

      Separa tipo, driver e memoria e verifica letterali, confronti, estensioni e valori ignoti.

    • Indici dei vettori, ordine dei bit e segnoConcetto

      Leggere il datapath separando numerazione, ordine seriale e interpretazione aritmetica.

    • Larghezze di slice, concatenazione e ripetizioneConcetto

      Costruire datapath calcolando larghezza complessiva e conservazione del valore.

    • Complemento a due, estensione del segno e overflowConcetto

      Distinguere interpretazione signed e overflow dell’addizione con formule e controesempi.

    • Verifica: intervallo ed estensioneVerifica

      Controlla insieme larghezze d'ingresso e uscita.

  3. RTL combinatorio completo e verifica
    • RTL combinatorio e assegnazioni completeConcetto

      Esprimere la stessa funzione con operatore condizionale e always_comb e trovare omissioni che generano latch.

    • Encoder e priorità: scegliere fra più richiesteConcetto

      Distinguere l’ipotesi one-hot dai risultati di un encoder prioritario: valid e selezione.

    • Verifica del MUX: esaustività e proprietàConcetto

      Verificare separatamente copertura combinatoria e memoria e minimizzare i controesempi.

    • Verifica del progetto: equivalenza della selezione e osservazioneVerifica

      Distinguere verifiche basate sulla sola tabella da quelle che richiedono osservazione del clock.

  4. Stato, assegnazioni e priorità del reset
    • Flip-flop, enable e priorità di controlloConcetto

      Definire mantenimento, caricamento e reset come stato successivo ed evitare clock gating involontario.

    • Assegnazioni non bloccanti e aggiornamento simultaneoConcetto

      Separare valori precedenti e successivi per leggere correttamente pipeline e contatori.

    • Contatori modulari, saturanti e impulso terminaleConcetto

      Progettare la gestione del massimo e il ciclo esatto del terminal count.

    • Laboratorio: reset, ritorno e invarianti del contatoreEsercitazione

      Confrontare ogni fronte con un riferimento e separare effetti di inizializzazione, reset e larghezza.

    • Verifica del progetto: larghezza, priorità e ritornoVerifica

      Valutare confini e controlli simultanei dalla specifica delle transizioni.

  5. Parametri e generazione di strutture statiche
    • parameter, localparam, $clog2 e configurazioni limiteConcetto

      Distingui ingressi di esecuzione e configurazioni e progetta larghezza e termine per N=1 e non potenze di due.

    • generate: costruire circuiti statici con cicliConcetto

      Usa genvar e generate-if per gerarchie nominate e controlla l'ordine delle lane.

    • function automatic ed espressioni riutilizzabiliConcetto

      Scrivi funzioni senza tempo simulato e verifica larghezza, segno e indipendenza del modello di riferimento.

    • Verifica: N=1 e larghezzaVerifica

      Separa larghezza minima e stati validi.

  6. Testbench e verifica indipendente
    • Campionamento e causalità nelle forme d’ondaConcetto

      Leggere le forme d’onda separando assestamento combinatorio, acquisizione e ordine degli eventi.

    • Laboratorio: un testbench che segnala i propri erroriEsercitazione

      Separa DUT, stimoli, modello di riferimento e controlli per reset, enable e ritorno senza race condition.

    • Piano di verifica, coverage e riferimenti indipendentiConcetto

      Distinguere test superati e specifica soddisfatta collegando confini, incroci e controesempi.

    • Debug del contatore e controesempi minimiConcetto

      Progettare test brevi che distinguano errori di reset, enable e ritorno.

    • Verifica: modelli di riferimento e race conditionVerifica

      Scegli valori attesi indipendenti e osserva dopo l’aggiornamento.

  7. Composizione di moduli e laboratorio integrato
    • Macchine a stati: separare stato, transizioni e usciteConcetto

      Costruire FSM da tabelle e confrontare Moore/Mealy, stati illegali e politica delle richieste.

    • Progetto integrato: rilevatore di 101 sovrappostiConcetto

      Applicare minimizzazione dello stato, validità, uscita registrata e verifica indipendente.

    • Ready/valid e buffer elastico da un postoConcetto

      Progettare trasferimenti senza perdite o duplicazioni e ingressi/uscite simultanei con arresti.

    • Pipeline moltiplicazione-addizione e allineamentoConcetto

      Suddividere ai registri mantenendo dati, valid e operandi ausiliari nella stessa transazione.

    • Laboratorio integrato: impulsi periodici e accumulatore abilitatoEsercitazione

      Specifica trasferimenti con valori precedenti e verifica pause, impulsi consecutivi e reset simultaneo.

  8. Diagnostica degli strumenti e portata dei risultati
    • Setup, hold e bilancio temporaleConcetto

      Separare cammini massimi e minimi e calcolare hold indipendentemente dalla frequenza.

    • Confini dei domini di clock e metastabilitàConcetto

      Comprendere i limiti della sincronizzazione a due stadi distinguendo bit, impulsi brevi e bus.

    • Compilazione, lint e sintesi: portata delle diagnosiConcetto

      Fissa sorgenti, top e linguaggio e distingui sintassi, larghezze, latch e funzione.

    • Registri di esecuzione e prosecuzione nel DDSConcetto

      Consegna sorgenti, ingressi, valori attesi, fallimenti e versioni per riprodurre il laboratorio.

    • Verifica finale: funzione e proveVerifica

      Distingui risultati locali e accettazione DDS gratuita.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.