Main Content

クロック イネーブルの最小化

既定では、HDL Coder™ は、クロック イネーブル付きのレジスタにマッピングするためのコードを生成し、DUT は最上位のクロック イネーブル端子をもちます。

クロック イネーブル付きのレジスタを生成しない場合は、クロック イネーブル ロジックを最小化できます。たとえば、ターゲット ハードウェアにクロック イネーブルのないレジスタがある場合、クロック イネーブル ロジックを最小化してハードウェアのリソースを節約できます。

次の VHDL® コードでは、クロック イネーブルを使用する、生成されたコードの既定のスタイルを説明します。enb 信号がクロック イネーブルです。

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        Unit_Delay_out1 <= In1_signed;
      END IF;
    END IF;
  END PROCESS Unit_Delay_process;

次の VHDL コードでは、クロック イネーブルを最小化して生成されたコードのスタイルを説明します。

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      Unit_Delay_out1 <= In1_signed;
    END IF;
  END PROCESS Unit_Delay_process;

GUI の使用

クロック イネーブルを最小化するには、HDL ワークフロー アドバイザーの [HDL コード生成][クロックと端子] タブで、[クロック イネーブルの最小化] を選択します。

コマンド ラインの使用

クロック イネーブルを最小化するには、coder.HdlConfig 構成オブジェクトの MinimizeClockEnables プロパティを true に設定します。以下に例を示します。

hdlCfg = coder.config('hdl')
hdlCfg.MinimizeClockEnables = true;

制限

設計の特定領域でクロック速度を上昇することによる面積の最適化を指定した場合、クロック イネーブルを最小化することはできません。次の最適化を行う場合、クロック イネーブルの最小化はできません。

  • リソース共有

  • RAM マッピング

  • ループのストリーム

また、HDL ワークフロー アドバイザーの [HDL コード生成][詳細設定] タブで [RAM アーキテクチャ][クロック イネーブルを使用しない汎用 RAM] に設定した場合もクロック イネーブルの最小化はできません。