Неограниченные записи VHDL в тестовых стендах system verilog

Тестируемый проект написан на 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.

Я пытался:

  1. использование подтипа в системном Verilog для подключения к порту неограниченного типа
  2. использование подтипа в системном Verilog для подключения к порту неограниченного типа с ограничениями
  3. использование подтипа в системном Verilog для подключения к порту подтипа
  4. использование неограниченного типа (без ограничений) в системном 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).


person ted    schedule 21.10.2016    source источник
comment
Это полностью вопрос Questasim. См. IEEE Std 1076-2008 14.2 Разработка иерархии проекта, параграфы 7 и 8 в кавычках): * Аналогичным образом, средства, с помощью которых объекты интерфейса верхнего уровня связаны с внешней средой иерархии, также определяются реализацией поддержка объектов интерфейса верхнего уровня.   -  person    schedule 21.10.2016


Ответы (1)


Да, см. Раздел Совместное использование определяемых пользователем типов в Руководстве пользователя Questa. Он показывает, как импортировать пакеты, определенные на одном языке, и использовать / импортировать их на другом.

person dave_59    schedule 21.10.2016
comment
Как получить утвердительный ответ из трех вопросов? Также есть два подраздела Совместное использование определяемых пользователем типов, Использование общего пакета VHDL и Использование общего системного Verilog Пакет. Что да? - person ; 21.10.2016
comment
Да было по сути вашего вопроса. Вы можете использовать пакет VHDL в тестовой среде SystemVerilog. И да на вопрос с практическими рекомендациями, указав вам на руководство. И да, возможно, вам придется создать отдельный пакет VHDL, чтобы удовлетворить требованиям для импорта в SystemVerilog. - person dave_59; 21.10.2016
comment
Не мой вопрос, а в чем суть трех вопросов ОП? - person ; 21.10.2016
comment
Привет, Дэйв, я надеялся получить от тебя ответ, так как ты, кажется, кое-что понимал. По поводу руководства: я смотрел его перед публикацией, и он не помогает с неограниченными векторами. Я обновил то, что пробовал, и если у вас есть какие-либо другие идеи о том, как сделать эту работу (кроме написания оболочки на VHDL, которая содержит полностью ограниченную запись в качестве интерфейса), любые идеи будут очень признательны. К сожалению, примеры / смешанный язык тоже не помогли. - person ted; 24.10.2016
comment
Кажется, Questa может не поддерживать комбинацию записи с неограниченным массивом на границе языка. Возможно, вам придется создать отдельный ограниченный тип. Извините, я недостаточно хорошо знаю VHDL, чтобы предложить вам обходной путь. - person dave_59; 24.10.2016
comment
Спасибо, что дал мне знать. - person ted; 24.10.2016