Un modo che non fa uso di configurazioni:
Ricordate che è possibile creare diverse architetture per ogni entità.
Pertanto è possibile creare un'istanza di un'unità nel vostro banco di prova come
Controller_1 : entity work.DRAM_controller(simple)
port map (...
o
Controller_2 : entity work.DRAM_controller(rtl)
port map (...
dove "semplice" e "rtl" sono due architetture. A tale scopo, potrebbe essere necessario avere l'entità e entrambe le architetture in file diversi; Gli strumenti Xilinx non sono molto efficaci nella gestione di casi non comuni (una volta mi hanno detto che le configurazioni non erano unità di progettazione!)
Quindi è possibile creare un'istanza del controller DRAM con un'architettura in un banco di prova.
Come dice vermaete, devi anche testare l'architettura semplificata. Un modo è eseguire test unitari su di esso istanziando entrambi i controller in un altro banco di prova, uno con ciascuna architettura e confrontando i loro output per ciascuna operazione.
Stranamente l'esempio di Ashenden per l'istanziazione diretta dell'entità (Designer's Guide to VHDL ch 5.4, p.136 nella mia edizione del 1996) è un controller DRAM!
EDIT: (questo era un commento ma è sempre troppo lungo)
Per il test di unità, entrambi i controller possono essere istanziati nel banco di prova, e tutto va bene.
Per il test di sistema, non ho capito che il controller DRAM era all'interno dell'UUT (progettazione di livello superiore) - si desidera un'istanza (quella reale) per test di DRAM sintetici e semplici e un'altra (semplice) per test completi di DRAM. Sì, una configurazione è il modo corretto e più pulito per farlo. Crea un'istanza del controller ENTITY nel progetto di livello superiore (UUT) e seleziona le architetture in una configurazione.
Tuttavia esiste un'alternativa meno pulita, come un piano di fallback nel caso in cui le configurazioni non funzionino. Crea 2 architetture per l'entità di primo livello; differiscono SOLO nell'arco selezionato per il controller. È possibile selezionare un'architettura quando si crea un'istanza dell'entità di livello superiore nel banco di prova. È un dolore però, perché devi mantenere sincronizzate le due versioni.
C'è un _need_ avere un controller DRAM più piccolo/più veloce? C'è un limite nel simulatore o nel lago di potenza di calcolo? In caso contrario, non farei lo sforzo e/o correre il rischio. – vermaete
Interessante domanda: questo è esattamente ciò che le configurazioni sono per! Tuttavia, utilizzarli in questo modo - o addirittura a tutti - è sorprendentemente raro e quindi incline a bug di strumenti dispari. Sia che risponda o no, sto guardando questo con interesse! –
@Vermaete: se il controller DDR è Xilinx MIG: insiste su una sequenza di calibrazione della durata di 50us prima che ti consenta di eseguire un singolo ciclo utile di simulazione. Combinalo con un altro dei loro core che simula (follemente) solo a livello di gate e stai aspettando mezz'ora per simulazione. Quello non può contare come "bisogno" ma è vicino! –