Я использовал эту конфигурацию несколько раз. Я стараюсь избегать этого, но иногда это полезно для тестирования whitebox.
Предположим, у меня очень большая сущность + архитектура FooMachine, и я хочу написать серию модульных тестов whitebox, относящихся к сигналам внутри FooMachine. В идеале FooMachine должен быть разделен на несколько компонентов, и я бы написал для них тесты «черного ящика», но я унаследовал некоторые действительно массивные архитектуры, в которых я не мог с экономической точки зрения оправдать время, необходимое для рефакторинга, когда требовались только незначительные изменения. Что я сделаю, это определю компонент в FooMachine
component Dummy is
end component Dummy;
и экземпляр
dummy_g : Dummy;
Затем в модульном тесте сигнала x
в FooMachine
я напишу сущность + архитектура
entity TestDummy is
port (
x : in std_logic
);
end entity;
architecture Arch of TestDummy is
...
end Arch;
и конфигурация
configuration conf of ... is
...
for all : FooMachine
...
for all : Dummy
use entity work.TestDummy(Arch)
port map (x => x);
end for;
end for;
...
end configuration;
И тогда я могу написать свои утверждения в TestDummy
.
Опять же, это не то, как я предпочитаю писать свои модульные тесты, но были времена, когда это было лучшим решением для неудачной проблемы.