Порт записи VHDL, взаимодействующий с SystemVerilog / SystemC с помощью Synopsys VCSMX

Добрый день и спасибо, что посмотрели на этот вопрос

Я использую VCSMX (версия от июня 2011 г.) для моделирования ядра с интерфейсом типа записи. Ядро написано все на VHDL. Я использую Testbench Systemverilog (SV), чтобы возбудить это ядро.

Запись выглядит примерно так:

type ll_port is record
    frame_name      : std_logic_vector(WIDTH-1 downto 0);
    frame_valid     : std_logic;
 .
 .
 .
end record;

Я читал, что тип записи VHDL такой же, как struct в SV. Однако, когда я пытаюсь реализовать структуру ll_port в SV, кажется, что это все еще не поддерживается в VCSMX. Верное решение - разложить порт записи на std_logic и std_logic_vector.

Однако этот тип записи в VHDL будет использоваться несколько раз, и несколько ядер будут взаимодействовать в окончательной системе, что делает декомпозицию каждого порта записи действительно громоздкой.

Я искал, как решить эту проблему и какие советы я могу получить в этом вопросе. У меня уже есть настраиваемая инфраструктура моделирования в SystemVerilog, и я хотел бы знать, есть ли обходные пути для решения этой проблемы.

RRS


person boffin    schedule 25.02.2012    source источник


Ответы (1)


Не тот ответ, который вы ищете, но я думаю, вы застряли на разложении порта.

Честно говоря, записи о типах портов в VHDL заставляют меня нервничать, поскольку они на протяжении многих лет служили отличным способом взломать все виды инструментов. Я знаю инструменты синтеза, которые использовались для обратного соединения (MSB ‹-> LSB), если записи использовались в портах, и у многих компаний были внутренние правила, запрещающие использование записей таким образом.

Вы можете написать несколько функций с обеих сторон, чтобы сгладить запись в единый широкий std_logic_vector, а затем восстановить его, но я думаю, что это больше работы и менее читабельно, чем просто наличие портов для каждого поля.

person Paul S    schedule 28.02.2012
comment
Спасибо за Ваш ответ. Мне интересно узнать о функции здесь. Тестовая среда - это блок SystemVerilog. Вы указываете на некоторую функцию VHDL для сопоставления функций SystemVerilog? Вы знаете, возможно ли это? - person boffin; 29.02.2012
comment
Нет, картографирования нет. Просто у вас будет функция VHDL, которая берет запись и возвращает std_logic_vector. Затем есть функция SV, которая взяла логический вектор и вернула структуру. Мне не особенно нравится этот метод, так как у вас есть два набора кода, которые необходимо синхронизировать, и вы потеряли всю проверку типов, поэтому ошибки, как правило, неуловимы. Это просто то, что я видел в прошлом. Альтернатива, но я не рекомендую. - person Paul S; 29.02.2012