推論されたレジスタ、SRL、およびメモリの初期化 - 2023.2 日本語

FPGA および SoC 用 UltraFast 設計手法ガイド (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 日本語

GSR ネットは、すべてのレジスタを HDL コードで指定された初期値に初期化します。初期値が指定されていない場合、合成ツールにより初期ステートが 0 か 1 のいずれかに割り当てられます。Vivado 合成では通常デフォルトで 0 になりますが、ワンホット ステート マシン エンコードのような例外もあります。

推論された SRL メモリまたはその他の同期エレメントにも定義された初期ステートがあり、コンフィギュレーション時に関連するエレメントにプログラムされます。

AMD では、同期エレメントはすべて適切に初期化されるようにすることを強くお勧めします。レジスタの初期化は、主なデバイス合成ツールすべてで完全に推論できます。これにより、初期化目的のみにリセットを追加する必要がなくなり、デバイスでコンフィギュレーション後にすべての同期エレメントが既知の値で開始するので、RTL コードが論理シミュレーションのインプリメント済みデザインとさらに一致するようになります。

レジスタおよびラッチの初期ステートを指定する VHDL コード例 1:

signal reg1 : std_logic := '0'; -- specifying register1 to start as a zero
signal reg2 : std_logic := ‘1’; -- specifying register2 to start as a one
signal reg3 : std_logic_vector(3 downto 0):="1011"; -- specifying INIT value for 
4-bit register

レジスタおよびラッチの初期ステートを指定する Verilog コード例 2:

reg register1 = 1’b0; // specifying regsiter1 to start as a zero
reg register2 = 1’b1; // specifying register2 to start as a one
reg [3:0] register3 = 4’b1011; //specifying INIT value for 4-bit register

Verilog では、initial 文も使用できます。

reg [3:0] register3;
initial begin
  register3= 4’b1011;
end