Для совместного использования кода HDL третьей стороной без раскрытия интеллектуальной собственности можно создать запутанный код HDL из моделей Simulink ®. Обфускация снижает читаемость кода. Созданный код HDL не содержит комментариев, новых строк или пробелов и заменяет имена идентификаторов случайными именами.
По умолчанию сгенерированный код HDL не искажается. Код HDL содержит новые строки, комментарии и доступен для чтения.
Чтобы создать запутанный код HDL для подсистемы DUT в модели:
На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code).
Откройте панель Создание кода HDL (HDL Code Generation) диалогового окна Параметры конфигурации (Configuration Parameters). На вкладке Код HDL выберите Параметры > Параметры создания кода HDL.
Укажите создание запутанного кода HDL. В диалоговом окне «Параметры конфигурации» в разделе «Создание кода HDL» > «Глобальные параметры» > «Стиль кодирования» > «Стиль RTL» установите флажок «Генерировать запутанный код HDL».
Создание кода HDL. Выберите подсистему DUT в качестве кода для подсистемы и нажмите кнопку Generate HDL Code.
Совет
По умолчанию HDL Coder™ генерирует запутанный код VHDL ®. Для создания запутанного кода Verilog ® на панели «Создание кода HDL» установите для параметра «Язык» значение Verilog и нажмите кнопку «Создать код HDL».
Для создания запутанного кода HDL из командной строки используйте ObfuscateGeneratedHDLCode свойство с hdlset_param или makehdl. Например, для генерации запутанного кода HDL для symmetric_fir подсистему в sfir_fixed модель:
makehdl('sfir_fixed/symmetric_fir', 'ObfuscateGeneratedHDLCode', 'on') % To generate obfuscated Verilog code, set 'Targetlanguage' to 'Verilog' makehdl('sfir_fixed/symmetric_fir', 'TargetLanguage', 'Verilog', ... 'ObfuscateGeneratedHDLCode', 'on')
По умолчанию сгенерированный код HDL не искажается. Например, этот код показывает сгенерированный код VHDL для шаблона модели комплексного множителя в Simulink. Дополнительные сведения об этом шаблоне см. в разделе Использование шаблонов Simulink для создания кода HDL.
...
-- -------------------------------------------------------------
--
-- Module: HDL_Complex_Multiplier
-- Source Path: untitled/HDL_Complex_Multiplier
-- Hierarchy Level: 0
--
-- -------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY HDL_Complex_Multiplier IS
PORT( ...
X_re : IN std_logic_vector(17 DOWNTO 0); -- sfix18_En17
... );
END HDL_Complex_Multiplier;
...
Чтобы создать запутанный код HDL, включите обфускацию кода HDL и затем создайте код. Например, этот код показывает имена объектов и портов, которые запутаны в сгенерированном коде VHDL.
LIBRARY IEEE; ... ENTITY Q1LNc1j7NFXR IS PORT(EEY54qLw4C0j9uD:IN std_logic_vector(17 DOWNTO 0); ...
При задании генерации запутанного кода HDL и последующей генерации кода кодер HDL создает отчет об обфускации кода. В отчете Обфускация кода отображается состояние обфускации кода HDL. Он также показывает, использует ли модель параметры конфигурации, несовместимые с обфускацией кода, и предоставляет ссылку для отключения этих параметров. Эти параметры игнорируются в процессе обфускации.
Обфускация кода HDL несовместима с определенными параметрами конфигурации и игнорирует эти параметры, если они включены в модели. Параметры включают в себя:
Эти параметры в окне «Создание кода HDL» > «Глобальные параметры» > «Общие»:
Эти параметры находятся на вкладке Создание кода HDL > Глобальные параметры настройки > Стандарты кодирования:
Параметры настройки комментария к файлу на вкладке «Создание кода HDL» > «Глобальные параметры» > «Стиль кодирования».
Параметр Создать отчет об отслеживании (Generate traceability report) на панели Создание кода HDL (HDL Code Generation) > Отчет (Report).
Синтез запутанного кода ЛПВП может дать результаты синтеза, отличные от результатов синтеза исходного кода ЛПВП. Для получения наилучших результатов вместо запутанного кода выполните синтез исходного кода.
Обфускация кода HDL заменяет случайными именами только имена, соответствующие файлам HDL, сигналам, блокам, именам переменных или портам. Другие имена идентификаторов не заменяются, например имена векторов или перечислений.
Для некоторых интерфейсов, используемых в модели Simulink, информация об интерфейсе, такая как имена портов и имена интерфейсов, сохраняется в запутанном коде HDL. Эти имена не запутаны. Интерфейсы включают в себя:
DUT
Ссылка на модель
Чёрный ящик
Целевой объект Xilinx ® или Intel ® с плавающей запятой
Нельзя запутать код HDL, созданный для следующих блоков:
Интерполяция CIC (панель инструментов системы DSP)
Децимация FIR (панель инструментов системы DSP)
Интерполяция FIR (панель инструментов системы DSP)