Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink モデルから生成された HDL コードの難読化

知的所有権を開示せずにサードパーティと HDL コードを共有するには、Simulink® モデルから難読化された HDL コードを生成します。難読化により、コードの可読性が低下します。生成された HDL コードには、コメント、改行、またはスペースは含まれず、識別子名はランダムな名前に置き換えられます。

難読化された HDL コードの生成方法

既定では、生成された HDL コードは難読化されていません。HDL コードは改行、コメントを含み、判読可能です。

モデル内の DUT サブシステムに対して難読化された HDL コードを生成するには、次のようにします。

  1. [アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] ペインを開きます。[HDL コード] タブで、[設定][HDL コード生成の設定] を選択します。

  3. 難読化された HDL コードの生成を指定します。[コンフィギュレーション パラメーター] ダイアログ ボックスの、[HDL コード生成][グローバル設定][コーディング スタイル][RTL スタイル] セクションで、[難読化された HDL コードを生成] チェック ボックスをオンにします。

  4. HDL コードを生成します。DUT サブシステムを [次のコード] サブシステムとして選択し、[HDL コードを生成] ボタンをクリックします。

    ヒント

    既定では、HDL Coder™ は、難読化された VHDL® コードを生成します。難読化された Verilog® コードを生成するには、[HDL コード生成] ペインで、[言語][Verilog] に設定してから、[HDL コード生成] ボタンをクリックします。

コマンド ラインから難読化された HDL コードを生成するには、hdlset_param または makehdl を指定した ObfuscateGeneratedHDLCode プロパティを使用します。たとえば、sfir_fixed モデルの symmetric_fir サブシステムに対して難読化された HDL コードを生成するには、次のようにします。

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 コードは難読化されていません。たとえば、以下のコードは、Simulink の [複素数乗算器] モデル テンプレートに対して生成された VHDL コードを示します。このテンプレートの詳細については、HDL コード生成用の Simulink テンプレートの使用を参照してください。

... 

-- -------------------------------------------------------------
-- 
-- 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 でコード難読化レポートが生成されます。コード難読化レポートには、HDL コード難読化のステータスが表示されます。また、モデルがコードの難読化と互換しないコンフィギュレーション パラメーターを使用しているかどうかも表示し、これらのパラメーターを無効にするリンクを示します。これらのパラメーターは難読化プロセス中に無視されます。

コードの難読化と互換しない HDL モデル パラメーター

HDL コードの難読化は特定のコンフィギュレーション パラメーターと互換せず、これらのパラメーターはモデルで有効化されている場合、無視されます。パラメーターには次のものが含まれます。

コードの難読化に関する考慮事項と制限

  • 難読化された HDL コードを合成すると、元の HDL コードの合成結果とは異なる合成結果になる場合があります。最適な結果を得るには、難読化されたコードではなく、元のコードで合成を実行してください。

  • HDL コードの難読化では、HDL ファイル、信号、ブロック、変数名、または端子に対応する名前のみをランダムな名前に置き換えられます。ベクトルや列挙型の名前など、他の識別子名は置き換えられません。

  • Simulink モデルで使用する一部のインターフェイスでは、端子名やインターフェイス名などのインターフェイス情報が難読化された HDL コードで保持されます。これらの名前は難読化されません。このインターフェイスには、以下が含まれます。

    • DUT

    • モデル参照

    • ブラック ボックス

    • Xilinx® または Intel® 浮動小数点ターゲット

  • 次のブロックに対して生成された HDL コードは難読化できません。

参考

関数

Simulink コンフィギュレーション パラメーター

関連するトピック