クロックとリセット

clock is a special types to represent clock wiring. There are 3 variants to specify clock polarity.

  • clock: ビルド時の設定で指定される極性を持つクロック型
  • clock_posedge: 正極性のクロック型
  • clock_negedge: 負極性のクロック型

reset is a special types to represent reset wiring. There are 5 variants to specify reset polarity and synchronicity.

  • reset: ビルド時の設定で指定される極性と同期性を持つリセット型
  • reset_async_high: 正極性の非同期リセット型
  • reset_async_low: 負極性の非同期リセット型
  • reset_sync_high: 正極性の同期リセット型
  • reset_sync_low: 負極性の同期リセット型

特別な要件がなければ、コードの再利用を高めるため clockreset の使用を推奨します。

module ModuleA (
    i_clk    : input clock           ,
    i_clk_p  : input clock_posedge   ,
    i_clk_n  : input clock_negedge   ,
    i_rst    : input reset           ,
    i_rst_a  : input reset_async_high,
    i_rst_a_n: input reset_async_low ,
    i_rst_s  : input reset_sync_high ,
    i_rst_s_n: input reset_sync_low  ,
) {
    var a: logic;
    var b: logic;
    var c: logic;

    always_ff (i_clk, i_rst) {
        if_reset {
            a = 0;
        } else {
            a = 1;
        }
    }

    always_ff (i_clk_p, i_rst_a) {
        if_reset {
            b = 0;
        } else {
            b = 1;
        }
    }

    always_ff (i_clk_n, i_rst_s_n) {
        if_reset {
            c = 0;
        } else {
            c = 1;
        }
    }
}