Тестируемый проект написан на VHDL и использует такие неограниченные записи для своих портов:
type forward_stream is record
data : std_ulogic_vector;
-- further members
...
end record;
Эти порты теперь должны запускаться из тестовой среды systemverilog. Есть ли способ использовать тип записи vhdl для сигналов тестового стенда? Если да, то как мне ограничить запись в systemverilog?
Или мне нужно создать пакет VHDL, который ограничивает запись и предоставляет ее в качестве типа для использования в тестовой среде?
Поскольку поддержка HDL в значительной степени варьируется между инструментами, я спрашиваю, в частности, о questasim (старший брат modelsim, тот же производитель, предположительно, в некоторой степени совместимый с предыдущими версиями).
Обновлять
Я собрал следующее из руководства пользователя Questa SIM для 10.4:
- Запись сопоставляется со структурой / упакованной структурой (таблица 9-5).
- Подтипы не упоминаются в Таблице 9-5.
Я пытался:
- использование подтипа в системном Verilog для подключения к порту неограниченного типа
- использование подтипа в системном Verilog для подключения к порту неограниченного типа с ограничениями
- использование подтипа в системном Verilog для подключения к порту подтипа
- использование неограниченного типа (без ограничений) в системном Verilog для подключения к порту неограниченного типа с ограничениями.
Образец кода:
VHDL:
library IEEE;
use IEEE.std_logic_1164.all;
package module_crosslanguage_pkg is
type t is record
s : std_ulogic_vector(2 downto 0);
c : std_logic_vector;
end record;
subtype t_s is t(c(1 downto 0));
end package;
use work.module_crosslanguage_pkg.all;
entity dummy_test is
port(a : in t); -- 1.
port(a : in t(c(1 downto 0))); -- 2.
port(a : in t_s); -- 3.
port(a : in t(c(1 downto 0))); -- 4.
end entity;
architecture a of dummy_test is
begin
end;
Система Verilog
module modulebay_testbench();
import module_crosslanguage_pkg::*;
t_s testsignal;
t testsignal2;
dummy_test u(.a(testsignal)); -- 1., 2., 3.
dummy_test u(.a(testsignal2)); -- 4.
endmodule;
Ошибка всегда Fatal: (vsim-3362) The type of VHDL port 'a' is invalid for Verilog connection (1st connection).