Чтобы поделиться HDL-кодом с третьей стороной, не раскрывая интеллектуальное свойство, можно сгенерировать запутанный HDL-код от Simulink® модели. Obfuscation снижает читаемость кода. Сгенерированный HDL-код не имеет никаких комментариев, новых строк или пространств и заменяет имена идентификаторов случайными именами.
По умолчанию сгенерированный HDL-код не запутан. HDL-код содержит новые строки, комментарии и доступен для чтения.
Чтобы сгенерировать запутанный HDL-код для подсистемы DUT в вашей модели:
На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code.
Откройте панель HDL Code Generation диалогового окна Параметры конфигурации. На вкладке HDL Code выберите Settings > HDL Code Generation Settings.
Задайте генерацию запутанного HDL-кода. В диалоговом окне Configuration Parameters, на разделе <reservedrangesplaceholder4>> <reservedrangesplaceholder3>> <reservedrangesplaceholder2>> <reservedrangesplaceholder1>, выбирают опцию Generate obfuscated HDL code.
Сгенерируйте HDL-код. Выберите подсистему DUT в качестве Code for подсистемы и нажмите кнопку Generate HDL Code.
Совет
По умолчанию HDL- Coder™ генерирует запутанный VHDL® код. Чтобы сгенерировать запутанный Verilog® код, на панели HDL Code Generation, установите Language равным Verilog
а затем нажмите кнопку Generate HDL Code.
Чтобы сгенерировать запутанные 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 код для шаблона модели Complex Multiplier в 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 Coder создает отчет Code Obfuscation. В отчете Code Obfuscation отображается состояние запутывания HDL-кода. Также отображается, использует ли модель параметры конфигурации, которые несовместимы с запутыванием кода, и предоставляет ссылку, чтобы отключить эти параметры. Эти параметры игнорируются в процессе запутывания.
Запутывание HDL-кода несовместимо с определенными параметрами конфигурации и игнорирует эти параметры, если они включены в модели. Параметры включают:
Следующие параметры на панели HDL Code Generation Global Settings > General >:
Эти параметры на вкладке HDL Code Generation > Global Settings > Coding Standards:
Параметры индивидуальной настройки комментария к файлу на вкладке HDL Code Generation > Global Settings > Coding Style.
Параметр Generate traceability report на панели HDL Code Generation > Report.
Синтез запутанного HDL-кода может привести к различным результатам синтеза по сравнению с результатами синтеза исходного HDL-кода. Для наилучших результатов выполните синтез на оригинальный код вместо запутанного кода.
Обфускация HDL-кода заменяет только имена, соответствующие HDL- файлов, сигналы, блоки, имена переменных или порты, случайными именами. Другие имена идентификаторов не заменяются, например, имена векторов или перечисления.
Для некоторых интерфейсов, которые вы используете в модели Simulink, информация об интерфейсе, такая как имена портов и имена интерфейсов, сохранена в запутанном HDL-коде. Эти имена не запутаны. Интерфейсы включают:
DUT
Модель-ссылка
Черный ящик
Xilinx® или Intel® цель с плавающей точкой
Вы не можете запутать HDL-код, сгенерированный для этих блоков:
CIC Interpolation (DSP System Toolbox)
FIR Decimation (DSP System Toolbox)
FIR Interpolation (DSP System Toolbox)