exponenta event banner

Запутанный созданный код HDL из моделей Simulink

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

Создание запутанного кода HDL

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

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

  1. На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code).

  2. Откройте панель Создание кода HDL (HDL Code Generation) диалогового окна Параметры конфигурации (Configuration Parameters). На вкладке Код HDL выберите Параметры > Параметры создания кода HDL.

  3. Укажите создание запутанного кода HDL. В диалоговом окне «Параметры конфигурации» в разделе «Создание кода HDL» > «Глобальные параметры» > «Стиль кодирования» > «Стиль RTL» установите флажок «Генерировать запутанный код HDL».

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

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

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

    • DUT

    • Ссылка на модель

    • Чёрный ящик

    • Целевой объект Xilinx ® или Intel ® с плавающей запятой

  • Нельзя запутать код HDL, созданный для следующих блоков:

См. также

Функции

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

Связанные темы