// Generated by SandPiper(TM) 1.12-2022/01/27-beta from Redwood EDA, LLC.
// Redwood EDA, LLC does not claim intellectual property rights to this file and provides no warranty regarding its correctness or quality.


`include "sandpiper_gen.vh"


genvar instr_mem, pipe_ctrl_instr, pipe_ctrl_stage, regs, src;


//
// Signals declared top-level.
//

// For |fetch/instr$BranchState.
wire [1:0] FETCH_Instr_BranchState_a1;
reg  [1:0] FETCH_Instr_BranchState_a2;
reg  [1:1] FETCH_Instr_BranchState_a3;

// For |fetch/instr$Cnt.
wire [7:0] FETCH_Instr_Cnt_n2;
reg  [7:0] FETCH_Instr_Cnt_n1;

// For |fetch/instr$GoodPathMask.
wire [3+1:0] FETCH_Instr_GoodPathMask_n1;
reg  [3+1:0] FETCH_Instr_GoodPathMask_a0,
             FETCH_Instr_GoodPathMask_a1,
             FETCH_Instr_GoodPathMask_a2,
             FETCH_Instr_GoodPathMask_a3;

// For |fetch/instr$NoFetch.
wire FETCH_Instr_NoFetch_n1;
reg  FETCH_Instr_NoFetch_a0,
     FETCH_Instr_NoFetch_a1,
     FETCH_Instr_NoFetch_a2,
     FETCH_Instr_NoFetch_a3;

// For |fetch/instr$Pc.
wire [31:2] FETCH_Instr_Pc_n1;
reg  [31:2] FETCH_Instr_Pc_a0,
            FETCH_Instr_Pc_a1,
            FETCH_Instr_Pc_a2,
            FETCH_Instr_Pc_a3;

// For |fetch/instr$RemainingCyclesWithinTimeUnit.
wire [30-1:0] FETCH_Instr_RemainingCyclesWithinTimeUnit_a1;
reg  [30-1:0] FETCH_Instr_RemainingCyclesWithinTimeUnit_a2;

// For |fetch/instr$abort.
wire FETCH_Instr_abort_a2;

// For |fetch/instr$aborting_isa_trap.
wire FETCH_Instr_aborting_isa_trap_a2;

// For |fetch/instr$aborting_trap.
wire FETCH_Instr_aborting_trap_a2;
reg  FETCH_Instr_aborting_trap_a3;

// For |fetch/instr$add_rslt.
wire [31:0] FETCH_Instr_add_rslt_a2;

// For |fetch/instr$add_sub_rslt.
wire [31:0] FETCH_Instr_add_sub_rslt_a2;

// For |fetch/instr$addi_rslt.
wire [31:0] FETCH_Instr_addi_rslt_a2;

// For |fetch/instr$addr.
wire [31:0] FETCH_Instr_addr_a2;
reg  [31:0] FETCH_Instr_addr_a3;

// For |fetch/instr$and_rslt.
wire [31:0] FETCH_Instr_and_rslt_a2;

// For |fetch/instr$andi_rslt.
wire [31:0] FETCH_Instr_andi_rslt_a2;

// For |fetch/instr$auipc_rslt.
wire [31:0] FETCH_Instr_auipc_rslt_a2;

// For |fetch/instr$branch.
wire FETCH_Instr_branch_a1;
reg  FETCH_Instr_branch_a2;

// For |fetch/instr$branch_or_reset.
wire FETCH_Instr_branch_or_reset_a2;
reg  FETCH_Instr_branch_or_reset_a3;

// For |fetch/instr$branch_redir_pc.
wire [31:2] FETCH_Instr_branch_redir_pc_a2;

// For |fetch/instr$branch_target.
wire [31:2] FETCH_Instr_branch_target_a1;
reg  [31:2] FETCH_Instr_branch_target_a2;

// For |fetch/instr$bypass_avail1.
wire FETCH_Instr_bypass_avail1_a1;
reg  FETCH_Instr_bypass_avail1_a2,
     FETCH_Instr_bypass_avail1_a3;

// For |fetch/instr$bypass_avail2.
wire FETCH_Instr_bypass_avail2_a1;
reg  FETCH_Instr_bypass_avail2_a2,
     FETCH_Instr_bypass_avail2_a3;

// For |fetch/instr$commit.
wire FETCH_Instr_commit_a2;
reg  FETCH_Instr_commit_a3;

// For |fetch/instr$conditional_branch.
wire FETCH_Instr_conditional_branch_a1;
reg  FETCH_Instr_conditional_branch_a2;

// For |fetch/instr$csr_cycle.
wire [31:0] FETCH_Instr_csr_cycle_a1;
reg  [31:0] FETCH_Instr_csr_cycle_a2,
            FETCH_Instr_csr_cycle_a3;

// For |fetch/instr$csr_cycle_hw_wr.
wire FETCH_Instr_csr_cycle_hw_wr_a2;
reg  FETCH_Instr_csr_cycle_hw_wr_a3;

// For |fetch/instr$csr_cycle_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_cycle_hw_wr_en_mask_a2;

// For |fetch/instr$csr_cycle_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_cycle_hw_wr_mask_a2;

// For |fetch/instr$csr_cycle_hw_wr_value.
wire [31:0] FETCH_Instr_csr_cycle_hw_wr_value_a2;

// For |fetch/instr$csr_cycle_masked_wr_value.
wire [31:0] FETCH_Instr_csr_cycle_masked_wr_value_a2;

// For |fetch/instr$csr_cycleh.
wire [31:0] FETCH_Instr_csr_cycleh_a1;
reg  [31:0] FETCH_Instr_csr_cycleh_a2,
            FETCH_Instr_csr_cycleh_a3;

// For |fetch/instr$csr_cycleh_hw_wr.
wire FETCH_Instr_csr_cycleh_hw_wr_a2;
reg  FETCH_Instr_csr_cycleh_hw_wr_a3;

// For |fetch/instr$csr_cycleh_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_cycleh_hw_wr_en_mask_a2;

// For |fetch/instr$csr_cycleh_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_cycleh_hw_wr_mask_a2;

// For |fetch/instr$csr_cycleh_hw_wr_value.
wire [31:0] FETCH_Instr_csr_cycleh_hw_wr_value_a2;

// For |fetch/instr$csr_cycleh_masked_wr_value.
wire [31:0] FETCH_Instr_csr_cycleh_masked_wr_value_a2;

// For |fetch/instr$csr_instret.
wire [31:0] FETCH_Instr_csr_instret_a1;
reg  [31:0] FETCH_Instr_csr_instret_a2,
            FETCH_Instr_csr_instret_a3;

// For |fetch/instr$csr_instret_hw_wr.
wire FETCH_Instr_csr_instret_hw_wr_a2;
reg  FETCH_Instr_csr_instret_hw_wr_a3;

// For |fetch/instr$csr_instret_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_instret_hw_wr_en_mask_a2;

// For |fetch/instr$csr_instret_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_instret_hw_wr_mask_a2;

// For |fetch/instr$csr_instret_hw_wr_value.
wire [31:0] FETCH_Instr_csr_instret_hw_wr_value_a2;

// For |fetch/instr$csr_instret_masked_wr_value.
wire [31:0] FETCH_Instr_csr_instret_masked_wr_value_a2;

// For |fetch/instr$csr_instreth.
wire [31:0] FETCH_Instr_csr_instreth_a1;
reg  [31:0] FETCH_Instr_csr_instreth_a2,
            FETCH_Instr_csr_instreth_a3;

// For |fetch/instr$csr_instreth_hw_wr.
wire FETCH_Instr_csr_instreth_hw_wr_a2;
reg  FETCH_Instr_csr_instreth_hw_wr_a3;

// For |fetch/instr$csr_instreth_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_instreth_hw_wr_en_mask_a2;

// For |fetch/instr$csr_instreth_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_instreth_hw_wr_mask_a2;

// For |fetch/instr$csr_instreth_hw_wr_value.
wire [31:0] FETCH_Instr_csr_instreth_hw_wr_value_a2;

// For |fetch/instr$csr_instreth_masked_wr_value.
wire [31:0] FETCH_Instr_csr_instreth_masked_wr_value_a2;

// For |fetch/instr$csr_time.
wire [31:0] FETCH_Instr_csr_time_a1;
reg  [31:0] FETCH_Instr_csr_time_a2,
            FETCH_Instr_csr_time_a3;

// For |fetch/instr$csr_time_hw_wr.
wire FETCH_Instr_csr_time_hw_wr_a2;
reg  FETCH_Instr_csr_time_hw_wr_a3;

// For |fetch/instr$csr_time_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_time_hw_wr_en_mask_a2;

// For |fetch/instr$csr_time_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_time_hw_wr_mask_a2;

// For |fetch/instr$csr_time_hw_wr_value.
wire [31:0] FETCH_Instr_csr_time_hw_wr_value_a2;

// For |fetch/instr$csr_time_masked_wr_value.
wire [31:0] FETCH_Instr_csr_time_masked_wr_value_a2;

// For |fetch/instr$csr_timeh.
wire [31:0] FETCH_Instr_csr_timeh_a1;
reg  [31:0] FETCH_Instr_csr_timeh_a2,
            FETCH_Instr_csr_timeh_a3;

// For |fetch/instr$csr_timeh_hw_wr.
wire FETCH_Instr_csr_timeh_hw_wr_a2;
reg  FETCH_Instr_csr_timeh_hw_wr_a3;

// For |fetch/instr$csr_timeh_hw_wr_en_mask.
wire [31:0] FETCH_Instr_csr_timeh_hw_wr_en_mask_a2;

// For |fetch/instr$csr_timeh_hw_wr_mask.
wire [31:0] FETCH_Instr_csr_timeh_hw_wr_mask_a2;

// For |fetch/instr$csr_timeh_hw_wr_value.
wire [31:0] FETCH_Instr_csr_timeh_hw_wr_value_a2;

// For |fetch/instr$csr_timeh_masked_wr_value.
wire [31:0] FETCH_Instr_csr_timeh_masked_wr_value_a2;

// For |fetch/instr$csr_trap.
wire FETCH_Instr_csr_trap_a1;
reg  FETCH_Instr_csr_trap_a2;

// For |fetch/instr$csr_wr_value.
wire [31:0] FETCH_Instr_csr_wr_value_a2;

// For |fetch/instr$csrrc_rslt.
wire [31:0] FETCH_Instr_csrrc_rslt_a2;

// For |fetch/instr$csrrci_rslt.
wire [31:0] FETCH_Instr_csrrci_rslt_a2;

// For |fetch/instr$csrrs_rslt.
wire [31:0] FETCH_Instr_csrrs_rslt_a2;

// For |fetch/instr$csrrsi_rslt.
wire [31:0] FETCH_Instr_csrrsi_rslt_a2;

// For |fetch/instr$csrrw_rslt.
wire [31:0] FETCH_Instr_csrrw_rslt_a2;

// For |fetch/instr$csrrwi_rslt.
wire [31:0] FETCH_Instr_csrrwi_rslt_a2;

// For |fetch/instr$dest_pending.
wire FETCH_Instr_dest_pending_a1;

// For |fetch/instr$dest_reg.
wire [4:0] FETCH_Instr_dest_reg_a1;
reg  [4:0] FETCH_Instr_dest_reg_a2,
           FETCH_Instr_dest_reg_a3;

// For |fetch/instr$dest_reg_valid.
wire FETCH_Instr_dest_reg_valid_a1;
reg  FETCH_Instr_dest_reg_valid_a2,
     FETCH_Instr_dest_reg_valid_a3;

// For |fetch/instr$div_mul.
wire FETCH_Instr_div_mul_a1;
reg  FETCH_Instr_div_mul_a2;

// For |fetch/instr$equal.
wire FETCH_Instr_equal_a2;

// For |fetch/instr$fetch.
wire FETCH_Instr_fetch_a0;
reg  FETCH_Instr_fetch_a1;

// For |fetch/instr$first_issue.
wire FETCH_Instr_first_issue_a3;

// For |fetch/instr$full_csr_cycle_hw_wr_value.
wire [63:0] FETCH_Instr_full_csr_cycle_hw_wr_value_a2;

// For |fetch/instr$full_csr_instret_hw_wr_value.
wire [63:0] FETCH_Instr_full_csr_instret_hw_wr_value_a2;

// For |fetch/instr$full_csr_time_hw_wr_value.
wire [63:0] FETCH_Instr_full_csr_time_hw_wr_value_a2;

// For |fetch/instr$good_path.
wire FETCH_Instr_good_path_a2;

// For |fetch/instr$illegal.
wire FETCH_Instr_illegal_a1;
reg  FETCH_Instr_illegal_a2;

// For |fetch/instr$illegal_itype_with_funct7.
wire FETCH_Instr_illegal_itype_with_funct7_a1;

// For |fetch/instr$imm_valid.
wire FETCH_Instr_imm_valid_a3;

// For |fetch/instr$imm_value.
wire [31:0] FETCH_Instr_imm_value_a3;

// For |fetch/instr$indirect_jump.
wire FETCH_Instr_indirect_jump_a1;
reg  FETCH_Instr_indirect_jump_a2,
     FETCH_Instr_indirect_jump_a3;

// For |fetch/instr$indirect_jump_full_target.
wire [31:0] FETCH_Instr_indirect_jump_full_target_a2;

// For |fetch/instr$indirect_jump_target.
wire [31:2] FETCH_Instr_indirect_jump_target_a2;

// For |fetch/instr$is___type.
wire FETCH_Instr_is___type_a1;

// For |fetch/instr$is_add_instr.
wire FETCH_Instr_is_add_instr_a1;
reg  FETCH_Instr_is_add_instr_a2,
     FETCH_Instr_is_add_instr_a3;

// For |fetch/instr$is_addi_instr.
wire FETCH_Instr_is_addi_instr_a1;
reg  FETCH_Instr_is_addi_instr_a2,
     FETCH_Instr_is_addi_instr_a3;

// For |fetch/instr$is_and_instr.
wire FETCH_Instr_is_and_instr_a1;
reg  FETCH_Instr_is_and_instr_a2,
     FETCH_Instr_is_and_instr_a3;

// For |fetch/instr$is_andi_instr.
wire FETCH_Instr_is_andi_instr_a1;
reg  FETCH_Instr_is_andi_instr_a2,
     FETCH_Instr_is_andi_instr_a3;

// For |fetch/instr$is_auipc_instr.
wire FETCH_Instr_is_auipc_instr_a1;
reg  FETCH_Instr_is_auipc_instr_a2,
     FETCH_Instr_is_auipc_instr_a3;

// For |fetch/instr$is_b_type.
wire FETCH_Instr_is_b_type_a1;
reg  FETCH_Instr_is_b_type_a2,
     FETCH_Instr_is_b_type_a3;

// For |fetch/instr$is_beq_instr.
wire FETCH_Instr_is_beq_instr_a1;
reg  FETCH_Instr_is_beq_instr_a2,
     FETCH_Instr_is_beq_instr_a3;

// For |fetch/instr$is_bge_instr.
wire FETCH_Instr_is_bge_instr_a1;
reg  FETCH_Instr_is_bge_instr_a2,
     FETCH_Instr_is_bge_instr_a3;

// For |fetch/instr$is_bgeu_instr.
wire FETCH_Instr_is_bgeu_instr_a1;
reg  FETCH_Instr_is_bgeu_instr_a2,
     FETCH_Instr_is_bgeu_instr_a3;

// For |fetch/instr$is_blt_instr.
wire FETCH_Instr_is_blt_instr_a1;
reg  FETCH_Instr_is_blt_instr_a2,
     FETCH_Instr_is_blt_instr_a3;

// For |fetch/instr$is_bltu_instr.
wire FETCH_Instr_is_bltu_instr_a1;
reg  FETCH_Instr_is_bltu_instr_a2,
     FETCH_Instr_is_bltu_instr_a3;

// For |fetch/instr$is_bne_instr.
wire FETCH_Instr_is_bne_instr_a1;
reg  FETCH_Instr_is_bne_instr_a2,
     FETCH_Instr_is_bne_instr_a3;

// For |fetch/instr$is_csr_clear.
wire FETCH_Instr_is_csr_clear_a1;
reg  FETCH_Instr_is_csr_clear_a2;

// For |fetch/instr$is_csr_cycle.
wire FETCH_Instr_is_csr_cycle_a1;
reg  FETCH_Instr_is_csr_cycle_a2;

// For |fetch/instr$is_csr_cycleh.
wire FETCH_Instr_is_csr_cycleh_a1;
reg  FETCH_Instr_is_csr_cycleh_a2;

// For |fetch/instr$is_csr_instr.
wire FETCH_Instr_is_csr_instr_a1;

// For |fetch/instr$is_csr_instret.
wire FETCH_Instr_is_csr_instret_a1;
reg  FETCH_Instr_is_csr_instret_a2;

// For |fetch/instr$is_csr_instreth.
wire FETCH_Instr_is_csr_instreth_a1;
reg  FETCH_Instr_is_csr_instreth_a2;

// For |fetch/instr$is_csr_set.
wire FETCH_Instr_is_csr_set_a1;
reg  FETCH_Instr_is_csr_set_a2;

// For |fetch/instr$is_csr_time.
wire FETCH_Instr_is_csr_time_a1;
reg  FETCH_Instr_is_csr_time_a2;

// For |fetch/instr$is_csr_timeh.
wire FETCH_Instr_is_csr_timeh_a1;
reg  FETCH_Instr_is_csr_timeh_a2;

// For |fetch/instr$is_csr_write.
wire FETCH_Instr_is_csr_write_a1;
reg  FETCH_Instr_is_csr_write_a2;

// For |fetch/instr$is_csrrc_instr.
wire FETCH_Instr_is_csrrc_instr_a1;
reg  FETCH_Instr_is_csrrc_instr_a2,
     FETCH_Instr_is_csrrc_instr_a3;

// For |fetch/instr$is_csrrci_instr.
wire FETCH_Instr_is_csrrci_instr_a1;
reg  FETCH_Instr_is_csrrci_instr_a2,
     FETCH_Instr_is_csrrci_instr_a3;

// For |fetch/instr$is_csrrs_instr.
wire FETCH_Instr_is_csrrs_instr_a1;
reg  FETCH_Instr_is_csrrs_instr_a2,
     FETCH_Instr_is_csrrs_instr_a3;

// For |fetch/instr$is_csrrsi_instr.
wire FETCH_Instr_is_csrrsi_instr_a1;
reg  FETCH_Instr_is_csrrsi_instr_a2,
     FETCH_Instr_is_csrrsi_instr_a3;

// For |fetch/instr$is_csrrw_instr.
wire FETCH_Instr_is_csrrw_instr_a1;
reg  FETCH_Instr_is_csrrw_instr_a2,
     FETCH_Instr_is_csrrw_instr_a3;

// For |fetch/instr$is_csrrwi_instr.
wire FETCH_Instr_is_csrrwi_instr_a1;
reg  FETCH_Instr_is_csrrwi_instr_a2,
     FETCH_Instr_is_csrrwi_instr_a3;

// For |fetch/instr$is_dest_condition.
wire FETCH_Instr_is_dest_condition_a1;

// For |fetch/instr$is_i_type.
wire FETCH_Instr_is_i_type_a1;
reg  FETCH_Instr_is_i_type_a2,
     FETCH_Instr_is_i_type_a3;

// For |fetch/instr$is_j_type.
wire FETCH_Instr_is_j_type_a1;
reg  FETCH_Instr_is_j_type_a2,
     FETCH_Instr_is_j_type_a3;

// For |fetch/instr$is_jal_instr.
wire FETCH_Instr_is_jal_instr_a1;
reg  FETCH_Instr_is_jal_instr_a2,
     FETCH_Instr_is_jal_instr_a3;

// For |fetch/instr$is_jalr_instr.
wire FETCH_Instr_is_jalr_instr_a1;
reg  FETCH_Instr_is_jalr_instr_a2,
     FETCH_Instr_is_jalr_instr_a3;

// For |fetch/instr$is_lb_instr.
wire FETCH_Instr_is_lb_instr_a1;
reg  FETCH_Instr_is_lb_instr_a2,
     FETCH_Instr_is_lb_instr_a3;

// For |fetch/instr$is_lbu_instr.
wire FETCH_Instr_is_lbu_instr_a1;
reg  FETCH_Instr_is_lbu_instr_a2,
     FETCH_Instr_is_lbu_instr_a3;

// For |fetch/instr$is_lh_instr.
wire FETCH_Instr_is_lh_instr_a1;
reg  FETCH_Instr_is_lh_instr_a2,
     FETCH_Instr_is_lh_instr_a3;

// For |fetch/instr$is_lhu_instr.
wire FETCH_Instr_is_lhu_instr_a1;
reg  FETCH_Instr_is_lhu_instr_a2,
     FETCH_Instr_is_lhu_instr_a3;

// For |fetch/instr$is_lui_instr.
wire FETCH_Instr_is_lui_instr_a1;
reg  FETCH_Instr_is_lui_instr_a2,
     FETCH_Instr_is_lui_instr_a3;

// For |fetch/instr$is_lw_instr.
wire FETCH_Instr_is_lw_instr_a1;
reg  FETCH_Instr_is_lw_instr_a2,
     FETCH_Instr_is_lw_instr_a3;

// For |fetch/instr$is_or_instr.
wire FETCH_Instr_is_or_instr_a1;
reg  FETCH_Instr_is_or_instr_a2,
     FETCH_Instr_is_or_instr_a3;

// For |fetch/instr$is_ori_instr.
wire FETCH_Instr_is_ori_instr_a1;
reg  FETCH_Instr_is_ori_instr_a2,
     FETCH_Instr_is_ori_instr_a3;

// For |fetch/instr$is_r2_type.
wire FETCH_Instr_is_r2_type_a1;

// For |fetch/instr$is_r4_type.
wire FETCH_Instr_is_r4_type_a1;

// For |fetch/instr$is_r_type.
wire FETCH_Instr_is_r_type_a1;
reg  FETCH_Instr_is_r_type_a2,
     FETCH_Instr_is_r_type_a3;

// For |fetch/instr$is_s_type.
wire FETCH_Instr_is_s_type_a1;
reg  FETCH_Instr_is_s_type_a2,
     FETCH_Instr_is_s_type_a3;

// For |fetch/instr$is_sb_instr.
wire FETCH_Instr_is_sb_instr_a1;
reg  FETCH_Instr_is_sb_instr_a2,
     FETCH_Instr_is_sb_instr_a3;

// For |fetch/instr$is_sh_instr.
wire FETCH_Instr_is_sh_instr_a1;
reg  FETCH_Instr_is_sh_instr_a2,
     FETCH_Instr_is_sh_instr_a3;

// For |fetch/instr$is_sll_instr.
wire FETCH_Instr_is_sll_instr_a1;
reg  FETCH_Instr_is_sll_instr_a2,
     FETCH_Instr_is_sll_instr_a3;

// For |fetch/instr$is_slli_instr.
wire FETCH_Instr_is_slli_instr_a1;
reg  FETCH_Instr_is_slli_instr_a2,
     FETCH_Instr_is_slli_instr_a3;

// For |fetch/instr$is_slt_instr.
wire FETCH_Instr_is_slt_instr_a1;
reg  FETCH_Instr_is_slt_instr_a2,
     FETCH_Instr_is_slt_instr_a3;

// For |fetch/instr$is_slti_instr.
wire FETCH_Instr_is_slti_instr_a1;
reg  FETCH_Instr_is_slti_instr_a2,
     FETCH_Instr_is_slti_instr_a3;

// For |fetch/instr$is_sltiu_instr.
wire FETCH_Instr_is_sltiu_instr_a1;
reg  FETCH_Instr_is_sltiu_instr_a2,
     FETCH_Instr_is_sltiu_instr_a3;

// For |fetch/instr$is_sltu_instr.
wire FETCH_Instr_is_sltu_instr_a1;
reg  FETCH_Instr_is_sltu_instr_a2,
     FETCH_Instr_is_sltu_instr_a3;

// For |fetch/instr$is_sra_instr.
wire FETCH_Instr_is_sra_instr_a1;
reg  FETCH_Instr_is_sra_instr_a2,
     FETCH_Instr_is_sra_instr_a3;

// For |fetch/instr$is_srai_instr.
wire FETCH_Instr_is_srai_instr_a1;
reg  FETCH_Instr_is_srai_instr_a2,
     FETCH_Instr_is_srai_instr_a3;

// For |fetch/instr$is_srl_instr.
wire FETCH_Instr_is_srl_instr_a1;
reg  FETCH_Instr_is_srl_instr_a2,
     FETCH_Instr_is_srl_instr_a3;

// For |fetch/instr$is_srli_instr.
wire FETCH_Instr_is_srli_instr_a1;
reg  FETCH_Instr_is_srli_instr_a2,
     FETCH_Instr_is_srli_instr_a3;

// For |fetch/instr$is_srli_srai_instr.
wire FETCH_Instr_is_srli_srai_instr_a1;

// For |fetch/instr$is_sub_instr.
wire FETCH_Instr_is_sub_instr_a1;
reg  FETCH_Instr_is_sub_instr_a2,
     FETCH_Instr_is_sub_instr_a3;

// For |fetch/instr$is_sw_instr.
wire FETCH_Instr_is_sw_instr_a1;
reg  FETCH_Instr_is_sw_instr_a2,
     FETCH_Instr_is_sw_instr_a3;

// For |fetch/instr$is_u_type.
wire FETCH_Instr_is_u_type_a1;
reg  FETCH_Instr_is_u_type_a2,
     FETCH_Instr_is_u_type_a3;

// For |fetch/instr$is_xor_instr.
wire FETCH_Instr_is_xor_instr_a1;
reg  FETCH_Instr_is_xor_instr_a2,
     FETCH_Instr_is_xor_instr_a3;

// For |fetch/instr$is_xori_instr.
wire FETCH_Instr_is_xori_instr_a1;
reg  FETCH_Instr_is_xori_instr_a2,
     FETCH_Instr_is_xori_instr_a3;

// For |fetch/instr$jal_rslt.
wire [31:0] FETCH_Instr_jal_rslt_a2;

// For |fetch/instr$jalr_rslt.
wire [31:0] FETCH_Instr_jalr_rslt_a2;

// For |fetch/instr$jump.
wire FETCH_Instr_jump_a1;
reg  FETCH_Instr_jump_a2,
     FETCH_Instr_jump_a3;

// For |fetch/instr$jump_target.
wire [31:2] FETCH_Instr_jump_target_a1;
reg  [31:2] FETCH_Instr_jump_target_a2;

// For |fetch/instr$lb_rslt.
wire [31:0] FETCH_Instr_lb_rslt_a2;

// For |fetch/instr$lbu_rslt.
wire [31:0] FETCH_Instr_lbu_rslt_a2;

// For |fetch/instr$ld.
wire FETCH_Instr_ld_a1;
reg  FETCH_Instr_ld_a2;

// For |fetch/instr$ld_data.
wire [31:0] FETCH_Instr_ld_data_a4;

// For |fetch/instr$ld_st.
wire FETCH_Instr_ld_st_a1;
reg  FETCH_Instr_ld_st_a2;

// For |fetch/instr$ld_st_cond.
wire FETCH_Instr_ld_st_cond_a2;

// For |fetch/instr$ld_st_half.
wire FETCH_Instr_ld_st_half_a1;
reg  FETCH_Instr_ld_st_half_a2,
     FETCH_Instr_ld_st_half_a3;

// For |fetch/instr$ld_st_word.
wire FETCH_Instr_ld_st_word_a1;
reg  FETCH_Instr_ld_st_word_a2,
     FETCH_Instr_ld_st_word_a3;

// For |fetch/instr$lh_rslt.
wire [31:0] FETCH_Instr_lh_rslt_a2;

// For |fetch/instr$lhu_rslt.
wire [31:0] FETCH_Instr_lhu_rslt_a2;

// For |fetch/instr$lui_rslt.
wire [31:0] FETCH_Instr_lui_rslt_a2;

// For |fetch/instr$lw_rslt.
wire [31:0] FETCH_Instr_lw_rslt_a2;

// For |fetch/instr$misaligned_indirect_jump_target.
wire FETCH_Instr_misaligned_indirect_jump_target_a2;

// For |fetch/instr$misaligned_jump_target.
wire FETCH_Instr_misaligned_jump_target_a1;
reg  FETCH_Instr_misaligned_jump_target_a2;

// For |fetch/instr$misaligned_pc.
wire FETCH_Instr_misaligned_pc_a1;
reg  FETCH_Instr_misaligned_pc_a2;

// For |fetch/instr$mispred_branch.
wire FETCH_Instr_mispred_branch_a2;
reg  FETCH_Instr_mispred_branch_a3;

// For |fetch/instr$mnemonic.
wire [10*8-1:0] FETCH_Instr_mnemonic_a3;

// For |fetch/instr$multype_instr.
wire FETCH_Instr_multype_instr_a1;

// For |fetch/instr$next_good_path_mask.
wire [3+1:0] FETCH_Instr_next_good_path_mask_a0;

// For |fetch/instr$next_no_fetch.
wire FETCH_Instr_next_no_fetch_a0;

// For |fetch/instr$next_pc.
wire [31:2] FETCH_Instr_next_pc_a0;

// For |fetch/instr$non_aborting_isa_trap.
wire FETCH_Instr_non_aborting_isa_trap_a2;

// For |fetch/instr$non_aborting_trap.
wire FETCH_Instr_non_aborting_trap_a2;
reg  FETCH_Instr_non_aborting_trap_a3;

// For |fetch/instr$non_pipelined.
wire FETCH_Instr_non_pipelined_a2;
reg  FETCH_Instr_non_pipelined_a3;

// For |fetch/instr$or_rslt.
wire [31:0] FETCH_Instr_or_rslt_a2;

// For |fetch/instr$ori_rslt.
wire [31:0] FETCH_Instr_ori_rslt_a2;

// For |fetch/instr$pc.
wire [31:2] FETCH_Instr_pc_a2;
reg  [31:2] FETCH_Instr_pc_a3;

// For |fetch/instr$pc_inc.
wire [31:2] FETCH_Instr_pc_inc_a0;
reg  [31:2] FETCH_Instr_pc_inc_a1,
            FETCH_Instr_pc_inc_a2,
            FETCH_Instr_pc_inc_a3;

// For |fetch/instr$pending_replay.
wire FETCH_Instr_pending_replay_a1;

// For |fetch/instr$pred_taken.
wire FETCH_Instr_pred_taken_a1;
reg  FETCH_Instr_pred_taken_a2;

// For |fetch/instr$pred_taken_branch.
wire FETCH_Instr_pred_taken_branch_a1;
reg  FETCH_Instr_pred_taken_branch_a2,
     FETCH_Instr_pred_taken_branch_a3;

// For |fetch/instr$raw.
wire [31:0] FETCH_Instr_raw_a1;

// For |fetch/instr$raw_aq.
wire FETCH_Instr_raw_aq_a1;

// For |fetch/instr$raw_b_imm.
wire [31:0] FETCH_Instr_raw_b_imm_a1;
reg  [31:0] FETCH_Instr_raw_b_imm_a2,
            FETCH_Instr_raw_b_imm_a3;

// For |fetch/instr$raw_funct3.
wire [2:0] FETCH_Instr_raw_funct3_a1;
reg  [2:2] FETCH_Instr_raw_funct3_a2,
           FETCH_Instr_raw_funct3_a3;

// For |fetch/instr$raw_funct7.
wire [6:0] FETCH_Instr_raw_funct7_a1;
reg  [6:0] FETCH_Instr_raw_funct7_a2,
           FETCH_Instr_raw_funct7_a3;

// For |fetch/instr$raw_i_imm.
wire [31:0] FETCH_Instr_raw_i_imm_a1;
reg  [31:0] FETCH_Instr_raw_i_imm_a2,
            FETCH_Instr_raw_i_imm_a3;

// For |fetch/instr$raw_j_imm.
wire [31:0] FETCH_Instr_raw_j_imm_a1;
reg  [31:0] FETCH_Instr_raw_j_imm_a2,
            FETCH_Instr_raw_j_imm_a3;

// For |fetch/instr$raw_op2.
wire [1:0] FETCH_Instr_raw_op2_a1;

// For |fetch/instr$raw_op5.
wire [4:0] FETCH_Instr_raw_op5_a1;

// For |fetch/instr$raw_rd.
wire [4:0] FETCH_Instr_raw_rd_a1;
reg  [4:0] FETCH_Instr_raw_rd_a2,
           FETCH_Instr_raw_rd_a3;

// For |fetch/instr$raw_rl.
wire FETCH_Instr_raw_rl_a1;

// For |fetch/instr$raw_rm.
wire [2:0] FETCH_Instr_raw_rm_a1;

// For |fetch/instr$raw_rs1.
wire [4:0] FETCH_Instr_raw_rs1_a1;
reg  [4:0] FETCH_Instr_raw_rs1_a2,
           FETCH_Instr_raw_rs1_a3;

// For |fetch/instr$raw_rs2.
wire [4:0] FETCH_Instr_raw_rs2_a1;
reg  [4:0] FETCH_Instr_raw_rs2_a2,
           FETCH_Instr_raw_rs2_a3;

// For |fetch/instr$raw_rs3.
wire [4:0] FETCH_Instr_raw_rs3_a1;
reg  [4:0] FETCH_Instr_raw_rs3_a2,
           FETCH_Instr_raw_rs3_a3;

// For |fetch/instr$raw_s_imm.
wire [31:0] FETCH_Instr_raw_s_imm_a1;
reg  [31:0] FETCH_Instr_raw_s_imm_a2,
            FETCH_Instr_raw_s_imm_a3;

// For |fetch/instr$raw_shamt.
wire [6:0] FETCH_Instr_raw_shamt_a1;

// For |fetch/instr$raw_u_imm.
wire [31:0] FETCH_Instr_raw_u_imm_a1;
reg  [31:0] FETCH_Instr_raw_u_imm_a2,
            FETCH_Instr_raw_u_imm_a3;

// For |fetch/instr$reg_wr_pending.
wire FETCH_Instr_reg_wr_pending_a1;
reg  FETCH_Instr_reg_wr_pending_a2,
     FETCH_Instr_reg_wr_pending_a3;

// For |fetch/instr$replay.
wire FETCH_Instr_replay_a1;
reg  FETCH_Instr_replay_a2,
     FETCH_Instr_replay_a3;

// For |fetch/instr$replay_trap.
wire FETCH_Instr_replay_trap_a2;

// For |fetch/instr$reset.
wire FETCH_Instr_reset_n1;
reg  FETCH_Instr_reset_a0,
     FETCH_Instr_reset_a1,
     FETCH_Instr_reset_a2,
     FETCH_Instr_reset_a3;

// For |fetch/instr$rslt.
wire [31:0] FETCH_Instr_rslt_a2;
reg  [31:0] FETCH_Instr_rslt_a3;

// For |fetch/instr$second_issue.
wire FETCH_Instr_second_issue_a0;
reg  FETCH_Instr_second_issue_a1,
     FETCH_Instr_second_issue_a2,
     FETCH_Instr_second_issue_a3;

// For |fetch/instr$second_issue_ld.
wire FETCH_Instr_second_issue_ld_a0;
reg  FETCH_Instr_second_issue_ld_a1,
     FETCH_Instr_second_issue_ld_a2;

// For |fetch/instr$sll_rslt.
wire [31:0] FETCH_Instr_sll_rslt_a2;

// For |fetch/instr$slli_rslt.
wire [31:0] FETCH_Instr_slli_rslt_a2;

// For |fetch/instr$slt_rslt.
wire [31:0] FETCH_Instr_slt_rslt_a2;

// For |fetch/instr$slti_rslt.
wire [31:0] FETCH_Instr_slti_rslt_a2;

// For |fetch/instr$sltiu_rslt.
wire [31:0] FETCH_Instr_sltiu_rslt_a2;

// For |fetch/instr$sltu_rslt.
wire [31:0] FETCH_Instr_sltu_rslt_a2;

// For |fetch/instr$soft_reset.
wire FETCH_Instr_soft_reset_n1;

// For |fetch/instr$spec_ld.
wire FETCH_Instr_spec_ld_a1;
reg  FETCH_Instr_spec_ld_a2,
     FETCH_Instr_spec_ld_a3;

// For |fetch/instr$sra_rslt.
wire [31:0] FETCH_Instr_sra_rslt_a2;

// For |fetch/instr$srai_intermediate_rslt.
wire [31:0] FETCH_Instr_srai_intermediate_rslt_a2;

// For |fetch/instr$srai_rslt.
wire [31:0] FETCH_Instr_srai_rslt_a2;

// For |fetch/instr$srl_rslt.
wire [31:0] FETCH_Instr_srl_rslt_a2;

// For |fetch/instr$srli_intermediate_rslt.
wire [31:0] FETCH_Instr_srli_intermediate_rslt_a2;

// For |fetch/instr$srli_rslt.
wire [31:0] FETCH_Instr_srli_rslt_a2;

// For |fetch/instr$st.
wire FETCH_Instr_st_a1;
reg  FETCH_Instr_st_a2,
     FETCH_Instr_st_a3;

// For |fetch/instr$st_cond.
wire FETCH_Instr_st_cond_a2;

// For |fetch/instr$st_mask.
wire [3:0] FETCH_Instr_st_mask_a2;
reg  [3:0] FETCH_Instr_st_mask_a3;

// For |fetch/instr$st_reg_value.
wire [31:0] FETCH_Instr_st_reg_value_a2;

// For |fetch/instr$st_value.
wire [31:0] FETCH_Instr_st_value_a2;
reg  [31:0] FETCH_Instr_st_value_a3;

// For |fetch/instr$sub_rslt.
wire [31:0] FETCH_Instr_sub_rslt_a2;

// For |fetch/instr$taken.
wire FETCH_Instr_taken_a2;

// For |fetch/instr$time_unit_expires.
wire FETCH_Instr_time_unit_expires_a2;

// For |fetch/instr$trap_target.
wire [31:2] FETCH_Instr_trap_target_a2;
reg  [31:2] FETCH_Instr_trap_target_a3;

// For |fetch/instr$unnatural_addr_trap.
wire FETCH_Instr_unnatural_addr_trap_a2;

// For |fetch/instr$upd_csr_cycle.
wire [31:0] FETCH_Instr_upd_csr_cycle_a2;

// For |fetch/instr$upd_csr_cycleh.
wire [31:0] FETCH_Instr_upd_csr_cycleh_a2;

// For |fetch/instr$upd_csr_instret.
wire [31:0] FETCH_Instr_upd_csr_instret_a2;

// For |fetch/instr$upd_csr_instreth.
wire [31:0] FETCH_Instr_upd_csr_instreth_a2;

// For |fetch/instr$upd_csr_time.
wire [31:0] FETCH_Instr_upd_csr_time_a2;

// For |fetch/instr$upd_csr_timeh.
wire [31:0] FETCH_Instr_upd_csr_timeh_a2;

// For |fetch/instr$valid_csr.
wire FETCH_Instr_valid_csr_a1;

// For |fetch/instr$valid_decode.
wire FETCH_Instr_valid_decode_a1;
reg  FETCH_Instr_valid_decode_a2,
     FETCH_Instr_valid_decode_a3;

// For |fetch/instr$valid_decode_branch.
wire FETCH_Instr_valid_decode_branch_a1;
reg  FETCH_Instr_valid_decode_branch_a2;

// For |fetch/instr$valid_dest_reg_valid.
wire FETCH_Instr_valid_dest_reg_valid_a2;
reg  FETCH_Instr_valid_dest_reg_valid_a3;

// For |fetch/instr$valid_exe.
wire FETCH_Instr_valid_exe_a2;

// For |fetch/instr$valid_ld.
wire FETCH_Instr_valid_ld_a2;
reg  FETCH_Instr_valid_ld_a3;

// For |fetch/instr$valid_st.
wire FETCH_Instr_valid_st_a2;
reg  FETCH_Instr_valid_st_a3;

// For |fetch/instr$xor_rslt.
wire [31:0] FETCH_Instr_xor_rslt_a2;

// For |fetch/instr$xori_rslt.
wire [31:0] FETCH_Instr_xori_rslt_a2;

// For |fetch/instr/orig_inst$dest_reg.
wire [4:0] FETCH_Instr_OrigInst_dest_reg_a0;
reg  [4:0] FETCH_Instr_OrigInst_dest_reg_a1;

// For |fetch/instr/orig_inst$pc.
wire [31:2] FETCH_Instr_OrigInst_pc_a0;
reg  [31:2] FETCH_Instr_OrigInst_pc_a1,
            FETCH_Instr_OrigInst_pc_a2,
            FETCH_Instr_OrigInst_pc_a3;

// For |fetch/instr/orig_load_inst$addr.
wire [1:0] FETCH_Instr_OrigLoadInst_addr_a0;
reg  [1:0] FETCH_Instr_OrigLoadInst_addr_a1,
           FETCH_Instr_OrigLoadInst_addr_a2;

// For |fetch/instr/orig_load_inst$dest_reg.
wire [4:0] FETCH_Instr_OrigLoadInst_dest_reg_a0;

// For |fetch/instr/orig_load_inst$g0_spec_ld_cond.
wire FETCH_Instr_OrigLoadInst_g0_spec_ld_cond_a2;

// For |fetch/instr/orig_load_inst$ld_mask.
wire [3:0] FETCH_Instr_OrigLoadInst_ld_mask_a2;

// For |fetch/instr/orig_load_inst$ld_rslt.
wire [31:0] FETCH_Instr_OrigLoadInst_ld_rslt_a2;

// For |fetch/instr/orig_load_inst$ld_st_half.
wire FETCH_Instr_OrigLoadInst_ld_st_half_a0;
reg  FETCH_Instr_OrigLoadInst_ld_st_half_a1,
     FETCH_Instr_OrigLoadInst_ld_st_half_a2;

// For |fetch/instr/orig_load_inst$ld_st_word.
wire FETCH_Instr_OrigLoadInst_ld_st_word_a0;
reg  FETCH_Instr_OrigLoadInst_ld_st_word_a1,
     FETCH_Instr_OrigLoadInst_ld_st_word_a2;

// For |fetch/instr/orig_load_inst$ld_value.
wire [31:0] FETCH_Instr_OrigLoadInst_ld_value_a0;
reg  [31:0] FETCH_Instr_OrigLoadInst_ld_value_a1,
            FETCH_Instr_OrigLoadInst_ld_value_a2;

// For |fetch/instr/orig_load_inst$pc.
wire [31:2] FETCH_Instr_OrigLoadInst_pc_a0;

// For |fetch/instr/orig_load_inst$raw_funct3.
wire [2:2] FETCH_Instr_OrigLoadInst_raw_funct3_a0;
reg  [2:2] FETCH_Instr_OrigLoadInst_raw_funct3_a1,
           FETCH_Instr_OrigLoadInst_raw_funct3_a2;

// For |fetch/instr/orig_load_inst$sign_bit.
wire FETCH_Instr_OrigLoadInst_sign_bit_a2;

// For |fetch/instr/orig_load_inst$spec_ld.
wire FETCH_Instr_OrigLoadInst_spec_ld_a0;
reg  FETCH_Instr_OrigLoadInst_spec_ld_a1,
     FETCH_Instr_OrigLoadInst_spec_ld_a2;

// For |fetch/instr/orig_load_inst$spec_ld_cond.
wire FETCH_Instr_OrigLoadInst_spec_ld_cond_a2;

// For |fetch/instr/regs$pending.
wire FETCH_Instr_Regs_pending_a2 [31:1];
reg  FETCH_Instr_Regs_pending_a3 [31:1];

// For |fetch/instr/regs$value.
reg  [31:0] FETCH_Instr_Regs_value_a3 [31:1];

// For |fetch/instr/src$replay.
wire [2:1] FETCH_Instr_Src_replay_a1;

// For |fetch/instr/src$unconditioned_is_reg.
wire FETCH_Instr_Src_unconditioned_is_reg_a3 [2:1];

// For |fetch/instr/src$unconditioned_reg.
wire [4:0] FETCH_Instr_Src_unconditioned_reg_a3 [2:1];

// For |fetch/instr/src$unconditioned_reg_value.
wire [31:0] FETCH_Instr_Src_unconditioned_reg_value_a3 [2:1];

// For |mem/data$addr.
wire [1:0] MEM_Data_addr_a3;
reg  [1:0] MEM_Data_addr_a4;

// For |mem/data$dest_reg.
wire [4:0] MEM_Data_dest_reg_a3;
reg  [4:0] MEM_Data_dest_reg_a4;

// For |mem/data$ld_st_half.
wire MEM_Data_ld_st_half_a3;
reg  MEM_Data_ld_st_half_a4;

// For |mem/data$ld_st_word.
wire MEM_Data_ld_st_word_a3;
reg  MEM_Data_ld_st_word_a4;

// For |mem/data$ld_value.
wire [31:0] MEM_Data_ld_value_a4;

// For |mem/data$pc.
wire [31:2] MEM_Data_pc_a3;
reg  [31:2] MEM_Data_pc_a4;

// For |mem/data$raw_funct3.
wire [2:2] MEM_Data_raw_funct3_a3;
reg  [2:2] MEM_Data_raw_funct3_a4;

// For |mem/data$spec_ld.
wire MEM_Data_spec_ld_a3;
reg  MEM_Data_spec_ld_a4;

// For |mem/data$valid_ld.
wire MEM_Data_valid_ld_a3;
reg  MEM_Data_valid_ld_a4;


//
// Scope: |fetch
//

//
// Scope: |fetch/instr
//

// Clock signals.
wire clkF_FETCH_Instr_branch_or_reset_a3 ;
wire clkF_FETCH_Instr_branch_or_reset_a4 ;
wire clkP_FETCH_Instr_branch_a2 ;
wire clkP_FETCH_Instr_jump_a2 ;
wire clkP_FETCH_Instr_ld_st_cond_a3 ;
wire clkP_FETCH_Instr_second_issue_a1 ;
wire clkP_FETCH_Instr_second_issue_a2 ;
wire clkP_FETCH_Instr_second_issue_a3 ;
wire clkP_FETCH_Instr_second_issue_ld_a1 ;
wire clkP_FETCH_Instr_second_issue_ld_a2 ;
wire clkP_FETCH_Instr_st_cond_a3 ;
wire clkP_FETCH_Instr_valid_decode_a2 ;
wire clkP_FETCH_Instr_valid_decode_a3 ;
wire clkP_FETCH_Instr_valid_decode_branch_a2 ;

//
// Scope: |fetch/instr/src[2:1]
//

// Clock signals.
wire clkP_FETCH_Instr_Src_is_reg_condition_a2 [2:1];
wire clkP_FETCH_Instr_Src_is_reg_condition_a3 [2:1];


generate


   //
   // Scope: |fetch
   //


      //
      // Scope: /instr
      //

         // For $BranchState.
         always @(posedge clkF_FETCH_Instr_branch_or_reset_a3) FETCH_Instr_BranchState_a2[1:0] <= FETCH_Instr_BranchState_a1[1:0];
         always @(posedge clkF_FETCH_Instr_branch_or_reset_a4) FETCH_Instr_BranchState_a3[1] <= FETCH_Instr_BranchState_a2[1];

         // For $Cnt.
         always @(posedge clk) FETCH_Instr_Cnt_n1[7:0] <= FETCH_Instr_Cnt_n2[7:0];

         // For $GoodPathMask.
         always @(posedge clk) FETCH_Instr_GoodPathMask_a0[3+1:0] <= FETCH_Instr_GoodPathMask_n1[3+1:0];
         always @(posedge clk) FETCH_Instr_GoodPathMask_a1[3+1:0] <= FETCH_Instr_GoodPathMask_a0[3+1:0];
         always @(posedge clk) FETCH_Instr_GoodPathMask_a2[3+1:0] <= FETCH_Instr_GoodPathMask_a1[3+1:0];
         always @(posedge clk) FETCH_Instr_GoodPathMask_a3[3+1:0] <= FETCH_Instr_GoodPathMask_a2[3+1:0];

         // For $NoFetch.
         always @(posedge clk) FETCH_Instr_NoFetch_a0 <= FETCH_Instr_NoFetch_n1;
         always @(posedge clk) FETCH_Instr_NoFetch_a1 <= FETCH_Instr_NoFetch_a0;
         always @(posedge clk) FETCH_Instr_NoFetch_a2 <= FETCH_Instr_NoFetch_a1;
         always @(posedge clk) FETCH_Instr_NoFetch_a3 <= FETCH_Instr_NoFetch_a2;

         // For $Pc.
         always @(posedge clk) FETCH_Instr_Pc_a0[31:2] <= FETCH_Instr_Pc_n1[31:2];
         always @(posedge clk) FETCH_Instr_Pc_a1[31:2] <= FETCH_Instr_Pc_a0[31:2];
         always @(posedge clk) FETCH_Instr_Pc_a2[31:2] <= FETCH_Instr_Pc_a1[31:2];
         always @(posedge clk) FETCH_Instr_Pc_a3[31:2] <= FETCH_Instr_Pc_a2[31:2];

         // For $RemainingCyclesWithinTimeUnit.
         always @(posedge clk) FETCH_Instr_RemainingCyclesWithinTimeUnit_a2[30-1:0] <= FETCH_Instr_RemainingCyclesWithinTimeUnit_a1[30-1:0];

         // For $aborting_trap.
         always @(posedge clk) FETCH_Instr_aborting_trap_a3 <= FETCH_Instr_aborting_trap_a2;

         // For $addr.
         always @(posedge clkP_FETCH_Instr_ld_st_cond_a3) FETCH_Instr_addr_a3[31:0] <= FETCH_Instr_addr_a2[31:0];

         // For $branch.
         always @(posedge clk) FETCH_Instr_branch_a2 <= FETCH_Instr_branch_a1;

         // For $branch_or_reset.
         always @(posedge clk) FETCH_Instr_branch_or_reset_a3 <= FETCH_Instr_branch_or_reset_a2;

         // For $branch_target.
         always @(posedge clkP_FETCH_Instr_valid_decode_branch_a2) FETCH_Instr_branch_target_a2[31:2] <= FETCH_Instr_branch_target_a1[31:2];

         // For $bypass_avail1.
         always @(posedge clk) FETCH_Instr_bypass_avail1_a2 <= FETCH_Instr_bypass_avail1_a1;
         always @(posedge clk) FETCH_Instr_bypass_avail1_a3 <= FETCH_Instr_bypass_avail1_a2;

         // For $bypass_avail2.
         always @(posedge clk) FETCH_Instr_bypass_avail2_a2 <= FETCH_Instr_bypass_avail2_a1;
         always @(posedge clk) FETCH_Instr_bypass_avail2_a3 <= FETCH_Instr_bypass_avail2_a2;

         // For $commit.
         always @(posedge clk) FETCH_Instr_commit_a3 <= FETCH_Instr_commit_a2;

         // For $conditional_branch.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_conditional_branch_a2 <= FETCH_Instr_conditional_branch_a1;

         // For $csr_cycle.
         always @(posedge clk) FETCH_Instr_csr_cycle_a2[31:0] <= FETCH_Instr_csr_cycle_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_cycle_a3[31:0] <= FETCH_Instr_csr_cycle_a2[31:0];

         // For $csr_cycle_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_cycle_hw_wr_a3 <= FETCH_Instr_csr_cycle_hw_wr_a2;

         // For $csr_cycleh.
         always @(posedge clk) FETCH_Instr_csr_cycleh_a2[31:0] <= FETCH_Instr_csr_cycleh_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_cycleh_a3[31:0] <= FETCH_Instr_csr_cycleh_a2[31:0];

         // For $csr_cycleh_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_cycleh_hw_wr_a3 <= FETCH_Instr_csr_cycleh_hw_wr_a2;

         // For $csr_instret.
         always @(posedge clk) FETCH_Instr_csr_instret_a2[31:0] <= FETCH_Instr_csr_instret_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_instret_a3[31:0] <= FETCH_Instr_csr_instret_a2[31:0];

         // For $csr_instret_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_instret_hw_wr_a3 <= FETCH_Instr_csr_instret_hw_wr_a2;

         // For $csr_instreth.
         always @(posedge clk) FETCH_Instr_csr_instreth_a2[31:0] <= FETCH_Instr_csr_instreth_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_instreth_a3[31:0] <= FETCH_Instr_csr_instreth_a2[31:0];

         // For $csr_instreth_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_instreth_hw_wr_a3 <= FETCH_Instr_csr_instreth_hw_wr_a2;

         // For $csr_time.
         always @(posedge clk) FETCH_Instr_csr_time_a2[31:0] <= FETCH_Instr_csr_time_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_time_a3[31:0] <= FETCH_Instr_csr_time_a2[31:0];

         // For $csr_time_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_time_hw_wr_a3 <= FETCH_Instr_csr_time_hw_wr_a2;

         // For $csr_timeh.
         always @(posedge clk) FETCH_Instr_csr_timeh_a2[31:0] <= FETCH_Instr_csr_timeh_a1[31:0];
         always @(posedge clk) FETCH_Instr_csr_timeh_a3[31:0] <= FETCH_Instr_csr_timeh_a2[31:0];

         // For $csr_timeh_hw_wr.
         always @(posedge clk) FETCH_Instr_csr_timeh_hw_wr_a3 <= FETCH_Instr_csr_timeh_hw_wr_a2;

         // For $csr_trap.
         always @(posedge clk) FETCH_Instr_csr_trap_a2 <= FETCH_Instr_csr_trap_a1;

         // For $dest_reg.
         always @(posedge clk) FETCH_Instr_dest_reg_a2[4:0] <= FETCH_Instr_dest_reg_a1[4:0];
         always @(posedge clk) FETCH_Instr_dest_reg_a3[4:0] <= FETCH_Instr_dest_reg_a2[4:0];

         // For $dest_reg_valid.
         always @(posedge clk) FETCH_Instr_dest_reg_valid_a2 <= FETCH_Instr_dest_reg_valid_a1;
         always @(posedge clk) FETCH_Instr_dest_reg_valid_a3 <= FETCH_Instr_dest_reg_valid_a2;

         // For $div_mul.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_div_mul_a2 <= FETCH_Instr_div_mul_a1;

         // For $fetch.
         always @(posedge clk) FETCH_Instr_fetch_a1 <= FETCH_Instr_fetch_a0;

         // For $illegal.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_illegal_a2 <= FETCH_Instr_illegal_a1;

         // For $indirect_jump.
         always @(posedge clk) FETCH_Instr_indirect_jump_a2 <= FETCH_Instr_indirect_jump_a1;
         always @(posedge clk) FETCH_Instr_indirect_jump_a3 <= FETCH_Instr_indirect_jump_a2;

         // For $is_add_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_add_instr_a2 <= FETCH_Instr_is_add_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_add_instr_a3 <= FETCH_Instr_is_add_instr_a2;

         // For $is_addi_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_addi_instr_a2 <= FETCH_Instr_is_addi_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_addi_instr_a3 <= FETCH_Instr_is_addi_instr_a2;

         // For $is_and_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_and_instr_a2 <= FETCH_Instr_is_and_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_and_instr_a3 <= FETCH_Instr_is_and_instr_a2;

         // For $is_andi_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_andi_instr_a2 <= FETCH_Instr_is_andi_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_andi_instr_a3 <= FETCH_Instr_is_andi_instr_a2;

         // For $is_auipc_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_auipc_instr_a2 <= FETCH_Instr_is_auipc_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_auipc_instr_a3 <= FETCH_Instr_is_auipc_instr_a2;

         // For $is_b_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_b_type_a2 <= FETCH_Instr_is_b_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_b_type_a3 <= FETCH_Instr_is_b_type_a2;

         // For $is_beq_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_beq_instr_a2 <= FETCH_Instr_is_beq_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_beq_instr_a3 <= FETCH_Instr_is_beq_instr_a2;

         // For $is_bge_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_bge_instr_a2 <= FETCH_Instr_is_bge_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_bge_instr_a3 <= FETCH_Instr_is_bge_instr_a2;

         // For $is_bgeu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_bgeu_instr_a2 <= FETCH_Instr_is_bgeu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_bgeu_instr_a3 <= FETCH_Instr_is_bgeu_instr_a2;

         // For $is_blt_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_blt_instr_a2 <= FETCH_Instr_is_blt_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_blt_instr_a3 <= FETCH_Instr_is_blt_instr_a2;

         // For $is_bltu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_bltu_instr_a2 <= FETCH_Instr_is_bltu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_bltu_instr_a3 <= FETCH_Instr_is_bltu_instr_a2;

         // For $is_bne_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_bne_instr_a2 <= FETCH_Instr_is_bne_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_bne_instr_a3 <= FETCH_Instr_is_bne_instr_a2;

         // For $is_csr_clear.
         always @(posedge clk) FETCH_Instr_is_csr_clear_a2 <= FETCH_Instr_is_csr_clear_a1;

         // For $is_csr_cycle.
         always @(posedge clk) FETCH_Instr_is_csr_cycle_a2 <= FETCH_Instr_is_csr_cycle_a1;

         // For $is_csr_cycleh.
         always @(posedge clk) FETCH_Instr_is_csr_cycleh_a2 <= FETCH_Instr_is_csr_cycleh_a1;

         // For $is_csr_instret.
         always @(posedge clk) FETCH_Instr_is_csr_instret_a2 <= FETCH_Instr_is_csr_instret_a1;

         // For $is_csr_instreth.
         always @(posedge clk) FETCH_Instr_is_csr_instreth_a2 <= FETCH_Instr_is_csr_instreth_a1;

         // For $is_csr_set.
         always @(posedge clk) FETCH_Instr_is_csr_set_a2 <= FETCH_Instr_is_csr_set_a1;

         // For $is_csr_time.
         always @(posedge clk) FETCH_Instr_is_csr_time_a2 <= FETCH_Instr_is_csr_time_a1;

         // For $is_csr_timeh.
         always @(posedge clk) FETCH_Instr_is_csr_timeh_a2 <= FETCH_Instr_is_csr_timeh_a1;

         // For $is_csr_write.
         always @(posedge clk) FETCH_Instr_is_csr_write_a2 <= FETCH_Instr_is_csr_write_a1;

         // For $is_csrrc_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrc_instr_a2 <= FETCH_Instr_is_csrrc_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrc_instr_a3 <= FETCH_Instr_is_csrrc_instr_a2;

         // For $is_csrrci_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrci_instr_a2 <= FETCH_Instr_is_csrrci_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrci_instr_a3 <= FETCH_Instr_is_csrrci_instr_a2;

         // For $is_csrrs_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrs_instr_a2 <= FETCH_Instr_is_csrrs_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrs_instr_a3 <= FETCH_Instr_is_csrrs_instr_a2;

         // For $is_csrrsi_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrsi_instr_a2 <= FETCH_Instr_is_csrrsi_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrsi_instr_a3 <= FETCH_Instr_is_csrrsi_instr_a2;

         // For $is_csrrw_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrw_instr_a2 <= FETCH_Instr_is_csrrw_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrw_instr_a3 <= FETCH_Instr_is_csrrw_instr_a2;

         // For $is_csrrwi_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_csrrwi_instr_a2 <= FETCH_Instr_is_csrrwi_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_csrrwi_instr_a3 <= FETCH_Instr_is_csrrwi_instr_a2;

         // For $is_i_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_i_type_a2 <= FETCH_Instr_is_i_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_i_type_a3 <= FETCH_Instr_is_i_type_a2;

         // For $is_j_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_j_type_a2 <= FETCH_Instr_is_j_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_j_type_a3 <= FETCH_Instr_is_j_type_a2;

         // For $is_jal_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_jal_instr_a2 <= FETCH_Instr_is_jal_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_jal_instr_a3 <= FETCH_Instr_is_jal_instr_a2;

         // For $is_jalr_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_jalr_instr_a2 <= FETCH_Instr_is_jalr_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_jalr_instr_a3 <= FETCH_Instr_is_jalr_instr_a2;

         // For $is_lb_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lb_instr_a2 <= FETCH_Instr_is_lb_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lb_instr_a3 <= FETCH_Instr_is_lb_instr_a2;

         // For $is_lbu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lbu_instr_a2 <= FETCH_Instr_is_lbu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lbu_instr_a3 <= FETCH_Instr_is_lbu_instr_a2;

         // For $is_lh_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lh_instr_a2 <= FETCH_Instr_is_lh_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lh_instr_a3 <= FETCH_Instr_is_lh_instr_a2;

         // For $is_lhu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lhu_instr_a2 <= FETCH_Instr_is_lhu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lhu_instr_a3 <= FETCH_Instr_is_lhu_instr_a2;

         // For $is_lui_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lui_instr_a2 <= FETCH_Instr_is_lui_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lui_instr_a3 <= FETCH_Instr_is_lui_instr_a2;

         // For $is_lw_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_lw_instr_a2 <= FETCH_Instr_is_lw_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_lw_instr_a3 <= FETCH_Instr_is_lw_instr_a2;

         // For $is_or_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_or_instr_a2 <= FETCH_Instr_is_or_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_or_instr_a3 <= FETCH_Instr_is_or_instr_a2;

         // For $is_ori_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_ori_instr_a2 <= FETCH_Instr_is_ori_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_ori_instr_a3 <= FETCH_Instr_is_ori_instr_a2;

         // For $is_r_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_r_type_a2 <= FETCH_Instr_is_r_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_r_type_a3 <= FETCH_Instr_is_r_type_a2;

         // For $is_s_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_s_type_a2 <= FETCH_Instr_is_s_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_s_type_a3 <= FETCH_Instr_is_s_type_a2;

         // For $is_sb_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sb_instr_a2 <= FETCH_Instr_is_sb_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sb_instr_a3 <= FETCH_Instr_is_sb_instr_a2;

         // For $is_sh_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sh_instr_a2 <= FETCH_Instr_is_sh_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sh_instr_a3 <= FETCH_Instr_is_sh_instr_a2;

         // For $is_sll_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sll_instr_a2 <= FETCH_Instr_is_sll_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sll_instr_a3 <= FETCH_Instr_is_sll_instr_a2;

         // For $is_slli_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_slli_instr_a2 <= FETCH_Instr_is_slli_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_slli_instr_a3 <= FETCH_Instr_is_slli_instr_a2;

         // For $is_slt_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_slt_instr_a2 <= FETCH_Instr_is_slt_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_slt_instr_a3 <= FETCH_Instr_is_slt_instr_a2;

         // For $is_slti_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_slti_instr_a2 <= FETCH_Instr_is_slti_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_slti_instr_a3 <= FETCH_Instr_is_slti_instr_a2;

         // For $is_sltiu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sltiu_instr_a2 <= FETCH_Instr_is_sltiu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sltiu_instr_a3 <= FETCH_Instr_is_sltiu_instr_a2;

         // For $is_sltu_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sltu_instr_a2 <= FETCH_Instr_is_sltu_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sltu_instr_a3 <= FETCH_Instr_is_sltu_instr_a2;

         // For $is_sra_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sra_instr_a2 <= FETCH_Instr_is_sra_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sra_instr_a3 <= FETCH_Instr_is_sra_instr_a2;

         // For $is_srai_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_srai_instr_a2 <= FETCH_Instr_is_srai_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_srai_instr_a3 <= FETCH_Instr_is_srai_instr_a2;

         // For $is_srl_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_srl_instr_a2 <= FETCH_Instr_is_srl_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_srl_instr_a3 <= FETCH_Instr_is_srl_instr_a2;

         // For $is_srli_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_srli_instr_a2 <= FETCH_Instr_is_srli_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_srli_instr_a3 <= FETCH_Instr_is_srli_instr_a2;

         // For $is_sub_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sub_instr_a2 <= FETCH_Instr_is_sub_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sub_instr_a3 <= FETCH_Instr_is_sub_instr_a2;

         // For $is_sw_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_sw_instr_a2 <= FETCH_Instr_is_sw_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_sw_instr_a3 <= FETCH_Instr_is_sw_instr_a2;

         // For $is_u_type.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_u_type_a2 <= FETCH_Instr_is_u_type_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_u_type_a3 <= FETCH_Instr_is_u_type_a2;

         // For $is_xor_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_xor_instr_a2 <= FETCH_Instr_is_xor_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_xor_instr_a3 <= FETCH_Instr_is_xor_instr_a2;

         // For $is_xori_instr.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_is_xori_instr_a2 <= FETCH_Instr_is_xori_instr_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_is_xori_instr_a3 <= FETCH_Instr_is_xori_instr_a2;

         // For $jump.
         always @(posedge clk) FETCH_Instr_jump_a2 <= FETCH_Instr_jump_a1;
         always @(posedge clk) FETCH_Instr_jump_a3 <= FETCH_Instr_jump_a2;

         // For $jump_target.
         always @(posedge clkP_FETCH_Instr_jump_a2) FETCH_Instr_jump_target_a2[31:2] <= FETCH_Instr_jump_target_a1[31:2];

         // For $ld.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_ld_a2 <= FETCH_Instr_ld_a1;

         // For $ld_st.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_ld_st_a2 <= FETCH_Instr_ld_st_a1;

         // For $ld_st_half.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_ld_st_half_a2 <= FETCH_Instr_ld_st_half_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_ld_st_half_a3 <= FETCH_Instr_ld_st_half_a2;

         // For $ld_st_word.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_ld_st_word_a2 <= FETCH_Instr_ld_st_word_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_ld_st_word_a3 <= FETCH_Instr_ld_st_word_a2;

         // For $misaligned_jump_target.
         always @(posedge clkP_FETCH_Instr_jump_a2) FETCH_Instr_misaligned_jump_target_a2 <= FETCH_Instr_misaligned_jump_target_a1;

         // For $misaligned_pc.
         always @(posedge clkP_FETCH_Instr_valid_decode_branch_a2) FETCH_Instr_misaligned_pc_a2 <= FETCH_Instr_misaligned_pc_a1;

         // For $mispred_branch.
         always @(posedge clk) FETCH_Instr_mispred_branch_a3 <= FETCH_Instr_mispred_branch_a2;

         // For $non_aborting_trap.
         always @(posedge clk) FETCH_Instr_non_aborting_trap_a3 <= FETCH_Instr_non_aborting_trap_a2;

         // For $non_pipelined.
         always @(posedge clk) FETCH_Instr_non_pipelined_a3 <= FETCH_Instr_non_pipelined_a2;

         // For $pc.
         always @(posedge clk) FETCH_Instr_pc_a3[31:2] <= FETCH_Instr_pc_a2[31:2];

         // For $pc_inc.
         always @(posedge clk) FETCH_Instr_pc_inc_a1[31:2] <= FETCH_Instr_pc_inc_a0[31:2];
         always @(posedge clk) FETCH_Instr_pc_inc_a2[31:2] <= FETCH_Instr_pc_inc_a1[31:2];
         always @(posedge clk) FETCH_Instr_pc_inc_a3[31:2] <= FETCH_Instr_pc_inc_a2[31:2];

         // For $pred_taken.
         always @(posedge clkP_FETCH_Instr_branch_a2) FETCH_Instr_pred_taken_a2 <= FETCH_Instr_pred_taken_a1;

         // For $pred_taken_branch.
         always @(posedge clk) FETCH_Instr_pred_taken_branch_a2 <= FETCH_Instr_pred_taken_branch_a1;
         always @(posedge clk) FETCH_Instr_pred_taken_branch_a3 <= FETCH_Instr_pred_taken_branch_a2;

         // For $raw_b_imm.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_b_imm_a2[31:0] <= FETCH_Instr_raw_b_imm_a1[31:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_b_imm_a3[31:0] <= FETCH_Instr_raw_b_imm_a2[31:0];

         // For $raw_funct3.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_funct3_a2[2] <= FETCH_Instr_raw_funct3_a1[2];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_funct3_a3[2] <= FETCH_Instr_raw_funct3_a2[2];

         // For $raw_funct7.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_funct7_a2[6:0] <= FETCH_Instr_raw_funct7_a1[6:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_funct7_a3[6:0] <= FETCH_Instr_raw_funct7_a2[6:0];

         // For $raw_i_imm.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_i_imm_a2[31:0] <= FETCH_Instr_raw_i_imm_a1[31:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_i_imm_a3[31:0] <= FETCH_Instr_raw_i_imm_a2[31:0];

         // For $raw_j_imm.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_j_imm_a2[31:0] <= FETCH_Instr_raw_j_imm_a1[31:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_j_imm_a3[31:0] <= FETCH_Instr_raw_j_imm_a2[31:0];

         // For $raw_rd.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_rd_a2[4:0] <= FETCH_Instr_raw_rd_a1[4:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_rd_a3[4:0] <= FETCH_Instr_raw_rd_a2[4:0];

         // For $raw_rs1.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_rs1_a2[4:0] <= FETCH_Instr_raw_rs1_a1[4:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_rs1_a3[4:0] <= FETCH_Instr_raw_rs1_a2[4:0];

         // For $raw_rs2.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_rs2_a2[4:0] <= FETCH_Instr_raw_rs2_a1[4:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_rs2_a3[4:0] <= FETCH_Instr_raw_rs2_a2[4:0];

         // For $raw_rs3.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_rs3_a2[4:0] <= FETCH_Instr_raw_rs3_a1[4:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_rs3_a3[4:0] <= FETCH_Instr_raw_rs3_a2[4:0];

         // For $raw_s_imm.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_s_imm_a2[31:0] <= FETCH_Instr_raw_s_imm_a1[31:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_s_imm_a3[31:0] <= FETCH_Instr_raw_s_imm_a2[31:0];

         // For $raw_u_imm.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_raw_u_imm_a2[31:0] <= FETCH_Instr_raw_u_imm_a1[31:0];
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_raw_u_imm_a3[31:0] <= FETCH_Instr_raw_u_imm_a2[31:0];

         // For $reg_wr_pending.
         always @(posedge clk) FETCH_Instr_reg_wr_pending_a2 <= FETCH_Instr_reg_wr_pending_a1;
         always @(posedge clk) FETCH_Instr_reg_wr_pending_a3 <= FETCH_Instr_reg_wr_pending_a2;

         // For $replay.
         always @(posedge clk) FETCH_Instr_replay_a2 <= FETCH_Instr_replay_a1;
         always @(posedge clk) FETCH_Instr_replay_a3 <= FETCH_Instr_replay_a2;

         // For $reset.
         always @(posedge clk) FETCH_Instr_reset_a0 <= FETCH_Instr_reset_n1;
         always @(posedge clk) FETCH_Instr_reset_a1 <= FETCH_Instr_reset_a0;
         always @(posedge clk) FETCH_Instr_reset_a2 <= FETCH_Instr_reset_a1;
         always @(posedge clk) FETCH_Instr_reset_a3 <= FETCH_Instr_reset_a2;

         // For $rslt.
         always @(posedge clk) FETCH_Instr_rslt_a3[31:0] <= FETCH_Instr_rslt_a2[31:0];

         // For $second_issue.
         always @(posedge clk) FETCH_Instr_second_issue_a1 <= FETCH_Instr_second_issue_a0;
         always @(posedge clk) FETCH_Instr_second_issue_a2 <= FETCH_Instr_second_issue_a1;
         always @(posedge clk) FETCH_Instr_second_issue_a3 <= FETCH_Instr_second_issue_a2;

         // For $second_issue_ld.
         always @(posedge clk) FETCH_Instr_second_issue_ld_a1 <= FETCH_Instr_second_issue_ld_a0;
         always @(posedge clk) FETCH_Instr_second_issue_ld_a2 <= FETCH_Instr_second_issue_ld_a1;

         // For $spec_ld.
         always @(posedge clk) FETCH_Instr_spec_ld_a2 <= FETCH_Instr_spec_ld_a1;
         always @(posedge clk) FETCH_Instr_spec_ld_a3 <= FETCH_Instr_spec_ld_a2;

         // For $st.
         always @(posedge clkP_FETCH_Instr_valid_decode_a2) FETCH_Instr_st_a2 <= FETCH_Instr_st_a1;
         always @(posedge clkP_FETCH_Instr_valid_decode_a3) FETCH_Instr_st_a3 <= FETCH_Instr_st_a2;

         // For $st_mask.
         always @(posedge clkP_FETCH_Instr_st_cond_a3) FETCH_Instr_st_mask_a3[3:0] <= FETCH_Instr_st_mask_a2[3:0];

         // For $st_value.
         always @(posedge clkP_FETCH_Instr_st_cond_a3) FETCH_Instr_st_value_a3[31:0] <= FETCH_Instr_st_value_a2[31:0];

         // For $trap_target.
         always @(posedge clk) FETCH_Instr_trap_target_a3[31:2] <= FETCH_Instr_trap_target_a2[31:2];

         // For $valid_decode.
         always @(posedge clk) FETCH_Instr_valid_decode_a2 <= FETCH_Instr_valid_decode_a1;
         always @(posedge clk) FETCH_Instr_valid_decode_a3 <= FETCH_Instr_valid_decode_a2;

         // For $valid_decode_branch.
         always @(posedge clk) FETCH_Instr_valid_decode_branch_a2 <= FETCH_Instr_valid_decode_branch_a1;

         // For $valid_dest_reg_valid.
         always @(posedge clk) FETCH_Instr_valid_dest_reg_valid_a3 <= FETCH_Instr_valid_dest_reg_valid_a2;

         // For $valid_ld.
         always @(posedge clk) FETCH_Instr_valid_ld_a3 <= FETCH_Instr_valid_ld_a2;

         // For $valid_st.
         always @(posedge clk) FETCH_Instr_valid_st_a3 <= FETCH_Instr_valid_st_a2;


         //
         // Scope: /orig_inst
         //

            // For $dest_reg.
            always @(posedge clkP_FETCH_Instr_second_issue_a1) FETCH_Instr_OrigInst_dest_reg_a1[4:0] <= FETCH_Instr_OrigInst_dest_reg_a0[4:0];

            // For $pc.
            always @(posedge clkP_FETCH_Instr_second_issue_a1) FETCH_Instr_OrigInst_pc_a1[31:2] <= FETCH_Instr_OrigInst_pc_a0[31:2];
            always @(posedge clkP_FETCH_Instr_second_issue_a2) FETCH_Instr_OrigInst_pc_a2[31:2] <= FETCH_Instr_OrigInst_pc_a1[31:2];
            always @(posedge clkP_FETCH_Instr_second_issue_a3) FETCH_Instr_OrigInst_pc_a3[31:2] <= FETCH_Instr_OrigInst_pc_a2[31:2];


            //
            // Scope: /src[2:1]
            //
            for (src = 1; src <= 2; src=src+1) begin : L1gen_FETCH_Instr_OrigInst_Src
               // For $dummy.
               always @(posedge clkP_FETCH_Instr_second_issue_a1) L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a1 <= L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a0;
               always @(posedge clkP_FETCH_Instr_second_issue_a2) L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a2 <= L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a1;
               always @(posedge clkP_FETCH_Instr_second_issue_a3) L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a3 <= L1_FETCH_Instr_OrigInst_Src[src].L1_dummy_a2;

            end


         //
         // Scope: /orig_load_inst
         //

            // For $addr.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_addr_a1[1:0] <= FETCH_Instr_OrigLoadInst_addr_a0[1:0];
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_addr_a2[1:0] <= FETCH_Instr_OrigLoadInst_addr_a1[1:0];

            // This is an unconditioned version of the condition signal.
            assign FETCH_Instr_OrigLoadInst_g0_spec_ld_cond_a2 = FETCH_Instr_OrigLoadInst_spec_ld_cond_a2 && FETCH_Instr_second_issue_ld_a2;

            // For $ld_st_half.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_ld_st_half_a1 <= FETCH_Instr_OrigLoadInst_ld_st_half_a0;
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_ld_st_half_a2 <= FETCH_Instr_OrigLoadInst_ld_st_half_a1;

            // For $ld_st_word.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_ld_st_word_a1 <= FETCH_Instr_OrigLoadInst_ld_st_word_a0;
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_ld_st_word_a2 <= FETCH_Instr_OrigLoadInst_ld_st_word_a1;

            // For $ld_value.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_ld_value_a1[31:0] <= FETCH_Instr_OrigLoadInst_ld_value_a0[31:0];
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_ld_value_a2[31:0] <= FETCH_Instr_OrigLoadInst_ld_value_a1[31:0];

            // For $raw_funct3.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_raw_funct3_a1[2] <= FETCH_Instr_OrigLoadInst_raw_funct3_a0[2];
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_raw_funct3_a2[2] <= FETCH_Instr_OrigLoadInst_raw_funct3_a1[2];

            // For $spec_ld.
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a1) FETCH_Instr_OrigLoadInst_spec_ld_a1 <= FETCH_Instr_OrigLoadInst_spec_ld_a0;
            always @(posedge clkP_FETCH_Instr_second_issue_ld_a2) FETCH_Instr_OrigLoadInst_spec_ld_a2 <= FETCH_Instr_OrigLoadInst_spec_ld_a1;



         //
         // Scope: /regs[31:1]
         //
         for (regs = 1; regs <= 31; regs=regs+1) begin : L1gen_FETCH_Instr_Regs
            // For $pending.
            always @(posedge clk) FETCH_Instr_Regs_pending_a3[regs] <= FETCH_Instr_Regs_pending_a2[regs];

         end

         //
         // Scope: /src[2:1]
         //
         for (src = 1; src <= 2; src=src+1) begin : L1gen_FETCH_Instr_Src
            // For $dummy.
            always @(posedge clk) L1c_FETCH_Instr_Src[src].L1_dummy_a2 <= L1c_FETCH_Instr_Src[src].L1_dummy_a1;
            always @(posedge clk) L1c_FETCH_Instr_Src[src].L1_dummy_a3 <= L1c_FETCH_Instr_Src[src].L1_dummy_a2;

            // For $is_reg.
            always @(posedge clkP_FETCH_Instr_valid_decode_a2) L1_FETCH_Instr_Src[src].L1_is_reg_a2 <= L1_FETCH_Instr_Src[src].L1_is_reg_a1;
            always @(posedge clkP_FETCH_Instr_valid_decode_a3) L1_FETCH_Instr_Src[src].L1_is_reg_a3 <= L1_FETCH_Instr_Src[src].L1_is_reg_a2;

            // For $is_reg_condition.
            always @(posedge clk) L1b_FETCH_Instr_Src[src].L1_is_reg_condition_a2 <= L1b_FETCH_Instr_Src[src].L1_is_reg_condition_a1;

            // For $reg.
            always @(posedge clkP_FETCH_Instr_valid_decode_a2) L1_FETCH_Instr_Src[src].L1_reg_a2[4:0] <= L1_FETCH_Instr_Src[src].L1_reg_a1[4:0];
            always @(posedge clkP_FETCH_Instr_valid_decode_a3) L1_FETCH_Instr_Src[src].L1_reg_a3[4:0] <= L1_FETCH_Instr_Src[src].L1_reg_a2[4:0];

            // For $reg_value.
            always @(posedge clkP_FETCH_Instr_Src_is_reg_condition_a2[src]) L1b_FETCH_Instr_Src[src].L1_reg_value_a2[31:0] <= L1b_FETCH_Instr_Src[src].L1_reg_value_a1[31:0];
            always @(posedge clkP_FETCH_Instr_Src_is_reg_condition_a3[src]) L1b_FETCH_Instr_Src[src].L1_reg_value_a3[31:0] <= L1b_FETCH_Instr_Src[src].L1_reg_value_a2[31:0];

         end



   //
   // Scope: |mem
   //


      //
      // Scope: /data
      //

         // For $addr.
         always @(posedge clk) MEM_Data_addr_a4[1:0] <= MEM_Data_addr_a3[1:0];

         // For $dest_reg.
         always @(posedge clk) MEM_Data_dest_reg_a4[4:0] <= MEM_Data_dest_reg_a3[4:0];

         // For $ld_st_half.
         always @(posedge clk) MEM_Data_ld_st_half_a4 <= MEM_Data_ld_st_half_a3;

         // For $ld_st_word.
         always @(posedge clk) MEM_Data_ld_st_word_a4 <= MEM_Data_ld_st_word_a3;

         // For $pc.
         always @(posedge clk) MEM_Data_pc_a4[31:2] <= MEM_Data_pc_a3[31:2];

         // For $raw_funct3.
         always @(posedge clk) MEM_Data_raw_funct3_a4[2] <= MEM_Data_raw_funct3_a3[2];

         // For $spec_ld.
         always @(posedge clk) MEM_Data_spec_ld_a4 <= MEM_Data_spec_ld_a3;

         // For $valid_ld.
         always @(posedge clk) MEM_Data_valid_ld_a4 <= MEM_Data_valid_ld_a3;


         //
         // Scope: /src[2:1]
         //
         for (src = 1; src <= 2; src=src+1) begin : L1gen_MEM_Data_Src
            // For $dummy.
            always @(posedge clk) L1_MEM_Data_Src[src].L1_dummy_a4 <= L1_MEM_Data_Src[src].L1_dummy_a3;

         end




endgenerate



//
// Gated clocks.
//

generate



   //
   // Scope: |fetch
   //


      //
      // Scope: /instr
      //

         clk_gate gen_clkF_FETCH_Instr_branch_or_reset_a3(clkF_FETCH_Instr_branch_or_reset_a3, clk, FETCH_Instr_branch_or_reset_a2, 1'b1, 1'b0);
         clk_gate gen_clkF_FETCH_Instr_branch_or_reset_a4(clkF_FETCH_Instr_branch_or_reset_a4, clk, FETCH_Instr_branch_or_reset_a3, 1'b1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_branch_a2(clkP_FETCH_Instr_branch_a2, clk, 1'b1, FETCH_Instr_branch_a1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_jump_a2(clkP_FETCH_Instr_jump_a2, clk, 1'b1, FETCH_Instr_jump_a1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_ld_st_cond_a3(clkP_FETCH_Instr_ld_st_cond_a3, clk, 1'b1, FETCH_Instr_ld_st_cond_a2, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_second_issue_a1(clkP_FETCH_Instr_second_issue_a1, clk, 1'b1, FETCH_Instr_second_issue_a0, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_second_issue_a2(clkP_FETCH_Instr_second_issue_a2, clk, 1'b1, FETCH_Instr_second_issue_a1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_second_issue_a3(clkP_FETCH_Instr_second_issue_a3, clk, 1'b1, FETCH_Instr_second_issue_a2, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_second_issue_ld_a1(clkP_FETCH_Instr_second_issue_ld_a1, clk, 1'b1, FETCH_Instr_second_issue_ld_a0, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_second_issue_ld_a2(clkP_FETCH_Instr_second_issue_ld_a2, clk, 1'b1, FETCH_Instr_second_issue_ld_a1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_st_cond_a3(clkP_FETCH_Instr_st_cond_a3, clk, 1'b1, FETCH_Instr_st_cond_a2, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_valid_decode_a2(clkP_FETCH_Instr_valid_decode_a2, clk, 1'b1, FETCH_Instr_valid_decode_a1, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_valid_decode_a3(clkP_FETCH_Instr_valid_decode_a3, clk, 1'b1, FETCH_Instr_valid_decode_a2, 1'b0);
         clk_gate gen_clkP_FETCH_Instr_valid_decode_branch_a2(clkP_FETCH_Instr_valid_decode_branch_a2, clk, 1'b1, FETCH_Instr_valid_decode_branch_a1, 1'b0);

         //
         // Scope: /src[2:1]
         //
         for (src = 1; src <= 2; src=src+1) begin : L1clk_FETCH_Instr_Src
            clk_gate gen_clkP_FETCH_Instr_Src_is_reg_condition_a2(clkP_FETCH_Instr_Src_is_reg_condition_a2[src], clk, 1'b1, L1b_FETCH_Instr_Src[src].L1_is_reg_condition_a1, 1'b0);
            clk_gate gen_clkP_FETCH_Instr_Src_is_reg_condition_a3(clkP_FETCH_Instr_Src_is_reg_condition_a3[src], clk, 1'b1, L1b_FETCH_Instr_Src[src].L1_is_reg_condition_a2, 1'b0);
         end




endgenerate



generate   // This is awkward, but we need to go into 'generate' context in the line that `includes the declarations file.
