Допустим, у меня есть объект, который выглядит следующим образом:
constant NULL_PORT : std_logic_vector(1 to 0);
entity some_verification_ip is
port (
write_port : in std_logic_vector := NULL_PORT;
read_port : out std_logic_vector -- Sized on connection
);
В одном тесте пользовательское тестируемое устройство выполняет только чтение и поэтому подключает только порт чтения, а порт записи получает размер отприсвоение по умолчанию константе NULL_PORT.
В другом тесте DUT пользователя только выполняет запись и подключает только порт записи, но вы получаете ошибку разработки, поскольку read_port не имеет размера.Таким образом, пользователю требуется dummy_signal в тестовом стенде (который не используется) просто для того, чтобы избежать этой ошибки.
Вы не можете выполнить присваивание: = для вывода, так как это начальное значение, и вы получите уточнениеошибка, когда порт подключен, поскольку ширина NULL_PORT не соответствует соединению порта пользователя.
Является ли фиктивный сигнал в тестовом стенде единственным способом получить размер?Изменяется ли это в VHDL 2018?
ПРИМЕЧАНИЕ. На самом деле мой Verification IP является моделью памяти AXI4, и в проекте разные части обрабатывают операции чтения и записи, поэтому разные каналы не нужны для всех тестов, нонеобходимы для более масштабных тестов, охватывающих операции чтения и записи.