Как зашифровать файлы для Modelsim с помощью Vivado

Поставщик использует инструмент, который компилирует некоторый код в необработанный VHDL. Они не хотят, чтобы я видел необработанный код, а вместо этого хотят зашифровать выходные файлы. На данный момент они шифруют его в списки соединений EDIF с помощью Vivado.

Это нормально при реализации дизайна; Я воспринимаю это как черный ящик, использую оболочку для ввода-вывода и пишу битовый поток. Они гарантируют, что их дизайн черного ящика работает. Я действительно вижу, что использование моих ресурсов соответствует ожидаемому, однако я хотел бы смоделировать и проверить их результаты.

При попытке смоделировать это с помощью modelsim, он, конечно же, понятия не имеет, как расшифровать эти файлы. Если вы записываете списки соединений в VHDL, вы просто получаете ошибку:

# ** Error: Formatter.vhd(58329): near "AES128-CBC": Unknown session key in protected region

Я попросил их включить ключ шифрования для modelsim при шифровании этих файлов, но они не знали, как это сделать.

Я понимаю, что их грубый рабочий процесс с их .tcl:

synth_design -top Formatter
write_edif -force ./Formatteredf

Итак, мой вопрос: как они включают ключ шифрования modelsim при создании файлов EDIF с помощью Vivado?


person fiz    schedule 12.05.2016    source источник


Ответы (2)


Modelsim не может имитировать EDIF. Вам необходимо преобразовать EDIF в формат, который можно смоделировать. Вы упомянули Vivado, поэтому вы должны использовать write_verilog или write_vhdl для их преобразования.

У меня нет доступа к каким-либо зашифрованным сторонним спискам соединений, но я использовал некоторые зашифрованные IP-адреса Xilinx (в частности, ila_v6). После синтеза я открыл синтезированные результаты и сделал следующее:

write_vhdl -mode funcsim -cell test_ila/U0 ila_funcsim.vhd

Теперь test_ila — это экземпляр, который я создал на верхнем уровне, а U0 — это зашифрованный экземпляр внутри. Сгенерированный VHDL был просто списком соединений примитивов UNISIM. И он успешно скомпилирован под Modelsim. В нетлисте не было зашифрованного IP.

Итак, я предполагаю, что у вас есть что-то вроде этого:

component encrypted_ip is
...
end component encrypted_ip;

Затем вы добавляете зашифрованный EDIF, который рассматривается как черный ящик, но в конечном итоге втягивается в процесс синтеза/реализации. Итак, откройте либо синтезированный, либо реализованный дизайн и используйте write_vhdl для сброса компонента в список соединений.

person PlayDough    schedule 12.05.2016
comment
Да, но это все еще не отвечает на вопрос. write_vhdl по-прежнему содержит шифрование для vivado, а не для modelsim. Как вы включаете ключ шифрования для modelsim? - person fiz; 13.05.2016
comment
@fiz Я обновил ответ некоторыми тестами, которые я провел с зашифрованным IP-адресом Vivado. - person PlayDough; 14.05.2016

Если EDIF зашифрован, write_vhdl почти наверняка создаст другой зашифрованный список соединений. Этот список соединений VHDL мог бы имитироваться в Modelsim, но я бы не сказал.

Modelsim поставляется с инструментом «vhencrypt.exe», который шифрует источник с помощью IEEE 1735. Полученный файл может быть смоделирован Modelsim, но вы должны начать с источника, а не с EDIF. Теперь у вас возникла бы проблема с использованием EDIF в Vivado и вывода vhencrypt в Modelsim, но это шаг в правильном направлении.

IEEE 1735 может создавать один вывод, который может использоваться как Vivado, так и Modelsim, но вам потребуется предоставить открытый ключ от Xilinx. Насколько я знаю, Xilinx не публикует свой открытый ключ для 1735, но они, вероятно, поделятся им с IP-партнером.

person VivadoUser    schedule 31.03.2017