インテル® Quartus® Prime プロ・エディションのユーザーガイド: デザインの推奨事項

ID 683082
日付 8/03/2023
Public
ドキュメント目次

1.5.1.1. 電源投入時の値の指定

合成ツールで利用可能なオプションを使用すると、デザインの電源投入時の条件を指定することができます。 インテル® Quartus® Prime プロ・エディション の合成では、Power-Up Level ロジックオプションを提供しています。

電源投入時のレベルは、altera_attribute 割り当てをソースコードで使用して指定することもできます。この属性により、合成におけるNOTゲート・プッシュバックの実行を強制します。合成ツールは、コアレジスターの電源投入時の状態を変更することができません。

Power-Up Level ロジックオプションは、特定のレジスター、またはデザイン・エンティティー、モジュール、もしくはサブデザインに適用することができます。このオプションを割り当てると、そのブロック内のすべてのレジスターがその値を受信するようになります。レジスターはデフォルトでは 0 で起動します。したがって、この割り当てを使用し、NOTゲート・プッシュバックを使用することで、すべてのレジスターを 1 で起動するように強制することができます。

大規模なデザイン・エンティティーで Power-Up Level を論理レベルの High に設定すると、必要なインバーターの数が原因で結果の品質が低下する可能性があります。場合によっては、enable 信号の推論または二次的なコントロール・ロジックの推論により、このデザインのスタイルで問題が発生することがあります。また、このタイプのデザインは移行がより難しくなる可能性があります。

一部の合成ツールでは、レジスターされる信号のデフォルト値または初期値を読み出し、その動作をデバイスに実装することもできます。例えば、 インテル® Quartus® Prime プロ・エディションの合成では、レジスターされる信号のデフォルト値を Power-Up Level の設定に変換します。 インテル® Quartus® Prime開発ソフトウェアでデフォルト値を読み出すと、合成後の動作は、機能シミュレーション時のHDLコードの電源投入時の状態と一致します。

Verilogにおける電源投入時の値がHighのレジスター

reg q = 1’b1; //q has a default value of ‘1’

always @ (posedge clk)
begin
	q <= d;
end

VHDLにおける電源投入時のレベルがHighのレジスター

SIGNAL q : STD_LOGIC := '1'; -- q has a default value of '1'

PROCESS (clk, reset)
BEGIN
	IF (rising_edge(clk)) THEN
		q <= d;
	END IF;
END PROCESS;
デザインには、信号のタイプに基づいて宣言されていないデフォルトの電源投入時の条件が含まれる場合があります。VHDLでレジスター信号を整数として宣言している場合、 インテル® Quartus® Primeの合成では、整数範囲の左端を電源投入時の値として使用します。デフォルトの符号付き整数型の場合、デフォルトの電源投入時の値は最も大きい負の整数 (100…001) です。符号なし整数型の場合、デフォルトの電源投入時の値は 0 です。
注: ターゲットデバイスのアーキテクチャーが2つの非同期コントロール信号 (aclraload など) をサポートしない場合は、異なる電源投入時の状態とリセット状態を設定することはできません。NOTゲート・プッシュバック・アルゴリズムでロジックを作成してレジスターを 1 に設定している場合、そのレジスターは電源投入時にHighになります。合成属性または初期値を介して異なる電源投入時の条件を設定している場合、合成では電源投入時のレベルを無視します。