Jednym ze sposobów, który nie korzysta z konfiguracji:
pamiętać, że można utworzyć kilka architektur dla każdego podmiotu.
Dlatego można instancję jednostkę w testbench jak
Controller_1 : entity work.DRAM_controller(simple)
port map (...
lub
Controller_2 : entity work.DRAM_controller(rtl)
port map (...
gdzie "proste" i "rtl" to dwie architekturach. W tym celu konieczne może być posiadanie encji i obu architektur w różnych plikach; Narzędzia Xilinx nie radzą sobie z rzadkimi przypadkami (kiedyś powiedziały mi, że konfiguracje nie są jednostkami projektowymi!).
Następnie można utworzyć instancję kontrolera DRAM w dowolnej architekturze na stole testowym.
Jak mówi vermaete, trzeba również przetestować uproszczoną architekturę. Jednym ze sposobów jest przeprowadzenie testów jednostkowych na nim poprzez utworzenie instancji obu kontrolerów w innym testbench, po jednym przy każdej architekturze i porównanie ich wyników dla każdej operacji.
Co ciekawe, przykład Ashendena do bezpośredniej instancji obiektu (Przewodnik projektanta do VHDL ch 5.4, p.136 w wydaniu z 1996 roku) to kontroler DRAM!
EDIT: (był to komentarz, ale robi się zbyt długo)
Do testów jednostkowych, oba kontrolery mogą być instancja w testbench, i wszystko jest dobrze.
Dla testu systemowego, nie zrozumiałem, że kontroler DRAM był wewnątrz testowanego egzemplarza (projekt najwyższego poziomu) - chcesz jedno wystąpienie (prawdziwe) dla synth i prostych testów DRAM, i inne (proste) dla pełne testy DRAM. Tak, konfiguracja jest prawidłowym i najczystszym sposobem na to. Utwórz instancję kontrolera ENTITY w projekcie najwyższego poziomu (UUT) i wybierz architektury w konfiguracji.
Jednak istnieje mniej czysta alternatywa, jako plan awaryjny w przypadku, gdy konfiguracje nie działają. Utwórz 2 architektury dla jednostki najwyższego poziomu; różnią się TYLKO w łuku wybranym dla kontrolera. Możesz wybrać architekturę podczas tworzenia instancji najwyższego poziomu w testbench. Jest to jednak problem, ponieważ musisz zsynchronizować dwie wersje.
Czy istnieje _need_ mieć mniejszy/szybszy kontroler DRAM? Czy istnieje symulator lub jezioro mocy obliczeniowej? Jeśli nie, nie podejmę wysiłku i nie podejmę ryzyka. – vermaete
Interesujące pytanie: do tego właśnie służą konfiguracje! Jednak korzystanie z nich w ten sposób - lub nawet w ogóle - jest zaskakująco rzadkie i dlatego podatne na dziwne błędy narzędzi. Niezależnie od tego, czy odpowiem, czy nie, oglądam ten z zainteresowaniem! –
@Vermaete: jeśli kontrolerem DDR jest Xilinx MIG: nalega na sekwencję kalibracji trwającą 50 sekund, zanim pozwoli na uruchomienie jednego użytecznego cyklu symulacji. Połącz to z innym swoim rdzeniem, który (szaleńczo) symuluje tylko na poziomie bramki i czeka cię pół godziny na symulację. To nie może się liczyć jako "potrzeba", ale jest blisko! –