Obfuscate сгенерированный HDL-код из моделей Simulink

Чтобы поделиться HDL-кодом с третьей стороной, не раскрывая интеллектуальное свойство, можно сгенерировать запутанный HDL-код от Simulink® модели. Obfuscation снижает читаемость кода. Сгенерированный HDL-код не имеет никаких комментариев, новых строк или пространств и заменяет имена идентификаторов случайными именами.

Как сгенерировать запутанный HDL-код

По умолчанию сгенерированный HDL-код не запутан. HDL-код содержит новые строки, комментарии и доступен для чтения.

Чтобы сгенерировать запутанный HDL-код для подсистемы DUT в вашей модели:

  1. На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code.

  2. Откройте панель HDL Code Generation диалогового окна Параметры конфигурации. На вкладке HDL Code выберите Settings > HDL Code Generation Settings.

  3. Задайте генерацию запутанного HDL-кода. В диалоговом окне Configuration Parameters, на разделе <reservedrangesplaceholder4>> <reservedrangesplaceholder3>> <reservedrangesplaceholder2>> <reservedrangesplaceholder1>, выбирают опцию Generate obfuscated HDL code.

  4. Сгенерируйте 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-код с обфускацией

По умолчанию сгенерированный 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-кода несовместимо с определенными параметрами конфигурации и игнорирует эти параметры, если они включены в модели. Параметры включают:

Обфускация кода Факторов и ограничения

  • Синтез запутанного HDL-кода может привести к различным результатам синтеза по сравнению с результатами синтеза исходного HDL-кода. Для наилучших результатов выполните синтез на оригинальный код вместо запутанного кода.

  • Обфускация HDL-кода заменяет только имена, соответствующие HDL- файлов, сигналы, блоки, имена переменных или порты, случайными именами. Другие имена идентификаторов не заменяются, например, имена векторов или перечисления.

  • Для некоторых интерфейсов, которые вы используете в модели Simulink, информация об интерфейсе, такая как имена портов и имена интерфейсов, сохранена в запутанном HDL-коде. Эти имена не запутаны. Интерфейсы включают:

    • DUT

    • Модель-ссылка

    • Черный ящик

    • Xilinx® или Intel® цель с плавающей точкой

  • Вы не можете запутать HDL-код, сгенерированный для этих блоков:

См. также

Функции

Параметры конфигурации Simulink

Похожие темы